Делаю авторизацию для админки одного портала. Использую для получения пары login/pass Http-Авторизацию. Если со входом в систему все работает нормально, то с выходом чет не работает: Для выхода использую ссылку index.php?logout=true, при этом пользователь получает в ответ: После чего у браузера, по идее, желание отправлять аутентификационную информацию должно пропасть... Но нет... Нажимаю Cancel, вижу страницу с информацией о ошибке аторизации. Подправляю в адресной строке index.php?logout=true на index.php и, о чудо, я опять в админке... Собственно вопрос: как организовать нормальный выход из системы, не используя дополнительной информации типа кукисов или сессий?
Попробуй слать юзера на index.php пост-формой, в постварах сунь идентификатор логаута через скрытый инпут.
При логауте, тебе нужно снова послать запрос на авторизацию, и когда появится окно, не вводя ничего, нажать ОК, а после этого, скрипт должен сообщить об удачной авторизации.
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>
В итоге сделал обычную авторизацию с использованием сессий (логин и пасс беру через WWW-Authenticate - так хотел заказчик), но вопрос остается открытым: Возможно ли сделать нормальный выход без помощи дополнительных довесков?