(PHP) Как удалить сессию при выходе пользователя из системы.

Sherbakov
Дата: 13.07.2006 12:32:35
Привет Всем!
Ребята Я понимаю данная тема уже поднималась, и не раз http://sql.ru/forum/actualthread.aspx?tid=261565&hl=session_destroy
НО Все таки внятного ответа так никто и не дал.
Пример:
Есть код, авторизации. Авторизирует, Сессию и данные посетителя заносит в базу. Далее с этими данными Я оперирую.
Когда пользователь нажимает Выход, происходит следующее:
session_start();
unset($_COOKIE[session_name()]);
unset($_COOKIE[session_id()]);
session_unset(); // осов все переменные
session_destroy(); // всю информацию убиваем

header("location:Кудан ньть");
exit;

По идее пускать не должно. Т.е. Если пользователь после Выхода нажмет back в браузере, Система его пропустит, обратно.
Поскольку
session_destroy()
Уничтожает только Данные касающиеся текущей сессии :( но не сессию.
Получается такая штука, При повторном входе сессия одна и таже. Ясное дело в темпе она не удаляется.
Видно что Данные получает не из кеша, посколько некоторая информация для пользователя не отображается, значит скрипт не может идентифицировать его.
Проблему решил следующим образом, есть некий флажек (в переменной сессии), который означает что пользователь вошел в систему, когда Он нажимает выход все данные уничтожаются и система его не пропускает.
Хочу добится авториции без "флажка" и при выходе система обратно его не пропускала.
Поделитесь знаниями, кто как решал данный вопрос, или Я его уже решил?
---
Все спасибо за ранее.
*
Дата: 13.07.2006 12:44:31
Sherbakov
Дата: 13.07.2006 13:51:04
*
phpfaq.ru/session


автор

session_start();
И далее обращаться к элементам массива $_SESSION. Например, проверка авторизации будет выглядеть примерно так:
session_start();
if ($_SESSION['authorized']<>1) {
header("Location: /auth.php");
exit;
}

Ребята Убедительная просьба, кому есть чем поделится - поделитесь ...
*
Дата: 13.07.2006 15:07:33
Вы разберитесь вначале как сессии работают, потому что вы с ними работаете как шаман.
Sherbakov
Дата: 13.07.2006 16:21:41
Sherbakov
*
phpfaq.ru/session


автор

session_start();
И далее обращаться к элементам массива $_SESSION. Например, проверка авторизации будет выглядеть примерно так:
session_start();
if ($_SESSION['authorized']<>1) {
header("Location: /auth.php");
exit;
}

Ребята Убедительная просьба, кому есть чем поделится - поделитесь ...


*
Вы разберитесь вначале как сессии работают, потому что вы с ними работаете как шаман.



Видать оф топ пошел...
Я всего навсего специалистов спрашивал. :(
И если уже на то пошло тогда тут больше сказано [url=http://]http://www.php.net/manual/ru/ref.session.php[/url]
Anjey aka PM
Дата: 13.07.2006 16:26:34
Форум со специалистами существует для разрешения вопросов на которые невозможно найти ответ в документации. Если на ваш вопрос ответ в документации есть, и вам на это прямо указали, будьте добры -- почитайте документацию.
Sherbakov
Дата: 13.07.2006 16:49:55
Anjey aka PM
Форум со специалистами существует для разрешения вопросов на которые невозможно найти ответ в документации. Если на ваш вопрос ответ в документации есть, и вам на это прямо указали, будьте добры -- почитайте документацию.
Да Вы правы.
Но "Документацию" что Мне дал гость для - Начинающих. Про данное там не сказано. Я написал вверху, что Данный вопрос поднимался тут
Но там тоже так ни к чему и не пришли.
похожие вопросы обсуждали на Данном форуме. Дело именно в фаиле сесси.
По документации или по настройке файла php.ini Сессию удалает один из процессов php на сервере. А самому ее какбы удалить нельзя.
Я для себя примерно вопрос авторизации решил, Но Мне бы хотелось немного иначе., Так как Я спрашивал в начале.
Смотрите сколько раз этот впорос поднимался:
1
2
3
4
,так видать на него ответ внятно и не дал.
Anjey aka PM
Дата: 13.07.2006 16:57:57
Удаление файла сессии происходит во время сборки мусора. Интервал/вероятность сборки мусора настраивается.

Удалять файлы вручную -- в этом нет необходимости. Если вам не нравится "мусор" в папке сессий, можете сохранять данные сессии в БД или еще куданить (куда фантазия подскажет). session_set_save_handler

See also the session.save_handler configuration directive.
Sherbakov
Дата: 13.07.2006 17:29:12
Anjey aka PM
Удаление файла сессии происходит во время сборки мусора. Интервал/вероятность сборки мусора настраивается.

Удалять файлы вручную -- в этом нет необходимости. Если вам не нравится "мусор" в папке сессий, можете сохранять данные сессии в БД или еще куданить (куда фантазия подскажет). session_set_save_handler

See also the session.save_handler configuration directive.


Да Anjey, Данные сесси у меня сохраняются в бд. Авторизация у меня сделана таким образом что Если фладек есть, Значит смотрим по текущему id сессии в базы если есть значит оттедова беру данные, что бы не переносить в сесии не ни логина не пароля. Меня смущает данный флажек. Который в свою очередь ясвляется переменной типе $_SESSION ['ses_id']. И при уничтожении session_destroy() все уничтожается, соотсветсвенно все нармуль.
Я же пробывал сделать так что бы при авторизации в базу заносился только id сессии и данные пользователся, бозовасяких флажков. так тоже работает, Но когда полльзователь нажимает выход, переменные уничтожаются, а сессия остается, При следующем логине в базе таже сессия, причем после выхода, система его пропускает, но не может идентифицировать. (см. Вверх)
Anjey aka PM
Дата: 13.07.2006 17:34:04
так как увас сейчас СДЕЛАНО и РАБОТАЕТ это нормальный подход. Authorized: Yes/No или тип того :)

Не надо изобретать велосипед. Сборка мусора -- трудоемкий процесс и если КАЖДЫЙ РАЗ когда у вас сессия заканчивается (либо по таймауту либо в связи с выходом пользователя) осуществлять сборку мусора нецелесообразно.