我使用包含在每个页面中的单个配置文件来控制用户会话。我的网站上有登录/注销选项。
我想将用户的会话销毁超时延长到1年(即使用户关闭浏览器,除非用户登录页面,否则会话应该仍在那里)。
我用它来扩展用户会话超时值,
<?php
session_set_cookie_params(31556952);
ini_set('session.gc_maxlifetime',31556952);
session_start();
//my Other code like DB connections will come below.
?>
并在 PHP.ini
中我已将session.gc_maxlifetime
设为31556952
但是这并没有影响任何事情,用户会话在120秒时被完全摧毁。
我提到了所有与stackoverflow相关的问题,但我没有得到任何线索。
会出现什么问题?任何建议。
答案 0 :(得分:0)
我可以想到一些事情,但它可能是由许多事情引起的。您已经验证了ini文件以确保一切正常。之前我遇到过这样的问题,原来我在服务器上安装了2个版本的PHP。我正在修改错误的ini文件。确保您使用的php版本是属于您正在使用的ini的版本。
有时在php文件中执行ini集对我来说不起作用。永远不明白为什么发生这种情况时,将记录添加到htaccess文件以确保apache正在接收它们。 session timeout in php code and in htaccess?
最后要找到的东西有点棘手。尝试100%确定你不会破坏某个地方的会话。这是一个很难的120秒这似乎是服务器的事实,但确保你不会在120秒后用ajax调用一些脚本,并且由于某种原因,这个脚本会杀死会话。
答案 1 :(得分:0)
有几件事可能让你烦恼
session.gc_maxlifetime
的不同值,并且两个脚本共享会话数据的相同保存空间,则以较低的值为准。如果这是您的情况,则应将会话保存在自定义位置,以便任何脚本设置较低的生命周期将不再与此脚本冲突。你可以致电ini_set('session.savepath',NEWPATH)
来做到这一点。有关详细信息,请see the docs。session.gc_maxlifetime
无效。您最好的选择是在php.ini
文件中更改它。这是reported here。鉴于您希望会话持续数月,我可能会依赖数据库来存储登录cookie。
答案 2 :(得分:-2)
我需要设置会话时间以及具有相同持续时间的set-cookie。