我已经有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
}
}发布于 2015-04-05 00:07:40
$_COOKIE superglobal仅在请求的Cookie:标头中保存客户端发送的cookies。setcookie()不会更改它,它只设置将在响应的Set-Cookie:头中发送的内容。
顺便说一句,你使用的会话标识符是非常不安全的。它不仅不能保证是唯一的,而且很容易预测/欺骗。
https://stackoverflow.com/questions/29448211
复制相似问题