Возможный дубликат:
Закройте сеанс и запустите новый
Я использую 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();