See the php.ini
value session.cookie_lifetime http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime.
默认值为0
意味着当浏览器关闭时结束会话。
您可以直接覆盖该值php.ini
或者在开始会话之前在您的应用程序中设置它ini_set http://php.net/ini_set。将其设置为大于0
将导致会话持续该持续时间。
E.g.
ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7); // 7 day cookie lifetime
session_start();
上面的示例导致会话 cookie 设置为自会话启动后 7 天到期。
Note:如果您从同一段代码为所有网页启动会话,则每次都不会继续延长会话过期时间session_start()
被叫。 cookie 的生存期是从会话首次启动时开始设置的,而不是在后续请求时设置。如果您想将会话的生命周期从当前时间延长 7 天,另请参阅session_regenerate_id() http://www.php.net/manual/en/function.session-regenerate-id.php.
另请注意:如果你的会话.gc_maxlifetime http://www.php.net/manual/en/session.configuration.php#ini.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();