|
|
|
| Есть скрипт авторизации на сайте. После ввода логина и пароля этот же скрипт выводит пользователю какую-либо информацию, а так же ссылку "Logout". После нажатия на эту ссылку, срабатывает другой скрипт, который убивает сессию и возвращает пользователя на страницу авторизации.
Проблема в следующем: если нажать "Back" в броузере или на мыши и вернуться на страницу, где пользователь видел какую-либо информацию, то он вновь считается авторизовавшимся. Как сделать так, чтобы, если пользователь после "Логаута" с сайта нажмет "Back", а потом обновит данные в броузере, он не считался авторизовавшимся и получал стандартное приглашение авторизоваться?
Заранее благодарю за потраченное на мой, скорее всего глупый, вопрос.
P.S. Все устроено на сессиях и MySQL. Первый скрипт, после удачной авторизации, обновляет базу и ставит пользователю маркер в виде цифры 1 в поле online. Скрипт logout, в свою очередь, обновляет базу, ставит пользователю маркер 0, после чего закрывает сессию. | |
|
|
|
|
|
|
|
для: Prorok
(27.06.2006 в 00:31)
| | Обратитесь в раздед Java Script
и спросите что нибудь что очищает историю браузера | |
|
|
|
|
|
|
|
для: valenok
(27.06.2006 в 00:35)
| | Беда в том, что на JavaScript'е эту проблему решить не так и сложно. Меня интересует решение такой проблемы именно на PHP, если такое, конечно, возможно. | |
|
|
|
|
|
|
|
для: Prorok
(27.06.2006 в 00:40)
| | Я думаю что невозможно. | |
|
|
|
|
|
|
|
для: Prorok
(27.06.2006 в 00:40)
| | Здесь надо просто отключить хеширование страниц помоему =)))
Это на стороне клиента =) | |
|
|
|
|
|
|
|
для: CrazyAngel
(27.06.2006 в 00:44)
| | Отключение хешировения спасет ситуацию только в эксплорере, да и то не лучшим способом. | |
|
|
|
|
|
|
|
для: CrazyAngel
(27.06.2006 в 00:44)
| | Хеширование страниц? Это, простите, что такое? | |
|
|
|
|
|
|
|
для: Саня
(27.06.2006 в 01:10)
| | Я забыл как это точно называется =)))
Ну это когда страница остается в памяти или что-то типо того =) | |
|
|
|
|
|
|
|
для: CrazyAngel
(27.06.2006 в 01:12)
| | Это называется кешированием. Нужно не очищать кеш, а наоборот - закешировать страницу, которая выдаётся неавторизованному посетителю, чтобы при нажатии кнопри "Назад" бралась именно та страница. В опере - хочешь, не хочешь, все страницы кешируются принудительно. | |
|
|
|
|
|
|
|
для: Саня
(27.06.2006 в 01:15)
| | =))) звучит похоже =)))
Вот и написал =)))
кеширование - хеширование
Хотя это совершенно разные вещи =(
=)))) | |
|
|
|
|
|
|
|
для: Prorok
(27.06.2006 в 00:31)
| | А вы как сессию уничтожаете? | |
|
|
|
|
|
|
|
для: cheops
(27.06.2006 в 01:48)
| | Сначала уничтожаю все переменные, переданные через массив $_SESSION, потом session_destroy().
P.S. На счет хеширования... я понял, что человек хотел спросить, поэтому на автомате также ответил. | |
|
|
|
|
|
|
|
для: cheops
(27.06.2006 в 01:48)
| | А что толку от удаления сессий если страница кешируется? | |
|
|
|
|
|
|
|
для: valenok
(27.06.2006 в 09:49)
| | No comments... | |
|
|
|
|
|
|
|
для: Prorok
(27.06.2006 в 10:12)
| | Ну я вам сказал - лучше обратитесь к JavaScript
и спорсите чтото что очищает кеш браузера и стирает историю.
Хотя насчёт истории - лучше не стоит. | |
|
|
|
|
|
|
|
для: valenok
(27.06.2006 в 11:22)
| | попробуй в заголовках запретить кеширование.
<?php ## Функция для запрета кэширования страницы браузером.
function nocache() {
Header("Expires: Thu, 19 Feb 1998 13:24:18 GMT");
Header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
Header("Cache-Control: no-cache, must-revalidate");
Header("Cache-Control: post-check=0,pre-check=0");
Header("Cache-Control: max-age=0");
Header("Pragma: no-cache");
}
?>
|
Или сделай двойной редирект | |
|
|
|
|
|
|
|
для: куч1963
(27.06.2006 в 18:03)
| | >Проблема в следующем: если нажать "Back" в броузере или на мыши и вернуться на >страницу, где пользователь видел какую-либо информацию, то он вновь считается >авторизовавшимся
Страница отрисовывается как для авторизовавшегося пользователя. Если вы правильно очищаете сессию, то пользователь ничего не сможет сделать | |
|
|
|
|
|
|
|
для: RV
(27.06.2006 в 20:25)
| | Ребята, спасибо, улыбнуло отменно =)
Никогда не думал, что сессию может прокешировать браузер
Делаем файл logout.php
<?php
session_start();
//Очистить даннык сеанса для текущего сценария.
$_SESSION = array();
//Удалить печенюшкуку, соответствующую SID
@unset($_COOKIE[session_name()]);
//Уничтожить хранилище сессии
session_destroy();
//К пример, в куках у нас есть хеш пароля и ID юзера, уничтожаем их! Тоеже самое делаем с отсальными куками.
setcookie('password');
setcookie('id');
//Посылаем юзверя туда, откуда он пришел
header("Location: ".getenv("HTTP_REFERER"));
?>
|
| |
|
|
|
|
|
|
|
для: cyberface
(27.06.2006 в 22:32)
| | Спасибо всем за помощь, проблема решена. | |
|
|
|
|
|
|
|
для: cyberface
(27.06.2006 в 22:32)
| | Кешируется не сессия а страница | |
|
|
|