Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сессии
 
 автор: shine   (24.08.2009 в 17:03)   письмо автору
 
 

Здравствуйте всем!
Мне нужно решить одну маленькую проблему,подскажите,пожалуйста.
Когда юзер дает "выход" , у меня вызывается logout.php где и вызывается функция unset($HTTP_SESSION_VARS), для удаления переменных сессии.А что нужно делать,чтобы переменные сессии удалялись и в том случае,если юзер закрывает страничку сайта без нажатия на "выход"?Как в этом случае удаляют переменные сессии?

  Ответить  
 
 автор: Евгений Петров   (24.08.2009 в 17:13)   письмо автору
 
   для: shine   (24.08.2009 в 17:03)
 

Никак - при закрытии страницы удаляется идентификатор сессии из куков. Когда пользователь второй раз зайдет на страницу у него будет новый идентификатор и новая сессия. Соответственно и старых переменных в сессии не будет.

  Ответить  
 
 автор: Вот случайно зашел   (24.08.2009 в 17:17)   письмо автору
 
   для: Евгений Петров   (24.08.2009 в 17:13)
 

да...

  Ответить  
 
 автор: shine   (24.08.2009 в 17:25)   письмо автору
 
   для: Евгений Петров   (24.08.2009 в 17:13)
 

А в чем может быть проблема,если я захожу на свой сайт (он на локальном сервере) как зарегистрированный пользователь,а потом,закрываю и снова захожу,он открывает ту самую мою страницу .В коде, думаю, все нормально, перед тем,как выведется информация зарегистрированных юзеров,проверяется
if( isset($HTTP_SESSION_VARS['valid_user']) ) {........}

  Ответить  
 
 автор: ......   (24.08.2009 в 17:46)
 
   для: shine   (24.08.2009 в 17:25)
 

попробуйте перезапустить браузер и зайти

  Ответить  
 
 автор: Евгений Петров   (24.08.2009 в 18:05)   письмо автору
 
   для: shine   (24.08.2009 в 17:25)
 

Вероятно идентификатор сессии не удаляется. Сделайте вывод на странице:
<?php

session_start
();
echo 
session_id();

?>

И посмотрите меняется ли он? Проверьте так же не передается ли он в строке адреса?

  Ответить  
 
 автор: Вот случайно зашел   (24.08.2009 в 17:20)   письмо автору
 
   для: shine   (24.08.2009 в 17:03)
 

<body onunload="location.href='exit.php';">

  Ответить  
 
 автор: Вот случайно зашел   (24.08.2009 в 17:22)   письмо автору
 
   для: shine   (24.08.2009 в 17:03)
 

Вместо $_HTTP_SESSION_VARS следует использовать $_SESSION

  Ответить  
 
 автор: Вот случайно зашел   (24.08.2009 в 17:22)   письмо автору
 
   для: 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

  Ответить  
 
 автор: shine   (24.08.2009 в 18:06)   письмо автору
 
   для: ........   (24.08.2009 в 17:43)
 

После перезапуска браузера, сессии удаляются, все верно,спасибо!

  Ответить  
 
 автор: .........   (24.08.2009 в 18:22)
 
   для: shine   (24.08.2009 в 18:06)
 

Забыл добавить
Можно спомощью javascript удалять переменные из cookies или менять их содержимое.
Но браузер должен выполнять этот javascript

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования