Авторизация заголовка HTTP с использованием PHP - PullRequest
0 голосов
/ 28 мая 2011

Я пытаюсь добавить HTTP-аутентификацию на мою страницу администратора, используя PHP.Я дословно скопировал кучу разных примеров, и ни один из них не работает.Кто-нибудь знает, есть ли определенные вещи, которые вам нужно сделать на стороне сервера, или этот код не работает с более новыми версиями PHP?Пожалуйста, помогите!

Вот мой тестовый файл authorize.php.Я просто использую require_once для каждой страницы администратора.

<?php  
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        header('WWW-Authenticate: Basic realm="My Realm"');
        header('HTTP/1.0 401 Unauthorized');
        echo 'Text to send if user hits Cancel button';
        exit;
    } else {
        echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
        echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
    }
?>

Что происходит, когда авторизация просто всплывает снова и снова.PHP_AUTH_USER никогда не устанавливается.

Ответы [ 3 ]

1 голос
/ 26 июля 2016

Для других, кто сталкивался с этой проблемой, вы можете добавить правило перезаписи в .htaccess.

RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Базовая / дайджест-аутентификация HTTP будет работать на Godaddy с этим изменением.

1 голос
/ 28 мая 2011

Если ваш PHP работает как CGI / FastCGI, то вам не повезет.Попробуйте переключить его в режим без CGI.

0 голосов
/ 14 октября 2012

Вам необходимо выяснить, передают ли они его PHP, и какая переменная сервера содержит ваше имя пользователя.

Создайте небольшую тестовую страницу PHP, поместите в нее приведенный ниже код и загрузитеэто в каталог, который защищен .htaccess, т.е. где он запрашивает пользователя / pw.

Этот код покажет все переменные сервера, и вы увидите, какая из них содержит ваше имя пользователя, затемвместо этого используйте эту переменную:

foreach($_SERVER as $key_name => $key_value) {  
    print $key_name . " = " . $key_value . "<br>";
}

Я не думаю, что она передаст пароль, только пользователь.И вы все равно не хотите передавать пароль через веб-сайт.

...