Как проверить, что старая сессия действительно уничтожена? - PullRequest
6 голосов
/ 27 апреля 2010

Хм, это может звучать немного странно. У нас были некоторые проблемы с конкретным браузером в очень специфических условиях, и в итоге мы сузили проблему до того факта, что мы не уничтожали должным образом старые сессии после выполнения session_regenerate_id (). Я полагаю, что решил эту проблему, выполнив session_regenerate_id (true) сейчас, но как проверить, что предыдущие сессии больше не существуют? Кто-то предложил cURL, но я не могу обойти их документы. К сожалению (?) Босс не принимает «он просто работает» за ответ, поэтому я очень ценю любой совет!

Ответы [ 2 ]

4 голосов
/ 27 апреля 2010

По умолчанию session_regenerate_id(); заменяет только текущий сеанс на новый. Таким образом, старый файл сеанса на самом деле не нужно удалять. Но выполнение session_regenerate_id( true ); удалит старый файл сеанса. (http://php.net/session_regenerate_id)

Чтобы проверить, удален ли старый сеанс, вы можете сделать что-то вроде этого

<?php
$file=ini_get('session.save_path')."/sess_".session_id();
$gotDeleted = file_exists( $file );
?>

Вы также можете сделать session_destroy(). Если вам необходимо сохранить некоторые переменные, вы можете попробовать unset() для определенных $_SESSION значений.

1 голос
/ 27 апреля 2010

Чтобы убедиться, что данные сеанса пропали, вы должны взглянуть на сервер, сохраняющий сеанс. По умолчанию он хранит сессии в виде простых файлов на диске (именно поэтому сессия переживает перезапуск Apache, например). Возможно, вы захотите просмотреть их и убедиться, что сеанс, соответствующий сеансу, который вы наблюдали, был эффективно удален.

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

Смотрите здесь: http://php.net/manual/en/function.session-set-save-handler.php

Или здесь: http://devzone.zend.com/article/141

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