Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Http Authentification и PHP |

24.04.2007, 22:20
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
Http Authentification и PHP
Делаю авторизацию для админки одного портала. Использую для получения пары login/pass Http-Авторизацию.
Если со входом в систему все работает нормально, то с выходом чет не работает:
Для выхода использую ссылку index.php?logout=true, при этом пользователь получает в ответ:
HTTP/1.0 401 Unauthorized
Status: 401 Unauthorized
WWW-Authenticate: Basic realm="Administration area"
После чего у браузера, по идее, желание отправлять аутентификационную информацию должно пропасть...
Но нет... Нажимаю Cancel, вижу страницу с информацией о ошибке аторизации. Подправляю в адресной строке index.php?logout=true на index.php и, о чудо, я опять в админке...
Собственно вопрос: как организовать нормальный выход из системы, не используя дополнительной информации типа кукисов или сессий?
|
|
|

24.04.2007, 22:33
|
|
Участник форума
Регистрация: 25.07.2005
Сообщений: 246
Провел на форуме: 457850
Репутация:
174
|
|
Попробуй слать юзера на index.php пост-формой, в постварах сунь идентификатор логаута через скрытый инпут.
|
|
|

24.04.2007, 23:33
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
При логауте, тебе нужно снова послать запрос на авторизацию, и когда появится окно, не вводя ничего, нажать ОК, а после этого, скрипт должен сообщить об удачной авторизации.
Последний раз редактировалось hidden; 24.04.2007 в 23:37..
|
|
|

25.04.2007, 08:33
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
PHP код:
<?php
$username = $PHP_AUTH_USER;
$password = $PHP_AUTH_PW;
cfunction authenticate() {
Header("WWW-authenticate: Basic realm=\"Restrict
(".strftime("%r",time()).")\"");
Header("HTTP/1.0 401 Unauthorized");
echo "You must enter a valid login ID and password to access
this resource\n";
exit;
}
if($logout==1) {
setcookie("login","off");
$PHP_SELF =
str_replace("logout=1","",$PHP_SELF);
header("Location: $PHP_SELF");
exit();
}
if(!isset($username) && !isset($password) ||
$login=="off") {
setcookie("login","on");
authenticate();
} else {
/*
Authtentication code here
*/
if(!$auth) {
authenticate();
}
else setcookie("login","on");
}
?>
Hi <?=$PHP_AUTH_USER?> you are logged in :-)
<a href="<?=$PHP_SELF?>?logout=1">Click here to
logout</a>
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
|
|
|

25.04.2007, 11:24
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
В итоге сделал обычную авторизацию с использованием сессий (логин и пасс беру через WWW-Authenticate - так хотел заказчик), но вопрос остается открытым:
Возможно ли сделать нормальный выход без помощи дополнительных довесков?
|
|
|

25.04.2007, 18:20
|
|
Участник форума
Регистрация: 25.07.2005
Сообщений: 246
Провел на форуме: 457850
Репутация:
174
|
|
Ну вот я написал вариант без кукисов и сессий - должно работать.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|