3

これを機能させることができないことに、私は真剣に不満を感じています。私はこれに対していくつかの異なるアプローチを試みましたが、これを読んだすべての例とコードから、これは機能する必要がありますが、機能していません。

2012-10-19 19:24:04.533 192.168.1.62 "-" "WEBMATRIX" "-" 192.168.1.62 POST /Actions/NewTicket.php - 500 0 6149 688 45 -11640 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4" "QCUserID=1" "http://192.168.1.62:53896/NewTicketPage.html" "-" "192.168.1.62:53896" 0

WebMatrix/Actions/login.php <-これは機能します。Chrome の Cookie で確認できます。ログエラーにあるようです。

<?php 
//set vars
require_once(__DIR__ . "/GlobalCookies.php");

GC_ClearCookie("QCUserID");
$user = $_POST['username'];
$pass = $_POST['password'];

require_once(__DIR__ . "/db.php");

$query = sprintf("SELECT * FROM users WHERE UserInitials='%s' AND UserPassword='%s'", mysql_real_escape_string($user),mysql_real_escape_string($pass));
$result = mysql_query($query);
$rows = mysql_num_rows($result);

if($rows!=0)
{
    $row = mysql_fetch_row($result);
    GC_SetCookie("QCUserID", $row[0]);
    header("refresh:0;url=../DashboardPage.php");
}
else
{
    echo("User Not Found, redirecting to login page in 3 seconds");
    header("refresh:3;url=../index.php");
}

?>

WebMatrix/Actions/GlobalCookies.php <- ファイルの最後に ?> がないのは奇妙です.. 関数ファイルの実行方法を調べていませんでした。Mantisbt からその一部をコピーしただけです。しかし、それを持っていてlogin.phpで使用しようとすると、エラー500がスローされます

<?php
function GC_GetCookie( $p_var_name, $p_default = null )
{
    if( isset( $_COOKIE[$p_var_name] ) )
    {
        $t_result = gpc_strip_slashes( $_COOKIE[$p_var_name] );
    }
    else if( func_num_args() > 1 )
    {
        //check for a default passed in (allowing null)
        $t_result = $p_default;
    }
    else
    {
        error_parameters( $p_var_name );
        trigger_error( ERROR_GPC_VAR_NOT_FOUND, ERROR );
    }

    return $t_result;
}
function GC_SetCookie($p_name, $p_value, $p_httponly = true)
{
    return setcookie( $p_name, $p_value, 36000, "/");
}
function GC_ClearCookie($p_name)
{
    return setcookie( $p_name, '', -1, "/" );
}

WebMatrix/Actions/NewTicket.php <- これは失敗します

<?php
error_reporting(-1);

require_once(__DIR__ . "/db.php");
require_once(__DIR__ . "/GlobalCookies.php");

$serial = $_POST['serialNumber'];
$model = $_POST['modelNumber'];
$company = $_POST['companyName'];
$special = $_POST['specialNote'];
$userID = GC_GetCookie("QCUserID",1); //Error 500 here
echo($userID."<br>");
?>

これはとても簡単なことのように思えますが、私は数日間試してきました..Googleで検索しても何も見つかりません. お時間をいただきありがとうございます....くすくす笑いのために、別のコンピューターのIEで試してみましたが、動作します....奇妙です。

4

1 に答える 1

1

Cookie を設定するには、次のように変更してみてください。

setcookie( $p_name, $p_value, 36000, "/");

に:

setcookie( $p_name, $p_value, time() + 36000, "/");

その理由は、有効期限パラメーターが Unix タイムスタンプであるため、有効期限が切れるまでの秒数に現在の時刻を追加する必要があるためです。

この Cookie は、ユーザーがログインしているかどうかを識別するためだけに使用していますか? その場合、別のユーザーとしてログインするために必要なことは、適切な名前で Cookie を作成し、その場合はランダムなユーザー ID を選択することだけです。

于 2012-10-19T20:25:08.840 に答える