sco*_*art 8 php session duration login
我正在为一个与我合作的小型(读取:<50个用户)非营利组织工作,我的PHP知识相当有限.目前我有一个登录脚本,我从在线教程中找到.我遇到的问题是每个用户在大约一个小时左右后就会注销.
安全性确实不是内容的问题,理想情况下我希望有人保持登录数天或数周.但是,任何关于会话长度的谷歌搜索都会让我想要缩短退出计时器的人.
就代码而言,一旦登录页面将用户名和密码与数据库进行比较,则遵循:
session_register("myusername");
session_register("mypassword");
header("location:index.php")
Run Code Online (Sandbox Code Playgroud)
在每个受保护的页面上,它以:
session_start();
if(!session_is_registered(myusername)){
header("location:login.html:);
}
Run Code Online (Sandbox Code Playgroud)
编辑.htaccess并输入如下内容:
php_value session.gc_maxlifetime 2000
Run Code Online (Sandbox Code Playgroud)
2000秒就是秒.相应地设定!这将告诉会话垃圾收集器不要销毁2000秒的会话.此外,不推荐使用session_register.
鉴于您的问题和用户群的规模,我选择全局设置更改而不是尝试自定义会话变量; 它很简单,可以满足您的需求,并且只需要很少的努力就可以应用于所有用户.
您可以使用.htaccess文件设置全局会话生存期(如其他答案中所述):
php_value session.gc_maxlifetime 86400 //this is one day in seconds
Run Code Online (Sandbox Code Playgroud)
或者,您也可以在php.ini文件中设置它 - 其片段是:
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 86400
Run Code Online (Sandbox Code Playgroud)
除了纯粹的参考,你需要考虑长期垃圾收集的价值:
86400 = one day
604800 = one week
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关垃圾收集(gc)的更多信息.
如果您正在使用 PHP 的默认基于 cookie 的会话管理(我相信您是这样,因为您没有提到任何有关更改默认会话工作方式的内容),您可以使用:
session_set_cookie_params(7200); // in seconds...session will last for 2 hours now
session_start(); //once session cookie parameter is set, start the session..
Run Code Online (Sandbox Code Playgroud)
session.gc*ini 值组也用于此目的,但请记住,gc仅建议何时应该对会话进行垃圾收集,并不真正意味着它会在那时发生。
您可以在此处阅读有关cookie 参数的信息,并在此处了解垃圾收集的信息