собстно здесь на сайте в примерах есть авторизация с использованием PHP_AUTH.
вопрос как сделать так чтобы при нажатии на ссылку выход, а потом на Вход снова запрашивался логин/пароль ??
1. Viper - 17 Февраля, 2007 - 11:49:22 - перейти к сообщению
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: полезные приемы"
Соответственно можно попробовать
unset( $_SERVER['PHP_AUTH_USER'] );
unset( $_SERVER['PHP_AUTH_PW'] );
$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']
Из книги Антона Орлова "PHP: полезные приемы"
Цитата:
Однако переменные $PHP_AUTH_USER и $PHP_AUTH_PW - не простые. Если они один раз были определены, то впоследствии они передаются всем web-страницам, которые загружаются в то же самое окно браузера, где произошла авторизация! Иными словами, если по каким-то причинам требуется проверять логин и пароль посетителя на каждой из страниц сайта (скажем, выводить разную информацию авторизованным и неавторизованным посетителям), то каждый раз запрашивать эти данные не нужно - достаточно использовать значения переменных $PHP_AUTH_USER и $PHP_AUTH_PW. Значения данных переменных теряются в случае закрытия окна браузера, в котором изначально произошла авторизация (а в другие окна они и не передаются). При выходе за пределы виртуального сервера, на котором произошла авторизация (обычно его границы совпадают с границами аккаунта), данные переменные перестают передаваться страницам, однако при повторном входе на исходный адрес вновь становятся доступными (это обеспечение безопасности - за пределами вашего виртуального сервера логины и пароли ваших посетителей никто узнать из их браузеров не сможет).
Однако переменные $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 для переменных
ссылка вида ?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:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- {
- }
- and ($_SERVER["PHP_AUTH_USER"] == "login")
- and ($_SERVER["PHP_AUTH_PW"] == "pass") )
- {
- echo "<p >Вы вошли в защищенную зону</p>";
- echo "<p ><a href='auth2.php'>Следующая страница</a></p>";
- echo "<p ><a href='auth.php?action=exit'>Выйти</a></p>";
- }
- else
- {
- // Если пользователь нажал кнопку "Отмена"
- }
- ?>