Я хочу иметь возможность переключаться между сессиями в php. Вот мой текущий код:
<?php session_name("session1"); session_start(); $_SESSION["name"] = "1"; echo "<pre>", print_r($_SESSION, 1), "</pre>"; session_write_close(); session_name("session2"); session_start(); $_SESSION["name"] = "2"; echo "<pre>", print_r($_SESSION, 1), "</pre>"; session_write_close(); session_name("session1"); session_start(); echo "<pre>", print_r($_SESSION, 1), "</pre>";
Я хочу, чтобы он выводил
Array ( [name] => 1 ) Array ( [name] => 2 ) Array ( [name] => 1 )
но он выводит
Array ( [name] => 1 ) Array ( [name] => 2 ) Array ( [name] => 2 )
Можно ли переключаться между сеансами? Одновременно мне не нужны два сеанса, но мне нужно переключаться между ними. Когда я запускаю этот код, я получаю два файла cookie: session1 и session2 с одинаковым значением.
Спасибо за любую помощь!
То, что вам нужно использовать, – session_id()
вместо имени session_name()
<?php session_id("session1"); session_start(); echo session_id(); $_SESSION["name"] = "1"; echo "<pre>", print_r($_SESSION, 1), "</pre>"; session_write_close(); session_id("session2"); echo session_id(); session_start(); $_SESSION["name"] = "2"; echo "<pre>", print_r($_SESSION, 1), "</pre>"; session_write_close(); session_id("session1"); echo session_id(); session_start(); echo "<pre>", print_r($_SESSION, 1), "</pre>"; session_write_close(); session_id("session2"); echo session_id(); session_start(); echo "<pre>", print_r($_SESSION, 1), "</pre>";
Это напечатает:
session1 Array ( [name] => 1 ) session2 Array ( [name] => 2 ) session1 Array ( [name] => 1 ) session2 Array ( [name] => 2 )
session_id
– это идентификатор сеанса, который помогает различать сеансы. session_name
– это только именованный псевдоним для текущего сеанса