Как удалить сеанс PHP? - PullRequest
       12

Как удалить сеанс PHP?

6 голосов
/ 17 апреля 2009

Возможно, я неправильно удаляю сеансы PHP, когда пользователь выходит из системы. Я заметил, что если я выйду и снова войду без закрытия браузера, идентификатор сессии не изменится, но если я выйду, закрою окно браузера, открою новое и войду, идентификатор сессии будет другим , Нужно ли делать что-то другое или это нормальное поведение? Я использую один и тот же процесс в течение трех лет, но недавно произошло что-то, что заставило меня подумать, что возможно Мне нужно сделать что-то другое.

Вот что я в основном делаю, когда кто-то нажимает кнопку Выйти.

<?php

session_start();

if( isSet($_SESSION['FacID']) )
    $facID = $_SESSION['FacID'];    //Want to re-instate this after we destroy the session.

unset($_SESSION);
session_destroy();

if( isSet($_SESSION['FacID']) )
    $_SESSION['FacID'] = $facID;

?>

Ответы [ 3 ]

5 голосов
/ 17 апреля 2009

Если вы чувствуете необходимость форсировать новый идентификатор http://pl.php.net/manual/en/function.session-regenerate-id.php

А на ваш вопрос, из инструкции:

session_destroy () уничтожает все данные, связанные с текущим сессия. Это не сбрасывает ни один из глобальные переменные, связанные с сеанс или сброс файла cookie сеанса. Чтобы снова использовать переменные сеанса, session_start () должен быть вызван.

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

1 голос
/ 17 апреля 2009

Ваша сессия разрушается.

PHP будет генерировать идентификатор сессии, только если браузер не указывает его. Пока сеанс был уничтожен, проблем с этим нет.

0 голосов
/ 17 апреля 2009

Что с массивным сохранением и уничтожением? Просто session_start и установите свои переменные. Не нужно уничтожать, а затем сбросить их!

Ваша «проблема» с браузером заключается в том, что когда вы закрываете окно браузера, ваш браузер удаляет cookie, который PHP отправляет ему, чтобы он знал идентификатор сессии. Это опция браузера и не может быть изменена на стороне сервера (если вы не используете ее). Его можно обойти, используя некоторые методы, но это, вероятно, не лучший вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...