В разделе stackoverflow есть много страниц о том, как разобраться в сеансе. Поверьте мне, я читал их все, и я наткнулся на это: Почему моя сессия остается?
Мой вопрос прост, правда ли, что мне нужно сделать все ниже, чтобы правильно уничтожить сеанс?
$tmp = session_id(); session_destroy(); session_id($tmp); unset($tmp);
Это единственная страница, которая предлагает такие экстремальные меры. Большинство страниц просто предлагают session_destroy();
,
Просто уточнить, потому что, похоже, есть некоторая путаница, я ищу эффективный эффективный метод.
Заранее спасибо.
Новые ответы перестали поступать, поэтому я вникаю в то, что я узнал, основываясь на всех ответах. Это совокупность различных ответов. Надеюсь, это поможет другим. Ниже приведен наиболее эффективный метод, который на 100% эффективен для уничтожения сеанса:
if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } $_SESSION = array(); $tmp = session_id(); session_id($tmp); unset($tmp); session_unset(); session_destroy(); session_write_close(); session_regenerate_id(True); // true indicates the need to delete the old session
сif (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } $_SESSION = array(); $tmp = session_id(); session_id($tmp); unset($tmp); session_unset(); session_destroy(); session_write_close(); session_regenerate_id(True); // true indicates the need to delete the old session
Спасибо всем за их помощь, показывая мне, как это сделать. Это не было ничьим усилием. Я особенно хотел бы поблагодарить @Kerrek SB, @Uday @Dhruvisha. Если у вас есть больше предложений, не стесняйтесь добавлять комментарии, и я отредактирую свой ответ.
session_destroy () уничтожает все данные, связанные с текущим сеансом. Он не отменяет никаких глобальных переменных, связанных с сеансом, или не удаляет cookie сеанса. Чтобы снова использовать переменные сеанса, необходимо вызвать session_start ().
Чтобы вообще убить сеанс, как и для выхода из системы, идентификатор сеанса также должен быть отменен. Если для распространения идентификатора сеанса (поведение по умолчанию) используется куки-файл, необходимо удалить куки-файл сеанса. Для этого может использоваться setcookie ().
Пример Уничтожение сеанса с помощью $ _SESSION
// Unset all of the session variables. $_SESSION = array(); // If it's desired to kill the session, also delete the session cookie. // Note: This will destroy the session, and not just the session data! if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } // Finally, destroy the session. session_destroy(); ?>
Подробнее см. Здесь .
<?php session_start(); $s_id = session_id(); echo $s_id; session_destroy(); session_unset(); session_start(); session_regenerate_id(true); $s_id = session_id(); ?>
Попробуй это . Это будет работать.