PHP: 如何在cookie中存储session
PHP: How to store session in cookie
我是 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 ]]]] );
lifetime
在我的例子中是无限期的,所以尽可能长,
path
可能只是 "/",
secure
为真
而且我不需要 httponly
。
非常感谢,
麦克
事实上,php 确实将会话存储在 cookie 中 - 单个 cookie,通常称为 PHPSESSID
。这对应于服务器上的一个文件(其文件名是 PHPSESSID
cookie 的值),它是一组 key/value 对,例如您在上面概述的那些。
只要用户启用了 cookie,会话就可以正常工作。要确保的主要事情是每个响应都使用 session_start()
;否则您将无法访问 $_SESSION
内的值。
如果您希望此会话 cookie 在浏览器关闭后仍然存在,您需要使用 session_set_cookie_params()
(documentation here),您将在 session_start()
之前调用它。
我绝对不建议 'eternal' 会话的方法,只是从可伸缩性的角度来看 - 请记住每个会话对应于服务器上的一个文件,这些文件可能会在一段时间后建立(尤其是如果您是高流量网站)。
有一种方法涉及在用户的浏览器上存储一个单独的 cookie,其中包含您的网站可以在 $_COOKIE
中查找的登录信息,启用一个您可以探索的 'auto-login' 过程。不过我不确定这是最安全的方法。
希望对您有所帮助。
我是 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 ]]]] );
lifetime
在我的例子中是无限期的,所以尽可能长,
path
可能只是 "/",
secure
为真
而且我不需要 httponly
。
非常感谢, 麦克
事实上,php 确实将会话存储在 cookie 中 - 单个 cookie,通常称为 PHPSESSID
。这对应于服务器上的一个文件(其文件名是 PHPSESSID
cookie 的值),它是一组 key/value 对,例如您在上面概述的那些。
只要用户启用了 cookie,会话就可以正常工作。要确保的主要事情是每个响应都使用 session_start()
;否则您将无法访问 $_SESSION
内的值。
如果您希望此会话 cookie 在浏览器关闭后仍然存在,您需要使用 session_set_cookie_params()
(documentation here),您将在 session_start()
之前调用它。
我绝对不建议 'eternal' 会话的方法,只是从可伸缩性的角度来看 - 请记住每个会话对应于服务器上的一个文件,这些文件可能会在一段时间后建立(尤其是如果您是高流量网站)。
有一种方法涉及在用户的浏览器上存储一个单独的 cookie,其中包含您的网站可以在 $_COOKIE
中查找的登录信息,启用一个您可以探索的 'auto-login' 过程。不过我不确定这是最安全的方法。
希望对您有所帮助。