【问题标题】:PHP Sessions & Cookies Getting Deleted?PHP 会话和 Cookie 被删除?
【发布时间】:2012-05-22 11:24:09
【问题描述】:

在 Chrome 和 Firefox 上,这会持续大约一个小时,然后会话 cookie 和其他由 javascript 设置的 cookie 消失。我什至没有关闭浏览器。

session_set_cookie_params(946080000); // 30 years
session_start();
$_SESSION['login']=true;

走了。会话 cookie 消失了。我认为它不是浏览器的东西,因为它在 Chrome 和 Firefox 上都消失了。我没有在 IE 上测试。

这是正常行为吗...我确定它没有被取消设置。

抱歉,我知道我没有提供太多信息,但那是因为没有太多信息可以提供。它应该工作,但它没有。

【问题讨论】:

    标签: php cookies


    【解决方案1】:

    我认为您做错了,如果可能,请更改 php.ini 以反映您要应用的 coockie 持续时间。阅读php.net手册:

    "设置php.ini文件中定义的cookie参数。这样的效果 函数仅持续脚本的持续时间。因此,您需要 为每个请求和之前调用 session_set_cookie_params() session_start() 被调用。

    该函数更新对应 PHP 的运行时 ini 值 可以使用 ini_get() 检索的 ini 配置键。"

    这意味着在执行 session_start() 之前,您需要在所有 php 文件中每次都调用它。可能有解决办法的博文:http://blog.centresource.com/2006/05/23/php-session-lifetime-an-adventure/

    要更改 PHP ini 中的值,请使用以下行:

    php_value session.gc_maxlifetime "946080000"
    

    无论如何,最好使用 cookie,会话不会长期使用,而是使用 cookie。

    【讨论】:

    • 那里也有一个cookie,它也神秘地消失了,也设置为20或30年。我确实确保session_set_cookie_params 在每个session_start 之前。我宁愿不更改所有网站的到期时间,因为在某些网站上我不想要这么长的会话。
    • @Alasdair 在session_start() 之后尝试setcookie(session_name(),session_id(),time()+$lifetime); 并删除session_set_cookie_params(946080000); 我认为问题不在服务器上。只是 cookie 过期。
    • @PLB,谢谢,虽然我可以在 Chrome 中看到使用 session_set_cookie_params 将 cookie 设置为 30 年。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2013-09-12
    • 2010-12-18
    相关资源
    最近更新 更多