|
|
|
| Проблема: Авторизация при помощи сессии. После вызова session_destroy() все переменные сессии пустые. проверено! Но стоит, не выключая браузер, зайти на страницу, требующую авторизации, все идет как по маслу: браузер показывает предыдущего авторизированного юзера.
Как избавиться? | |
|
|
|
|
|
|
|
для: Phyto
(03.10.2008 в 22:46)
| | C сессиями нужно работать по-человечески, а не в стиле register_globals on
Когда вместо вызова session_destroy() Вы будете записывать данные в $_SESSION[], браузер будет казать то, что Вы там оставите. | |
|
|
|
|
|
|
|
для: Trianon
(03.10.2008 в 22:50)
| | Дружище, Вы не поняли. У меня в php.ini register_globals = Off . А переменные сеанса, естественно, прописаны ручками. После вызова unset($_SESSION[]) и session_destroy() и переменные уничтожаются, и сессия, а при этом браузер, как и положено, отображает пустые переменные. Однако если кликать на браузере Back, то можно попасть на страницы, требующие авторизации. | |
|
|
|
|
|
|
|
для: Phyto
(04.10.2008 в 12:28)
| | и Вы уверены, что страницы формирует скрипт на основе данных из сессионных файлов, а не возвращает кеш?
На стороне клиента от сессии есть лишь сессионный идентификатор, уничтожать который бессмысленно. | |
|
|
|
|
|
|
|
для: Trianon
(04.10.2008 в 16:18)
| | Ряд страниц сугубо динамические, формируемые скриптами, другая часть - более или менее статические, но доступ к ним разрешает скрипт, проверяющий id юзера, который хранится в сессионном файле (временно, после авторизации) и в базе на сервере (постоянно).
Я также понимаю, что уничтожать сессионный идентификатор нет смысла.
Проблема и в самом деле скорее всего в кэше. по крайней мере я так думаю с самого начала, т.к. после вызова sessoin_destroy переменные оказываются пустыми.
Вот еще какие наблюдения:
проблема НЕ исчезает после завершения работы с браузером. То есть если я заходил и авторизировался в IE, а потом закрыл окно, повторное открытие уже без авторизации позволяет залезть на закрытые страницы того юзера, который авторизировался последним перед закрытием. Если при этом использовать другой браузер, лису или оперу, то пока там не авторизировался, этого косяка нет. Если авторизируешься, все повторяется, не зависимо от типа браузера.
Проблема НЕ исчезает после перезагрузки компа (от конкретной машины и операционки не зависит). | |
|
|
|
|
|
|
|
для: Phyto
(06.10.2008 в 10:51)
| | эмм...
создается такое впечатление:
1. это таки кэш.
2. возможно авторизация идет еще и по кукам.
Если вы применили session_destroy() то помоему удаляется сам файл сессии с сервера.
откуда же тогда берутся данные? | |
|
|
|
|
|
|
|
для: nek-v
(06.10.2008 в 11:36)
| | 1. Ну, таки да!
2. Похоже, только Нео занет. | |
|
|
|
|
|
|
|
для: Phyto
(06.10.2008 в 10:51)
| | >другая часть - более или менее статические, но доступ к ним разрешает скрипт, проверяющий id юзера
Это сюрр... Либо - либо. | |
|
|
|
|
|
|
|
для: Trianon
(06.10.2008 в 11:45)
| | Я понимаю Ваш скепсис, коллега (:-)))
Я имел ввиду, что динамические файлы - это те, что в природе не существуют (то есть на сервере их нет), и их код создается скриптом в зависимости от запроса пользователя.
А которые "более менее статические" - это РНР-файлы, физически присутствующие на сервере, но динамически меняющие отдельные свои элементы в зависимости от разных факторов. | |
|
|
|