gpt4 book ai didi

PHP setcookie 函数不保存 cookie?

转载 作者:行者123 更新时间:2023-12-02 07:34:54 27 4
gpt4 key购买 nike

我希望有人可以帮助解决我在处理某些代码时遇到的这个小问题。请记住,这只是一个业余爱好网站,我知道存在安全漏洞。我编写了一个名为 set_remember_cookies 的函数,当用户选中“记住我”框时,它会从我的登录脚本和注册页面调用。

每个安全页面上的函数然后执行以下操作:

  1. 检查是否设置了内存 cookie
  2. 查询数据库以查找与 cookie 中经过哈希处理的用户名关联的 User_ID
  3. 从用户表中获取该 User_ID 的密码
  4. 从 remember_cookies 表中获取盐
  5. 散列密码 + salt 并将其与 cookie 中的散列密码相匹配

再说一次,我知道即使在 cookie 中存储哈希密码也是不安全的,但我现在并不担心。

我的问题是我在下面包含的 set_remember_cookies 函数实际上并没有设置 cookie。在安全页面上,第一步(检查 cookie 是否存在)失败。我还检查了浏览器中的 cookie,但没有存储它们。

谁能给我解释一下为什么这个函数没有设置 cookies?我找不到任何错误,但希望有人可以!谢谢!

    <?php
function set_remember_cookies($uid, $identifier, $password) {
mysql_query("DELETE FROM remember_cookies WHERE User_ID = '$uid'"); //Delete old cookie records
$salt = sha1(uniqid(time() . $_SERVER['HTTP_REFERER']));
$username_hash = hash("sha256", $identifier . $salt); //Hash the username
if (mysql_query("INSERT INTO remember_cookies (User_ID, Username_Hash, Salt) VALUES ('$uid', '$username_hash', '$salt')")) {
setcookie("Username", $username_hash, 60*60*24*365);
setcookie("Password", hash("sha512", $password . $salt), 60*60*24*365);
}
}
?>

最佳答案

您的 cookie 在 1971 年的某个时候过期了!看起来你想要一年后的补偿,所以试试

 setcookie("Username", $username_hash, time() + 60*60*24*365);

第三个参数不是从'now'开始的偏移量,它是从Unix epoch开始的偏移量- rather fine manuals一定要说清楚:)

关于PHP setcookie 函数不保存 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711754/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com