Кнопка сброса сеанса PHP

#php

#php

Вопрос:

я хочу, чтобы на моем веб-сайте была кнопка с надписью reset, и при нажатии на нее сеанс сбрасывался? есть идеи? Под сброшенным я подразумеваю просто очистку сеанса, поэтому мне нужна кнопка html, которая при нажатии просто очищает сеанс.

Комментарии:

1. Что именно означает сброс? (Поддерживает сеанс, очищает сеанс, …?)

Ответ №1:

Создайте форму, содержащую две вещи: 1) скрытый var, содержащий текущий URL 2) кнопку, которая при нажатии направляет пользователя на страницу, которая очищает сеанс

на второй странице очистите сеанс, а затем, используя информацию $ _POST из формы, перенаправьте пользователя обратно на страницу, на которой он был.

Для уничтожения сеанса:

 session_start(); // if it's not already started.
session_unset();
session_destroy();
  

Ответ №2:

Эта кнопка отправит форму PHP-скрипту, который выполняет это:

 session_start();
session_destroy();

// Typically, after doing this you will redirect the user
// to the home page with something like:
header('Location: index.php');
  

Вот и все, что для этого нужно.

Пусть вас не смущает часть «отправить форму» — вам не нужно иметь в форме что-либо, кроме кнопки.

Комментарии:

1. или, может быть, просто session_start(); $_SESSION = array() .

2. Но на самом деле это не сбрасывает сеанс, это просто уничтожает текущий сеанс?

3. @MarcB, @Crayon: После уничтожения сеанса обычно перенаправляют пользователя в соответствии с шаблоном PRG. Когда загрузится новая страница, сеанс больше не будет существовать, поэтому нет необходимости явно отключать переменные и т.д.

4. Джон: да, но установка в пустой массив оставляет текущий идентификатор сеанса нетронутым, но удаляет все предыдущие значения, что фактически было бы «сбросом», как того хочет операционная система.

Ответ №3:

Простой способ (который почти на 100% безопасен): используйте javascript для удаления cookie (большую часть времени PHPSESSID)

Немного более сложный способ (который намного безопаснее): используйте PHP, чтобы отменить установку $ _SESSION (чтобы пользователь больше не мог ничего делать с идентификатором PHPSESSID, чтобы предотвратить перехват), а затем отменить установку или регенерировать $ _COOKIE[‘PHPSESSID’] (или session_regenerate_id).

Ответ №4:

Это из руководства по PHP для session_destroy:

 <?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// 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();
?>
  

Сначала он сбрасывает все данные сеанса (чтобы их нельзя было использовать позже при загрузке той же страницы), прежде чем удалять cookie сеанса и, наконец, уничтожать сеанс, что приведет к удалению файла данных с диска.