如何让用户会话持续 24 小时?

Posted

技术标签:

【中文标题】如何让用户会话持续 24 小时?【英文标题】:How to make user session go on for 24 hours? 【发布时间】:2011-09-19 19:23:23 【问题描述】:

我弄乱了我的 apache 和 php.ini 文件,我网站的用户仍然抱怨网站在很短的时间后或每次他们关闭并打开同一个浏览器时将他们注销。

我正在运行 Apache 和 PHP。

我应该进行哪些设置才能使用户会话持续 24 小时,这样他们就不必每次都重新登录?

谢谢, 亚历克斯

【问题讨论】:

【参考方案1】:

在 php.ini 中,设置:

; 24 hour session cookie
session.cookie_lifetime = 86400

; Prevent server from cleaning up session
; Some value higher than the cookie lifetime
session.gc_maxlifetime = 200000 

【讨论】:

谢谢,顺便说一下,更改值后,我必须重新启动apache服务器吗? @Genadinik 是的,您需要重新启动 Apache。【参考方案2】:

奇怪。会话应该保持相当长的时间。 尝试检查您的代码是否有任何意外的 session_destroy()s。

如果这不起作用,那么可以尝试使用 cookie:

setcookie(name, value, expire); 

因此,要在 PHP 中设置 cookie 变量,您可以简单地使用

<?php
    setcookie("MyCookie", "MyValue", time()+60*60*24); 
?>

过期值以秒为单位。使用上面的代码,您将能够设置一个名为“MyCookie”的 cookie,其值为“MyValue”并持续 24 小时。

要检索此 cookie 的值,您可以使用

<?php
    print($_COOKIE['MyValue']);
?>

请注意,必须在调用标记之前设置 cookie。

如果 cookie 也不起作用,那么可能是您的 php.ini 有问题 如果 cookie 不起作用,您可以发布您的 php.ini 吗?

希望这会有所帮助!

【讨论】:

我可能弄错了,但我没有在我的代码中明确设置 cookie。我只是用用户信息设置会话变量。我是否还应该设置 cookie 来跟踪用户的会话? 不,不要那样做。您应该使用会话或 cookie,而不是同时使用两者。否则,它会变得混乱。

以上是关于如何让用户会话持续 24 小时?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 PHP 会话在浏览器关闭或一段时间后过期

会话token的最大有效期

创建一个具有唯一 ID 1 小时的会话 - PHP

PHP 会话在 40 分钟后到期

当用户离线时,Firebase 身份验证会话会持续多长时间?

Node + Express 会话过期?