Joh*_*man 28 php session-cookies
我曾经session_start()在PHP中启动会话,但是当我的浏览器关闭时,会话就消失了.
如何使用PHP创建持续浏览器关闭的持久会话?
dre*_*010 56
查看php.ini值session.cookie_lifetime.
默认值0表示在浏览器关闭时结束会话.
您可以在php.ini使用ini_set启动会话之前直接在应用程序中覆盖此值或在应用程序中设置它.将其设置为大于0该值会使会话在该持续时间内生效.
例如
ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7); // 7 day cookie lifetime
session_start();
Run Code Online (Sandbox Code Playgroud)
上面的示例导致会话cookie设置为从会话启动后的7天到期.
注意:如果您从同一段代码开始所有网页的会话,则每次session_start()调用时都不会继续延长会话到期时间.Cookie生存期是从首次启动会话时设置的,而不是在后续请求中设置的.如果要将会话的生命周期从当前时间延长7天,请参阅session_regenerate_id().
另请注意:如果您的session.gc_maxlifetime值设置为小于会话cookie的长度,您可能会遇到用户未访问该网站5天的情况,并且当他们返回时,会话cookie不再有效因为服务器上的数据已被删除.要解决此问题,您还应将此会话数据的生命周期设置为至少与Cookie生存期一样长.如手册所述,可能需要使用自定义session.save_path的会话数据,您希望其持久时间超过默认值.因此,您的脚本可能如下所示:
ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7);
ini_set('session.gc_maxlifetime', 60 * 60 * 24 * 7);
ini_set('session.save_path', '/home/yoursite/sessions');
session_start();
Run Code Online (Sandbox Code Playgroud)