Как правильно удалить сеанс PHP? - PullRequest
4 голосов
/ 21 марта 2011

Ранее я использовал эти три строки для удаления сеанса:

session_start();
session_regenerate_id();
session_destroy();

session_destroy() закрывает ли сеанс или мне нужно закрывать его вручную?

session_start();
session_regenerate_id();
$_SESSION = array();
session_write_close();

Ответы [ 2 ]

6 голосов
/ 21 марта 2011

session_destroy удалить данные сеанса на носителе (файл, база данных и т. Д.), Где они хранятся, но не удаляет массив $_SESSION или файлы cookie, вы должны сделать это вручную, включая PHPSESSID cookie.

Обычно я удаляю сеансы примерно так:

foreach($_SESSION as $key => $val)
    unset($_SESSION[$key]);
foreach($_COOKIE as $key => $val)
    setcookie($key, '', 1);
session_destroy();


Кстати, когда вы вызываете session_regenerate_id() файл сеанса копируется в новый файл, но старый не удаляется, если вы хотите удалить файл старого сеанса данных (вероятно, вы хотите), вы должны указать его с помощью session_regenerate_id(TRUE).

1 голос
/ 21 марта 2011

Если вы уничтожаете сеанс, тогда на самом деле нет необходимости в session_write_close (), так как в руководстве он делает следующее:

Данные сеанса обычно сохраняются после завершения сценария безнеобходимость вызывать session_write_close (), но так как данные сеанса заблокированы для предотвращения одновременной записи, только один сценарий может работать в сеансе в любое время.

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