Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Авторизация и ссылка Выход ?
Форумы портала PHP.SU » PHP » Программирование на PHP » Авторизация и ссылка Выход ?

Страниц (1): [1]
 

1. Viper - 17 Февраля, 2007 - 11:49:22 - перейти к сообщению
собстно здесь на сайте в примерах есть авторизация с использованием PHP_AUTH.

вопрос как сделать так чтобы при нажатии на ссылку выход, а потом на Вход снова запрашивался логин/пароль ??
2. valenok - 17 Февраля, 2007 - 12:23:49 - перейти к сообщению
$_SESSION = Array(); session_destroy();
3. -SCHATTEN- - 20 Февраля, 2007 - 19:41:40 - перейти к сообщению
Если там используется $_SESSION то при входе он создает идентефикатор сессии... и при последующем входе (без уничтожения этого идентификатора) он берет старый и заходит..

Поэтому надо просто мделать уничтожение этой сессии:
valenok пишет:
$_SESSION = Array(); session_destroy();


4. Viper - 21 Февраля, 2007 - 08:30:40 - перейти к сообщению
а это справедливо ли для HTTP Basic Auth ?
5. evgenijj - 21 Февраля, 2007 - 08:38:10 - перейти к сообщению
При HTTP авторизации создаются две переменные
$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']
Из книги Антона Орлова "PHP: полезные приемы"
Цитата:

Однако переменные $PHP_AUTH_USER и $PHP_AUTH_PW - не простые. Если они один раз были определены, то впоследствии они передаются всем web-страницам, которые загружаются в то же самое окно браузера, где произошла авторизация! Иными словами, если по каким-то причинам требуется проверять логин и пароль посетителя на каждой из страниц сайта (скажем, выводить разную информацию авторизованным и неавторизованным посетителям), то каждый раз запрашивать эти данные не нужно - достаточно использовать значения переменных $PHP_AUTH_USER и $PHP_AUTH_PW. Значения данных переменных теряются в случае закрытия окна браузера, в котором изначально произошла авторизация (а в другие окна они и не передаются). При выходе за пределы виртуального сервера, на котором произошла авторизация (обычно его границы совпадают с границами аккаунта), данные переменные перестают передаваться страницам, однако при повторном входе на исходный адрес вновь становятся доступными (это обеспечение безопасности - за пределами вашего виртуального сервера логины и пароли ваших посетителей никто узнать из их браузеров не сможет).

Соответственно можно попробовать
unset( $_SERVER['PHP_AUTH_USER'] );
unset( $_SERVER['PHP_AUTH_PW'] );
6. Viper - 21 Февраля, 2007 - 10:00:40 - перейти к сообщению
почему то не работает.
ссылка вида ?action=exit

if ((isset($_GET['action'])) && ($_GET['action'] != "")) {
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);
header("Location: ../index.php");
}
т.е. header("Location: ../index.php"); - работает, но не работает unset для переменных
7. evgenijj - 21 Февраля, 2007 - 11:38:05 - перейти к сообщению
У меня работает:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. if ( (isset($_GET['action'])) and ($_GET['action'] == "exit") )
  5. {
  6.     unset($_SERVER["PHP_AUTH_USER"]);
  7.     unset($_SERVER["PHP_AUTH_PW"]);
  8. }
  9.  
  10. if ( isset($_SERVER["PHP_AUTH_USER"])
  11.      and ($_SERVER["PHP_AUTH_USER"] == "login")
  12.      and ($_SERVER["PHP_AUTH_PW"] == "pass") )
  13. {
  14.     echo "<p >Вы вошли в защищенную зону</p>";
  15.     echo "<p ><a href='auth2.php'>Следующая страница</a></p>";
  16.     echo "<p ><a href='auth.php?action=exit'>Выйти</a></p>";
  17. }
  18. else
  19. {
  20.     Header("WWW-Authenticate: Basic realm=\"Защищенная зона\"");
  21.     Header("HTTP/1.0 401 Unauthorized");
  22.     // Если пользователь нажал кнопку "Отмена"
  23.     exit("<p >Нет доступа</p>");
  24. }
  25.  
  26. ?>
  27.  

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. if ( isset($_SERVER["PHP_AUTH_USER"])
  5.      and ($_SERVER["PHP_AUTH_USER"] == "login")
  6.      and ($_SERVER["PHP_AUTH_PW"] == "pass") )
  7. {
  8.     echo "<p >Вы находитесь в защищенной зоне</p>";
  9.     echo "<p ><a href='auth.php'>Предыдущая страница</a></p>";
  10. }
  11. else
  12. {
  13.     exit("<p >Нет доступа</p>");
  14. }
  15.  
  16. ?>
  17.  
8. -SCHATTEN- - 22 Февраля, 2007 - 18:27:21 - перейти к сообщению
Viper пишет:
почему то не работает.
ссылка вида ?action=exit

if ((isset($_GET['action'])) && ($_GET['action'] != "")) {
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);
header("Location: ../index.php");
}
т.е. header("Location: ../index.php"); - работает, но не работает unset для переменных


Вот этой скобки там быть недолжно (отмечена красным) !


 

Powered by ExBB FM 1.0 RC1