【问题标题】:PHP setcookie function not saving cookies?PHP setcookie函数不保存cookies?
【发布时间】:2013-07-16 17:05:53
【问题描述】:

我希望有人能够帮助解决我正在处理的一些代码的这个小问题。请记住,这只是一个爱好网站,我知道存在安全漏洞。 我编写了一个名为 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);
          }
      }
    ?>

【问题讨论】:

    标签: php cookies login


    【解决方案1】:

    您的 cookie 在 1971 年的某个时间过期!看起来你想在未来一年抵消,所以试试

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

    第三个参数不是从“现在”开始的偏移量,它是从Unix epoch 开始的偏移量 - rather fine manuals 一定要明确这一点:)

    【讨论】:

    • 嗯...我有一种感觉,我忽略了一些简单的事情!我以前使用过 cookie,并且今天必须重新阅读这些文档大约 3 次。哦,好吧,我猜有时你需要别人指出一些事情,哈哈!谢谢!
    【解决方案2】:

    setcookie(name, $value, $expire);

    根据手册:您需要将过期时间添加到 time()

    cookie 过期的时间。这是一个 Unix 时间戳,所以是数字 自纪元以来的秒数。换句话说,你很可能会设置 这与 time() 函数加上你之前的秒数 想让它过期。或者你可以使用 mktime()。 time()+60*60*24*30 会 将 cookie 设置为 30 天后过期。如果设置为 0 或省略,则 cookie 将在会话结束时过期(当浏览器 关闭)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-21
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多