gpt4 book ai didi

php - 为什么我的 cookie 会立即过期?

转载 作者:可可西里 更新时间:2023-11-01 00:56:22 25 4
gpt4 key购买 nike

我有一个设置cookies的函数;在此函数中,我使用 PHP 的 setcookie 函数来设置 cookie,例如:

setcookie('auth', $token, time() + 3600);

我在setcookie中使用的函数如下:

function SetAuthenticationCookie($id, $rememberme) {
$token = md5(uniqid(mt_rand(), true));
executeNonUserQuery([db query]);
if ($rememberme) {
setcookie('auth', $token, time() + (86400 * 90));
setcookie('profid', $id, time() + (86400 * 90));
}
else
{
setcookie('auth', $token, time() + 3600);
setcookie('profid', $id, time() + 3600);
}
}

上面的 cookie 应该在一小时内有效,并以这种方式出现在浏览器中(见下面的屏幕截图)。

在浏览器中,cookie 在重定向之前显示(页面是动态的),因此设置了 cookie 。但是,当页面重定向时它们会消失。这会导致出现问题,因为主 UI 页面(登录页面重定向的地方)会检查身份验证 cookie 是否存在,如果不存在则重定向回登录页面。

enter image description here

我关注了 official documentation for setcookie并且看不出问题是什么。 Chrome 报告 cookie 路径是 /internal 因此实际页面可能无法访问它们(页面路径是 /pages),但这仍然没有不解释为什么它们会从 Chrome 中完全消失。

cookie 设置为在设置后一小时内过期,但这并不能解释 cookie 的消失,除非我在 setcookie 中遗漏了一些关于过期设置的重要内容时间。我在其他浏览器中遇到了同样的问题,所以这一定是我做错了或错过了什么。

我确认我没有任何东西可以取消设置或使 cookie 过期(我还没有实现)。我已尝试将路径设置为 / 但这并不能解决问题。

我做错了什么,我该如何解决?

我知道这里的安全问题,我的首要任务是首先解决这个问题。

最佳答案

这个问题是由两个因素造成的:

  • cookie 路径
  • PHP 的时区

如问题中所述,我已经尝试将 cookie 路径设置为 / 但没有效果。但是我没有考虑设置为 UTC 的 PHP 时区。

将时区设置为正确的 Europe/Guernsey 并将 cookie 路径设置为 / (root) 解决了这个问题。

关于php - 为什么我的 cookie 会立即过期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41782251/

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