我越来越感到沮丧,因为我无法让它发挥作用。我已经尝试了几种不同的方法,从我读过的所有示例和代码中,它应该正常工作,但事实并非如此。
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&lt; - 奇怪的是它没有得到?&gt;在文件的末尾..我没有查找如何做一个函数文件,我只是从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&lt; - 此失败
<?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上尝试使用另一台计算机,它的工作原理......很奇怪。
答案 0 :(得分:1)
要设置Cookie,请尝试更改:
setcookie( $p_name, $p_value, 36000, "/");
为:
setcookie( $p_name, $p_value, time() + 36000, "/");
原因是因为expiration参数是一个Unix时间戳,所以你必须将当前时间添加到你希望它到期的数秒内。
您是否仅仅为了识别用户是否已登录而使用此cookie?如果是这样,我需要做的就是以不同的用户身份登录,创建一个具有相应名称的cookie,如果是这种情况,则选择一个随机用户ID。