我在10年内没有做过饼干。我有一个简单的php登录脚本,它根据MySQL数据库中的值检查用户名和密码。如果成功,我创建我设置一个cookie ...尝试,无论如何。
我可以让setcookie()返回true,但cookie没有设置。我发现大部分时间都是b / c标头已发送。编辑:headers_sent()返回false,因此不是问题。
会话代码(不要与PHP会话()混淆):
function create_session( &$user_id, &$ip, &$proxy_ip )
{
global $mysqli_auc;
$hash = md5( $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] );
$query = "INSERT INTO user_sessions(user_id,ip,proxy_ip,session_hash)
VALUES('$user_id','$ip','$proxy_ip','$hash')";
$result = $mysqli_auc->query( $query );
$already_sent = "false";
if ( headers_sent() ) {
$already_sent = "true";
}
// print "This definitely sends headers";
if ( !setcookie( "my_hash",$hash,time()+2000 ) ) {
print "Unable to set cookie.<br>";
} else {
print "Set cookie. " . $_COOKIE['my_hash'] . "<br>"; // blank
print "Should be " . $hash . "<br>"; // this holds an md5 hash string
print "Headers sent " . $already_sent "<br>"; // false
}
}
答案 0 :(得分:0)
$_COOKIE
superglobal仅保存客户端在请求的Cookie:
标头中发送的cookie。
setcookie()
不会更改它,它只会设置将在响应的Set-Cookie:
标题中发送的内容。