我想在单个 PHP 脚本中使用两个独立的 $_SESSION。
我尝试使用以下代码验证这是否可行。
error_reporting(-1);
session_name('session_one');
session_start();
$_SESSION = array();
$_SESSION['session_one_var'] = 'test_one';
$output1 =
(
"session_id(): '" . session_id() . "'.<br/>\n" .
"session_name(): '" . session_name() . "'.<br/>\n" .
print_r($_SESSION, true)
);
session_write_close();
$_SESSION = array();
session_name('session_two');
session_start();
$_SESSION['session_two_var'] = 'test_two';
$output2 =
(
"session_id(): '" . session_id() . "'.<br/>\n" .
"session_name(): '" . session_name() . "'.<br/>\n" .
print_r($_SESSION, true)
);
session_write_close();
$_SESSION = array();
echo "$output1<br/>\n<br/>\n$output2";
Output:
session_id(): 'f19aecd8d3ce0c5d444456d2387c6e35'.
session_name(): 'session_one'.
Array ( [session_one_var] => test_one )
session_id(): 'f19aecd8d3ce0c5d444456d2387c6e35'.
session_name(): 'session_two'.
Array ( [session_one_var] => test_one [session_two_var] => test_two )
我希望输出显示名为“session_one”的会话包含数组(“session_one_var”=>“test_one”),名为“session_two”的会话包含数组(“session_two_var”=>“test_two”)。相反,“session_two”似乎与“session_one”是同一个会话。
如果我插入一行“session_regenerate_id();”在第二个“session_start();”之后行中,为“session_two”报告了不同的会话 ID,但输出在其他方面是相同的。见下文。
session_id(): 'f19aecd8d3ce0c5d444456d2387c6e35'.
session_name(): 'session_one'.
Array ( [session_one_var] => test_one )
session_id(): '3bcc74a7bcbac30e680c5b94fadcede1'.
session_name(): 'session_two'.
Array ( [session_one_var] => test_one [session_two_var] => test_two )
我究竟做错了什么?
我知道以前在这个论坛上也有人问过类似的问题,here https://stackoverflow.com/questions/2962175/writing-in-two-sessions-from-the-same-file-php and here https://stackoverflow.com/questions/609756/can-you-switch-php-sessions-in-a-session,但迄今为止提供的答案未能启发我。
任何帮助都感激不尽。