Например, $_SERVER["PHP_AUTH_USER"]
Пробовал функцию unset, но не помогло.
в начале админки есть код
if (!isset($_SERVER['PHP_AUTH_USER'])){
header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
header ("HTTP/1.0 401 Unauthorized");
exit();
}
то есть чтобы переавторизоватся мне где то из другого места кода нужно удалить элемент $_SERVER['PHP_AUTH_USER']
Ответ
Это интересный вопрос, и он оказывается немного сложнее, если прочитать не один только заголовок, но и сам текст вопроса.
Для ответа на него требуется понимание того, как в принципе работает РНР
поэтому ответа будет два:
Удалить элемент из суперглобального массив, разумеется, можно.
Но это вам не поможет.
Поскольку эти переменные заполняются заново с каждым запросом, из приходящих НТТР заголовков. То есть, на самом деле вопрос звучит, как
Можно ли заставить браузер не передавать определенный НТТР заголовок?
Ответ: нельзя.
HTTP basic authentication так устроена, что браузер передает логин и пароль с каждым запросом. Если он не будет их передавать, то РНР скрипт о них не узнает, и пользователь не сможет просмотреть запароленную страницу.
При этом механизма логаута в HTTP basic authentication не предусмотрено.
Можно только запросить пароль повторно, но если пользователь проигнорирует этот запрос, то браузер продолжит присылать старые логин и пароль. Лет 15 назад я довольно долго копал эту тему ,и даже сделал демо-страничку, которая разлогинивала-таки пользователя... но самые способные могли обнаружить, что этот трюк исполнялся с помощью банальной куки 8)
Комментариев нет:
Отправить комментарий