我曾经用session_start()PHP启动会话,但是当我的浏览器关闭时,该会话消失了。
session_start()
如何使用PHP创建持续持续浏览器关闭的持久会话?
请参阅php.ini值session.cookie_lifetime。
php.ini
默认值0意味着在浏览器关闭时结束会话。
0
您可以php.ini使用ini_set在开始会话之前直接在应用程序中覆盖此值或在应用程序中设置它。将其设置为大于此值0将导致会话在该持续时间内存活。
例如
ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7); // 7 day cookie lifetime session_start();
上面的示例使会话cookie的设置从会话开始起的7天到期。
注意: 如果您从同一段代码开始所有网页的会话,则每次session_start()调用该会话都不会继续延长会话的有效期。cookie生存期是从第一次启动会话时开始设置的,而不是在后续请求时开始设置。如果要将会话的生存期从当前时间延长7天,请参见session_regenerate_id()。
另请注意: 如果您将session.gc_maxlifetime值设置为小于会话cookie长度的值,则可能会出现以下情况:用户5天未访问该站点,并且当他们返回时,会话cookie不再有效因为服务器上的数据已被删除。为了解决这个问题,您还应该将此会话数据的生存期设置为至少与cookie生存期一样长。如手册所述,可能需要对自定义session.save_path会话数据使用自定义项的时间长于默认值。因此,您的脚本可能如下所示:
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();