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

Форум PHP

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

 

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

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

тема: Выход из системы, после авторизации
 
 автор: Prorok   (27.06.2006 в 00:31)   письмо автору
 
 

Есть скрипт авторизации на сайте. После ввода логина и пароля этот же скрипт выводит пользователю какую-либо информацию, а так же ссылку "Logout". После нажатия на эту ссылку, срабатывает другой скрипт, который убивает сессию и возвращает пользователя на страницу авторизации.
Проблема в следующем: если нажать "Back" в броузере или на мыши и вернуться на страницу, где пользователь видел какую-либо информацию, то он вновь считается авторизовавшимся. Как сделать так, чтобы, если пользователь после "Логаута" с сайта нажмет "Back", а потом обновит данные в броузере, он не считался авторизовавшимся и получал стандартное приглашение авторизоваться?
Заранее благодарю за потраченное на мой, скорее всего глупый, вопрос.

P.S. Все устроено на сессиях и MySQL. Первый скрипт, после удачной авторизации, обновляет базу и ставит пользователю маркер в виде цифры 1 в поле online. Скрипт logout, в свою очередь, обновляет базу, ставит пользователю маркер 0, после чего закрывает сессию.

   
 
 автор: valenok   (27.06.2006 в 00:35)   письмо автору
 
   для: Prorok   (27.06.2006 в 00:31)
 

Обратитесь в раздед Java Script
и спросите что нибудь что очищает историю браузера

   
 
 автор: Prorok   (27.06.2006 в 00:40)   письмо автору
 
   для: valenok   (27.06.2006 в 00:35)
 

Беда в том, что на JavaScript'е эту проблему решить не так и сложно. Меня интересует решение такой проблемы именно на PHP, если такое, конечно, возможно.

   
 
 автор: valenok   (27.06.2006 в 00:44)   письмо автору
 
   для: Prorok   (27.06.2006 в 00:40)
 

Я думаю что невозможно.

   
 
 автор: CrazyAngel   (27.06.2006 в 00:44)   письмо автору
 
   для: Prorok   (27.06.2006 в 00:40)
 

Здесь надо просто отключить хеширование страниц помоему =)))

Это на стороне клиента =)

   
 
 автор: Prorok   (27.06.2006 в 00:54)   письмо автору
 
   для: CrazyAngel   (27.06.2006 в 00:44)
 

Отключение хешировения спасет ситуацию только в эксплорере, да и то не лучшим способом.

   
 
 автор: Саня   (27.06.2006 в 01:10)   письмо автору
 
   для: CrazyAngel   (27.06.2006 в 00:44)
 

Хеширование страниц? Это, простите, что такое?

   
 
 автор: CrazyAngel   (27.06.2006 в 01:12)   письмо автору
 
   для: Саня   (27.06.2006 в 01:10)
 

Я забыл как это точно называется =)))

Ну это когда страница остается в памяти или что-то типо того =)

   
 
 автор: Саня   (27.06.2006 в 01:15)   письмо автору
 
   для: CrazyAngel   (27.06.2006 в 01:12)
 

Это называется кешированием. Нужно не очищать кеш, а наоборот - закешировать страницу, которая выдаётся неавторизованному посетителю, чтобы при нажатии кнопри "Назад" бралась именно та страница. В опере - хочешь, не хочешь, все страницы кешируются принудительно.

   
 
 автор: CrazyAngel   (27.06.2006 в 01:17)   письмо автору
 
   для: Саня   (27.06.2006 в 01:15)
 

=))) звучит похоже =)))

Вот и написал =)))

кеширование - хеширование

Хотя это совершенно разные вещи =(

=))))

   
 
 автор: cheops   (27.06.2006 в 01:48)   письмо автору
 
   для: Prorok   (27.06.2006 в 00:31)
 

А вы как сессию уничтожаете?

   
 
 автор: Prorok   (27.06.2006 в 07:14)   письмо автору
 
   для: cheops   (27.06.2006 в 01:48)
 

Сначала уничтожаю все переменные, переданные через массив $_SESSION, потом session_destroy().

P.S. На счет хеширования... я понял, что человек хотел спросить, поэтому на автомате также ответил.

   
 
 автор: valenok   (27.06.2006 в 09:49)   письмо автору
 
   для: cheops   (27.06.2006 в 01:48)
 

А что толку от удаления сессий если страница кешируется?

   
 
 автор: Prorok   (27.06.2006 в 10:12)   письмо автору
 
   для: valenok   (27.06.2006 в 09:49)
 

No comments...

   
 
 автор: valenok   (27.06.2006 в 11:22)   письмо автору
 
   для: Prorok   (27.06.2006 в 10:12)
 

Ну я вам сказал - лучше обратитесь к JavaScript
и спорсите чтото что очищает кеш браузера и стирает историю.
Хотя насчёт истории - лучше не стоит.

   
 
 автор: куч1963   (27.06.2006 в 18:03)   письмо автору
 
   для: 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");
}
?>

Или сделай двойной редирект

   
 
 автор: RV   (27.06.2006 в 20:25)   письмо автору
 
   для: куч1963   (27.06.2006 в 18:03)
 

>Проблема в следующем: если нажать "Back" в броузере или на мыши и вернуться на >страницу, где пользователь видел какую-либо информацию, то он вновь считается >авторизовавшимся

Страница отрисовывается как для авторизовавшегося пользователя. Если вы правильно очищаете сессию, то пользователь ничего не сможет сделать

   
 
 автор: cyberface   (27.06.2006 в 22:32)   письмо автору
 
   для: 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"));
?>

   
 
 автор: Prorok   (28.06.2006 в 12:01)   письмо автору
 
   для: cyberface   (27.06.2006 в 22:32)
 

Спасибо всем за помощь, проблема решена.

   
 
 автор: valenok   (28.06.2006 в 12:47)   письмо автору
 
   для: cyberface   (27.06.2006 в 22:32)
 

Кешируется не сессия а страница

   
Rambler's Top100
вверх

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