PHP:如何在cookie中存储会话

时间:2015-06-26 08:06:09

标签: php session cookies session-variables session-cookies

我是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

非常感谢, 麦克

1 个答案:

答案 0 :(得分:9)

事实上,php会将会话存储在cookie中 - 一个cookie,通常称为PHPSESSID。这对应于服务器上的文件(其文件名是PHPSESSID cookie的值),该文件是一组键/值对,例如您在上面概述的那些。

如果用户启用了Cookie,会话就可以正常运行。要确保的主要内容是每个响应都使用session_start();否则您将无法访问$_SESSION中的值。

如果您希望在浏览器关闭后此会话Cookie保持不变,则需要使用session_set_cookie_params()之前调用的session_start()documentation here)。

我绝对建议不要采用'永恒'会话的方法,只是从可扩展性的角度来看 - 记住每个会话对应一个服务器上的文件,这些文件可能会在一段时间后建立(特别是如果你是高流量网站)。

有一种方法涉及在用户的浏览器上存储单独的cookie,其中包含您的网站可以在$_COOKIE内查找的登录信息,启用“自动登录”过程,您可以浏览该过程。我不确定这是最安全的方法。

希望有所帮助。