为什么我在打印时只获得最后一个会话的输出?我需要为每个用户ID保存一个会话并发送密码重置电子邮件。当用户点击链接并更改密码时,我需要从服务器清除会话。
这就是我用PHP做的事情。
$res = array();
$uniqueId = uniqid();
echo $uniqueId . "<br>";
session_id($uniqueId);
session_start();
echo session_id() . "<br>";
$_SESSION['session_id'] = session_id();
$_SESSION['event_id'] = 'event1';
$_SESSION['user_id'] = 'user1';
$res[] = json_encode($_SESSION);
$uniqueId2 = uniqid();
echo $uniqueId2 . "<br>";
session_destroy();
session_id($uniqueId2);
session_start();
echo session_id() . "<br>";
$_SESSION['session_id'] = session_id();
$_SESSION['event_id'] = 'event2';
$_SESSION['user_id'] = 'user2';
$res[] = json_encode($_SESSION);
echo "<br>";
print_r($res);
print_r
的输出:
Array (
[0] => {"session_id":"5609187f586da","event_id":"event1","user_id":"user1"}
[1] => {"session_id":"5609187f588e1","event_id":"event2","user_id":"user2"}
)
现在在新页面中,当我尝试这两个会话的每个事件ID时,我只获得最后一个会话的event_id,但不是两者。首先它说
Notice: Undefined index: event_id in C:\xampp\htdocs\test\test.php on line 12
这就是我在新页面中所做的事情。
$id1 = '560915a8c0875';
$id2 = '560915a8c0d51';
session_id($id1);
session_start();
echo $_SESSION['event_id'];
echo "<br>";
session_id($id2);
echo $_SESSION['event_id'];
这不可能用PHP或什么?
答案 0 :(得分:1)
session_destroy()会销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。要再次使用会话变量,必须调用session_start()。 http://php.net/manual/en/function.session-destroy.php
在$ id1上调用session_destroy时,数据也将从服务器中清除,这意味着当您将会话ID定义为$ id1时,它将返回空会话。