PHP:如何在cookie中存储会话

Tan*_*uta 3 php cookies session session-variables session-cookies

我是PHP新手,目前正在努力解决以下问题:

我有一个登录页面,我在下面开始会话,到目前为止效果很好.

session_start();
// ...
$_SESSION["Customer"]["username"] = $username;
$_SESSION["Customer"]["email"] = $email;
Run Code Online (Sandbox Code Playgroud)

现在我以前从未使用过会话,但假设一旦用户关闭浏览器就死了,我想让他们保持登录状态,以便他们无论何时重新进入页面都不必这样做.我的想法是使用cookie,但我不确定如何将我的会话存储在cookie中.

我对此进行了一些研究并发现了以下内容,但我不确定这是否是正确的方法以及如何将其用于我需要的内容.
有人可以帮我弄这个吗 ?

session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] );
Run Code Online (Sandbox Code Playgroud)

lifetime在我的情况下将是无限期,所以只要可能,
path可能只是"/",
secure将是真的
,我不需要httponly.

非常感谢,迈克

d0u*_*7a5 9

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

如果用户启用了cookie,则会话将正常工作.要确保的主要是每个响应都使用session_start(); 否则你将无法访问其中的值$_SESSION.

如果您希望在浏览器关闭后继续使用此会话cookie,则需要使用之前调用的session_set_cookie_params()(此处文档)session_start().

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

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

希望有所帮助.