Я хочу использовать базовую аутентификацию в php (я использую Apache в качестве сервера, но я хочу проходить аутентификацию самостоятельно). Итак, я назначил роль сеансу, когда пользователь выполнил вход в систему. Если роль пуста, я буду спрашивать аутентификацию с кодом, который я нашел в php auth . Я делаю
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
В Apache аутентификация не требуется, только по моему php-коду.
Насколько я понял, я должен получить что-то вроде $_SERVER['PHP_AUTH_USER']
или $_SERVER['HTTP_AUTHORIZATION']
, ноесли я печатаю переменную $_SERVER
, эти атрибуты отсутствуют.
Я прошел эту ссылку , и я получил переменную HTTP_AUTHORIZATION
, если я установил
SetEnvIf Authorization "(. *)" HTTP_AUTHORIZATION = $ 1
, как они предлагают, но он пуст (честно говоря, я ожидал, что это не сработает, потому что это то, что я делаю в своем коде,apache не сделал что-то).
Ну, в конце концов, как я могу получить имя пользователя: пароль базовой аутентификации, используя только php-код, без настройки Apache? Это не может быть так сложно, я потерялся в стакане воды?
Спасибо всем
РЕДАКТИРОВАТЬ: Решение найдено: я новичок в php и, возможно, я сделалкакая-то глупая ошибка.
По сути, мой псевдокод был:
check_auth_variables_in_SERVER_and_set_role()
if ( still_no_role )
{
set header for login
exit # it will ask login
}
Теперь я изменился на:
if ( no PHP_AUTH_USER and other variables in SERVER)
{
set header for login
exit # it will ask login
}
check_auth_variables_in_SERVER_and_set_role()
if ( still_no_role )
{
echo "Login failed";
exit;
}
Не могли бы вы подробно объяснить разницу в двухструктуры кода? Я думаю, что я был немного смущен рабочим процессом
Спасибо всем