PHP setcookie功能不保存cookie?

Hoc*_*f45 2 php cookies login

我希望有人能够帮助解决我正在处理的一些代码这个小问题.请记住,这只是一个业余爱好网站,我知道有安全漏洞.我编写了一个名为set_remember_cookies的函数,当用户检查"记住我"框时,从我的登录脚本和注册页面调用该函数.

然后,每个受保护页面上的函数执行以下操作:

  1. 检查是否设置了记住cookie
  2. 查询数据库以查找与cookie中的哈希用户名关联的User_ID
  3. 从用户表中获取该User_ID的密码
  4. 从remember_cookies表中获取salt
  5. 哈希密码+ salt并将其与cookie中的哈希密码进行匹配

再一次,我知道在cookie中存储一个哈希密码是不安全的,但我现在并不担心.

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

任何人都可以向我解释为什么这个功能没有设置cookie?我找不到任何错误,但希望有人可以!谢谢!

    <?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);
          }
      }
    ?>
Run Code Online (Sandbox Code Playgroud)

Pau*_*xon 6

您的Cookie在1971年的某个时候到期!看起来你想要在未来一年抵消,所以试试吧

 setcookie("Username", $username_hash, time() + 60*60*24*365);
Run Code Online (Sandbox Code Playgroud)

第三个参数不是'now'的偏移量,它是从Unix时代开始的偏移量- 相当精细的手册确实清楚了:)