更改PHPSESSID Cookie的过期时间

7

我已经尝试了一整天,但似乎什么都不起作用。

我的目标是:在特定的复选框被选中时更改会话cookie PHPSESSID的到期时间,我该怎么做?

我尝试过:

ini_set()

session_set_cookie_params()

setcookie()

但没有任何作用。请问有人可以帮助我吗?

谢谢

1个回答

17
为了指定会话的生命周期,服务器端可以执行以下命令:
  ini_set('session.gc_maxlifetime', 30*60); // expires in 30 minutes
或者在您的php.ini文件中设置它。 为了设置会话cookie的生存时间,在客户端上,要么让它保持原样(0,当浏览器关闭时将过期),要么
  ini_set('session.cookie_lifetime', 30*60); // 30 minutes

如果您选择使用ini_set(),请确保在调用session_start()之前放置命令。

请注意,ini_set函数仅在脚本执行期间设置配置选项。

关于复选框和动态设置会话生存时间,您可以:

  • 使用APC存储一个由所有PHP进程共享的设置,该设置将持续到PHP服务器关闭
  • 将值写入某个文件中,在脚本启动时加载该值(昂贵),然后设置该值

(每个脚本都必须在调用session_start()之前进行一次ini_set())


谢谢,我现在明白问题是ini_set需要在session_start()之前。但我无法弄清如何更改现有的phpsessid cookie值。 - gyaani_guy
是的,这对我很有帮助。对于我的ajax调用,我需要一种方法来检测会话是否过期。请注意,在测试之前,您需要删除错误到期日期的cookie。 - Guillaume Bois

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接