|
|
|
| Здравствуйте всем!
Мне нужно решить одну маленькую проблему,подскажите,пожалуйста.
Когда юзер дает "выход" , у меня вызывается logout.php где и вызывается функция unset($HTTP_SESSION_VARS), для удаления переменных сессии.А что нужно делать,чтобы переменные сессии удалялись и в том случае,если юзер закрывает страничку сайта без нажатия на "выход"?Как в этом случае удаляют переменные сессии? | |
|
|
|
|
|
|
|
для: shine
(24.08.2009 в 17:03)
| | Никак - при закрытии страницы удаляется идентификатор сессии из куков. Когда пользователь второй раз зайдет на страницу у него будет новый идентификатор и новая сессия. Соответственно и старых переменных в сессии не будет. | |
|
|
|
|
|
|
|
для: Евгений Петров
(24.08.2009 в 17:13)
| | да... | |
|
|
|
|
|
|
|
для: Евгений Петров
(24.08.2009 в 17:13)
| | А в чем может быть проблема,если я захожу на свой сайт (он на локальном сервере) как зарегистрированный пользователь,а потом,закрываю и снова захожу,он открывает ту самую мою страницу .В коде, думаю, все нормально, перед тем,как выведется информация зарегистрированных юзеров,проверяется
if( isset($HTTP_SESSION_VARS['valid_user']) ) {........} | |
|
|
|
|
автор: ...... (24.08.2009 в 17:46) |
|
|
для: shine
(24.08.2009 в 17:25)
| | попробуйте перезапустить браузер и зайти | |
|
|
|
|
|
|
|
для: shine
(24.08.2009 в 17:25)
| | Вероятно идентификатор сессии не удаляется. Сделайте вывод на странице:
<?php
session_start();
echo session_id();
?>
|
И посмотрите меняется ли он? Проверьте так же не передается ли он в строке адреса? | |
|
|
|
|
|
|
|
для: shine
(24.08.2009 в 17:03)
| | <body onunload="location.href='exit.php';"> | |
|
|
|
|
|
|
|
для: shine
(24.08.2009 в 17:03)
| | Вместо $_HTTP_SESSION_VARS следует использовать $_SESSION | |
|
|
|
|
|
|
|
для: shine
(24.08.2009 в 17:03)
| | Вместо $_HTTP_SESSION_VARS следует использовать $_SESSION | |
|
|
|
|
автор: ........ (24.08.2009 в 17:43) |
|
|
для: shine
(24.08.2009 в 17:03)
| | >,если юзер закрывает страничку сайта без нажатия на "выход"
Вы можете удалить все данные вместе с сессией,
но Вы не сможете определить закрыл-ли пользователь страничку,
если только браузер пользователя не будет сам вам посылать с этой странички запросы
, например каждые 30 секунд (браузер должен поддерживать AJAX)
обычно по умолчанию в php. ini такой параметр session.cookie_lifetime = 0
, если сессия на куках.
Означает что идентификатор сессии на стороне пользователя
будет храниться пока пользователь не выключит браузер совсем.
В некоторых браузерах вообще есть настройка позволяющая никогда не удалять временные куки.
в опере например это есть
Всё что можно сделать на стороне сервера , это выставить небольшое session.cookie_lifetime
, но это создаст проблемы пользователям которые редко обновляют страницы
и всё равно никак не повлияет на браузер , если это браузер в котором можно настроить всё
, если только сервер сам удалит сессию по истечению session.gc_maxlifetime | |
|
|
|
|
|
|
|
для: ........
(24.08.2009 в 17:43)
| | После перезапуска браузера, сессии удаляются, все верно,спасибо! | |
|
|
|
|
автор: ......... (24.08.2009 в 18:22) |
|
|
для: shine
(24.08.2009 в 18:06)
| | Забыл добавить
Можно спомощью javascript удалять переменные из cookies или менять их содержимое.
Но браузер должен выполнять этот javascript | |
|
|
|