我是PHP新手,目前正在努力解决以下问题:
我有一个登录页面,我在下面开始会话,目前效果很好。
session_start();
// ...
$_SESSION["Customer"]["username"] = $username;
$_SESSION["Customer"]["email"] = $email;
现在我以前从未使用过会话,但假设一旦用户关闭浏览器就死了,我想让他们保持登录状态,以便他们无论何时重新进入页面都不必这样做。 我的想法是使用cookie,但我不确定如何将我的会话存储在cookie中。
我对此进行了一些研究并发现了以下内容,但我不确定这是否是正确的方法以及如何将其用于我需要的内容。
有人可以帮我这个吗?
session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] );
在我的情况下,{p> lifetime
将是无限期的,只要有可能,
path
可能只是“/”,secure
将是真实的
我不需要httponly
。
非常感谢, 麦克
答案 0 :(得分:9)
事实上,php会将会话存储在cookie中 - 一个cookie,通常称为PHPSESSID
。这对应于服务器上的文件(其文件名是PHPSESSID
cookie的值),该文件是一组键/值对,例如您在上面概述的那些。
如果用户启用了Cookie,会话就可以正常运行。要确保的主要内容是每个响应都使用session_start()
;否则您将无法访问$_SESSION
中的值。
如果您希望在浏览器关闭后此会话Cookie保持不变,则需要使用session_set_cookie_params()
之前调用的session_start()
(documentation here)。
我绝对建议不要采用'永恒'会话的方法,只是从可扩展性的角度来看 - 记住每个会话对应一个服务器上的文件,这些文件可能会在一段时间后建立(特别是如果你是高流量网站)。
有一种方法涉及在用户的浏览器上存储单独的cookie,其中包含您的网站可以在$_COOKIE
内查找的登录信息,启用“自动登录”过程,您可以浏览该过程。我不确定这是最安全的方法。
希望有所帮助。