Я хочу использовать два независимых $ _SESSION в одном скрипте PHP.
Я попытался проверить, возможно ли это, используя следующий код.
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";
Выход:
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' сообщается другой идентификатор сеанса, но в остальном выходные данные совпадают Смотри ниже.
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 )
Что я делаю не так?
Я знаю, что подобные вопросы задавались ранее на этом форуме, здесь и здесь , но ответы, предложенные до сих пор, не смогли меня просветить.
Любая помощь будет высоко ценится.