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

Форум PHP

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

 

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

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

тема: Уничтожение сессии на стороне клиента
 
 автор: Phyto   (03.10.2008 в 22:46)   письмо автору
 
 

Проблема: Авторизация при помощи сессии. После вызова session_destroy() все переменные сессии пустые. проверено! Но стоит, не выключая браузер, зайти на страницу, требующую авторизации, все идет как по маслу: браузер показывает предыдущего авторизированного юзера.
Как избавиться?

  Ответить  
 
 автор: Trianon   (03.10.2008 в 22:50)   письмо автору
 
   для: Phyto   (03.10.2008 в 22:46)
 

C сессиями нужно работать по-человечески, а не в стиле register_globals on
Когда вместо вызова session_destroy() Вы будете записывать данные в $_SESSION[], браузер будет казать то, что Вы там оставите.

  Ответить  
 
 автор: Phyto   (04.10.2008 в 12:28)   письмо автору
 
   для: Trianon   (03.10.2008 в 22:50)
 

Дружище, Вы не поняли. У меня в php.ini register_globals = Off . А переменные сеанса, естественно, прописаны ручками. После вызова unset($_SESSION[]) и session_destroy() и переменные уничтожаются, и сессия, а при этом браузер, как и положено, отображает пустые переменные. Однако если кликать на браузере Back, то можно попасть на страницы, требующие авторизации.

  Ответить  
 
 автор: Trianon   (04.10.2008 в 16:18)   письмо автору
 
   для: Phyto   (04.10.2008 в 12:28)
 

и Вы уверены, что страницы формирует скрипт на основе данных из сессионных файлов, а не возвращает кеш?

На стороне клиента от сессии есть лишь сессионный идентификатор, уничтожать который бессмысленно.

  Ответить  
 
 автор: Phyto   (06.10.2008 в 10:51)   письмо автору
 
   для: Trianon   (04.10.2008 в 16:18)
 

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

Вот еще какие наблюдения:
проблема НЕ исчезает после завершения работы с браузером. То есть если я заходил и авторизировался в IE, а потом закрыл окно, повторное открытие уже без авторизации позволяет залезть на закрытые страницы того юзера, который авторизировался последним перед закрытием. Если при этом использовать другой браузер, лису или оперу, то пока там не авторизировался, этого косяка нет. Если авторизируешься, все повторяется, не зависимо от типа браузера.
Проблема НЕ исчезает после перезагрузки компа (от конкретной машины и операционки не зависит).

  Ответить  
 
 автор: nek-v   (06.10.2008 в 11:36)   письмо автору
 
   для: Phyto   (06.10.2008 в 10:51)
 

эмм...
создается такое впечатление:
1. это таки кэш.
2. возможно авторизация идет еще и по кукам.
Если вы применили session_destroy() то помоему удаляется сам файл сессии с сервера.
откуда же тогда берутся данные?

  Ответить  
 
 автор: Phyto   (06.10.2008 в 12:16)   письмо автору
 
   для: nek-v   (06.10.2008 в 11:36)
 

1. Ну, таки да!
2. Похоже, только Нео занет.

  Ответить  
 
 автор: Trianon   (06.10.2008 в 11:45)   письмо автору
 
   для: Phyto   (06.10.2008 в 10:51)
 

>другая часть - более или менее статические, но доступ к ним разрешает скрипт, проверяющий id юзера

Это сюрр... Либо - либо.

  Ответить  
 
 автор: Phyto   (06.10.2008 в 12:04)   письмо автору
 
   для: Trianon   (06.10.2008 в 11:45)
 

Я понимаю Ваш скепсис, коллега (:-)))
Я имел ввиду, что динамические файлы - это те, что в природе не существуют (то есть на сервере их нет), и их код создается скриптом в зависимости от запроса пользователя.
А которые "более менее статические" - это РНР-файлы, физически присутствующие на сервере, но динамически меняющие отдельные свои элементы в зависимости от разных факторов.

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

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