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

Форум PHP

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

 

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

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

тема: Убить Билла... т.е. "WWW-Authenticate: Basic" - авторизацию...
 
 автор: DDK   (17.03.2006 в 12:42)   письмо автору
 
 

Как сделать корректный LogOut ?! Пытался так:

unset($PHP_AUTH_USER);
unset($PHP_AUTH_PW);
header("HTTP/1.0 401 Unauthorized");
exit;

Но не получается... стоит нажать в браузере Назад и всё, мы снова авторизованы. Как быть ?

   
 
 автор: Artemy   (17.03.2006 в 12:54)   письмо автору
 
   для: DDK   (17.03.2006 в 12:42)
 

<?PHP
 $PHP_AUTH_USER 
"";
 
$PHP_AUTH_PW "";
?>

P.S. Когда Вы нажымаете НАЗАД, страница берется из кэша! Попробуйте вернуться назад и обновить ее.

   
 
 автор: DDK   (17.03.2006 в 13:28)   письмо автору
 
   для: Artemy   (17.03.2006 в 12:54)
 

И ничего не меняется... Я нажимаю Назад, обновляю - и всё, как буд то я и не выходил, работаю дальше...

Поставлю вопрос иначе - слышал, что через определённый заголовок (header) можно убить возможность отката на страницу назад... каким заголовком ? Т.е. убить кэш.

   
 
 автор: cheops   (17.03.2006 в 13:28)   письмо автору
 
   для: DDK   (17.03.2006 в 12:42)
 

Мне кажется это ни к чему не приведёт, так как переменные запоминает браузер - там помоему специальный HTTP-заголовок был для сброса, нужно будет порыться в RFC...

   
 
 автор: Trianon   (17.03.2006 в 13:56)   письмо автору
 
   для: cheops   (17.03.2006 в 13:28)
 

RFC-2617
Чтобы 401 Unauthorized сработал, его нужно дополнить WWW-Authenticate: Basic realm="..."
Уж коль говоришь, что доступ неавторизован, надо дать информацию о том, как его получать.

   
 
 автор: DDK   (17.03.2006 в 14:30)   письмо автору
 
   для: Trianon   (17.03.2006 в 13:56)
 

Хмм... хорошо, пишу так:

    unset($PHP_AUTH_USER);
    unset($PHP_AUTH_PW);
    header("WWW-Authenticate: Basic realm=\"Sitename\"");
    header("HTTP/1.0 401 Unauthorized");
    exit;

Результата ноль :( Стоит нажать Назад...

   
 
 автор: cheops   (17.03.2006 в 15:54)   письмо автору
 
   для: DDK   (17.03.2006 в 14:30)
 

Заголовок
<?php
header
("HTTP/1.0 401 Unauthorized");
?>

Всегда должен идти первым и "Назад" наверное мало - нужно перезагрузить страницу обязательно, чтобы браузер получил HTTP-заголовки.

   
 
 автор: DDK   (17.03.2006 в 16:20)   письмо автору
 
   для: cheops   (17.03.2006 в 15:54)
 

Хм... я пробовал после этого обновить страницу, но ничего не выходит... почему переменные $PHP_AUTH_USER и $PHP_AUTH_PW нельзя unset ?! А точнее меня интересует больше не почему, а как, если не так ? Собственно и тему я так назвал поэтому - убить авторизацию... т.е. как убить эти две переменные...

   
 
 автор: Trianon   (17.03.2006 в 16:28)   письмо автору
 
   для: DDK   (17.03.2006 в 16:20)
 

>Хм... я пробовал после этого обновить страницу, но ничего не
>выходит... почему переменные $PHP_AUTH_USER и $PHP_AUTH_PW
>нельзя unset ?! А точнее меня интересует больше не почему, а
>как, если не так ? Собственно и тему я так назвал поэтому -
>убить авторизацию... т.е. как убить эти две переменные...

В тех источниках, которые мне встречались, говорилось, что unset($PHP_AUTH_USER... $PHP_AUTH_PW) делать не нужно.
Что он делается сам путем генерации 401 Unauthorized.
Сам я с этим не экспериментировал.

   
 
 автор: Trianon   (17.03.2006 в 16:25)   письмо автору
 
   для: cheops   (17.03.2006 в 15:54)
 

>Заголовок ....HTTP/1.0 401 ....Всегда должен идти первым

С чего бы это?

Замечание: The HTTP status header line will always be the first sent to the client, regardless of the actual header() call being the first or not. The status may be overridden by calling header() with a new status line at any time unless the HTTP headers have already been sent.

Строка заголовка отклика "статус возврата" будет всегда отправлена первой, независимо от того, был первым соответствующий вызов функции header() или нет. Статус возврата может быть перекрыт повторным вызовом функции header() с новым статусом возврата в любой момент пока заголовки еще фактически не отправлены.

   
 
 автор: cheops   (17.03.2006 в 23:10)   письмо автору
 
   для: Trianon   (17.03.2006 в 16:25)
 

Хм... не знал, что PHP такой умный, сам заголовки сортирует... лучше конечно к этому не привыкать, чтобы правильно расставлять заголовки при работе с сокетами...

   
Rambler's Top100
вверх

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