PHP:会话的默认生存期是多少

时间:2020-03-06 14:58:00  来源:igfitidea点击:

如果我点击了一个调用" session_start()"的页面。我需要等待多长时间,以便刷新页面时获得新的会话ID?

解决方案

检出php.ini,为session.gc_maxlifetime设置的值是ID生存时间(以秒为单位)。

我相信默认值为1440秒(24分钟)

http://www.php.net/manual/zh/session.configuration.php

编辑:正如一些评论所指出的,上述内容并不完全正确。有关为什么以及如何实现会话生存期的精彩说明可在此处找到:

30分钟后如何终止PHP会话?

这取决于php设置...
使用phpinfo()并查看会话一章。有诸如session.gc_maxlifetime,session.cache_expire和session.cookie_lifetime之类的值,它们会影响会话的生存期

编辑:
就像马丁以前写的

php.ini中的session.gc_maxlifetime指令的默认值(" gc"用于垃圾回收)为1440秒或者24分钟。请参阅手册中的"会话运行时配置"页面:

http://www.php.net/manual/zh/session.configuration.php

如果可以访问,可以在php.ini或者.httpd.conf文件中更改此常数,也可以在网站上的本地.htaccess文件中更改此常数。若要使用.htaccess方法将超时设置为一小时,请将此行添加到网站的根目录中的.htaccess文件中:

php_value session.gc_maxlifetime "3600"

如果我们在共享主机上,或者在多个未更改默认站点的站点上进行托管,请当心。默认的会话位置是/ tmp目录,垃圾收集例程将针对其他站点每24分钟运行一次(并在此过程中清除会话,而不管它们应保留多长时间)。请参阅手册页或者本网站上的注释以获取更好的解释。

答案是使用session.save_path将会话移到另一个目录。这也有助于防止坏人从默认的/ tmp目录中劫持访问者的会话。