我正在使用PHP创建登录/注销系统,客户可以决定是否使用“记住我”按钮。 在我的login.php文件中,我检查他们是否想要记住这样:
if(isset($_POST["remember_me"])){
$_SESSION["remember_me"] = true;
}
因此,当我想设置gc_maxlifetime时,我需要知道客户端应该被记住。但是我们知道,应该在session_start()之前设置gc_maxlifetime并且我无法访问
$_SESSION["remember_me"]
变量。我该怎么办? 有没有其他方法可以告诉服务器,因为某个会话应该是垃圾收集器的主题?
提前感谢。
答案 0 :(得分:1)
我不认为使用会话进行持久登录是一个好主意。一个是因为不同的会话有不同的gc_maxlifetime
不会工作。正如the manual州
如果不同的脚本具有不同的session.gc_maxlifetime值,但共享相同的位置来存储会话数据,则具有最小值的脚本将清除数据。在这种情况下,请将此指令与session.save_path一起使用。
因此,除非您还想更改会话存储位置,否则不要去那里。
除了这个问题,您不仅要在服务器上保留他的登录信息,还要保持整个会话。如果您的应用程序在会话中存储了更多数据而您没有正确清理它,那么您的服务器最终将会有一个永远不会再次使用的持久会话。尽管在会话中存储大量数据仍然是错误的,但这是另一种讨论。
为了创建一个记住我的函数,我会在stackexchange上检查how-to-securely-implement-a-remember-me-feature以获取一些指示。