【问题标题】:Why does the cookie expire?为什么 cookie 会过期?
【发布时间】:2017-05-11 03:41:10
【问题描述】:

在我的网站上,我在用户登录时设置了一些 cookie,这样我就可以记住它们,这样他们就不必每次重新访问该网站时都登录。

我使用以下代码在 php 中设置 cookie:

setcookie("last_login", $loginID, time() + (86400 * 30), "/"); // 86400 = 1 day

在我的 php.ini 中,我什至得到了这个设置:

session.cookie_lifetime = 2592000

但是即使当我关闭浏览器并重新打开网站时,cookie 也无法在我的 php 代码中工作,并且它们无法登录,但更奇怪的是。然后,当我尝试使用以下方式回显 cookie 时:

echo $_COOKIE["last_login"];

一开始它不会显示,但有时在重新加载几次后它会随机开始与 cookie 一起工作,然后它会回显它并登录...?

那么我怎样才能让 cookie 在接下来的 30 天内始终正常工作而不会变得奇怪?

【问题讨论】:

    标签: php cookies


    【解决方案1】:

    有时浏览器会在关闭 cookie 时清除它们。您可以检查几件事以确保:

    • 这是仅在一个浏览器中发生还是在您可以使用的所有浏览器中发生?
    • 您系统上的时间是否正确?
    • setcookie 是否返回TRUE?检查它:var_dump(setcookie("last_login", $loginID, time() + (86400 * 30), "/"));
    • 是否加载了正确的 php.ini?检查phpinfo() 以查看您更改的设置是否可见。

    编辑:

    回答关于域的后续问题(见评论):是的,你可以。

    setcookie("last_login", $loginID, time() + (86400 * 30), "/", "domain.com");
    

    【讨论】:

    • 我知道它的beeing set,因为一开始当我进入网站时它们不起作用。但是当我在我的文件中编辑以回显 cookie 时,它​​有时会在不工作后再次开始工作,而当这种情况发生时我没有再次设置它们......?
    • 如果您还没有,请尝试我的建议以更确定您的情况。
    • 没关系,这是因为我有时使用 www.domain.com,有时使用 domain.com,有没有办法在 www.domain.com 上同时为两者设置 cookie?
    猜你喜欢
    • 2012-10-02
    • 1970-01-01
    • 2017-06-06
    • 2011-05-07
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    相关资源
    最近更新 更多