我知道PHP将用户的会话ID存储在一个名为“PHPSESSID”的cookie中,该cookie存储在客户端的浏览器中,并与服务器上的会话相匹配,以便能够关联该会话。关闭浏览器 会话信息消失,但客户端上的cookie仍然存在。是否可以使用此cookie来恢复旧会话?或者在客户端关闭浏览器的时候,所有会话数据都会从服务器中删除?如何恢复PHP会话?
我第一次有这种我的网页上:
session_start();
$_SESSION['message'] = 'Hello';
echo $_SESSION['message']; // outputs hello
然后我改变了页面:
$old_session = session_id();
session_id($old_session);
session_start();
echo $_SESSION['message'];
然后我关闭了浏览器,重新打开这个页面,得到了这些错误:
Warning: session_start() [function.session-start]: The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in C:\xampp\htdocs\localhost\test.php on line 5
Notice: Undefined index: message in C:\xampp\htdocs\localhost\test.php on line 7
关闭浏览器后,人们如何检索旧会话信息,这甚至有可能吗?
'关闭浏览器后,会话信息消失,但客户端上的cookie仍然存在。“---这是不正确的。在大多数情况下,会话ID cookie的生命被设置为“在浏览器未关闭之前”。 '$ old_session = session_id(); session_id($ old_session);'---这段代码没有意义 – zerkms 2012-01-12 21:58:46
http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime – j08691 2012-01-12 21:59:08
除非你透过用户的窗口,当他关闭浏览器时,服务器将不知道(AJAX也不能保证它)。服务器只是删除被认为“旧”的会话数据。 – webbiedave 2012-01-12 22:07:42