Возможный дубликат:
Закройте сеанс и запустите новый
Я использую wampserver2.1 php5.3.3, я обнаружил, что session_regenerate_id (true) не работает в моем сценарии, в документе говорится, что когда я устанавливаю параметр «delete_old_sessions» true, должен быть новый sid, и все переменные сеанса должны быть удалены, но факт после функции, $ _session [abc] все еще существует. я неправильно понял эту функцию, в чем моя проблема? Я ценю, если кто-нибудь может мне помочь,
<?php session_start(); $_SESSION['abc']=12323; session_regenerate_id(true); echo $_SESSION['abc']; ?>
Я думал, что он должен отображать нет, но он выводит: 12323
session_regenerate_id()
обновляет текущий session id
с вновь созданным. Он не изменяет переменные сеанса.
echo session_id(); session_regenerate_id(); echo session_id();
Вы должны unset
сеанс, чтобы сделать это:
unset($_SESSION); // or $_SESSION = array();
сunset($_SESSION); // or $_SESSION = array();
Как начать новый сеанс :
session_start(); session_destroy(); session_regenerate_id(); unset($_SESSION); session_start();
сsession_start(); session_destroy(); session_regenerate_id(); unset($_SESSION); session_start();
session_regenerate_id
отправляет новый файл cookie, но не перезаписывает значение, хранящееся в $_COOKIE
. После вызова session_destroy
открытый идентификатор сеанса отбрасывается, поэтому просто перезапуск сеанса с session_start
снова откроет исходный, хотя и пустой, сеанс для текущего запроса (последующие запросы будут использовать новый идентификатор сеанса). Вместо session_destroy
+ session_start
используйте параметр $delete_old_session
для session_regenerate_id
для удаления предыдущих данных сеанса.
<?php session_start(); /* Create a new session, deleting the previous session data. */ session_regenerate_id(TRUE); /* erase data carried over from previous session */ $_SESSION=array(); ?>
Чтобы начать новый сеанс и оставить старый нетронутый, просто оставьте аргумент session_regenerate_id
.
Источник: http://de.php.net/manual/en/function.session-regenerate-id.php#107323
Если вы хотите уничтожить переменные сеанса, вы можете выполнить это: session_destroy();
и если вы хотите получить новый ID, вы можете session_regenerate_id();