2013-05-27 3 views
0

Я немного новичок в кодировании php. И я пытаюсь пройти через главу в книге, посвященной теме HTTP-аутентификации.HTTP-аутентификация в локальной файловой системе

Но когда я запускаю этот код на своем локальном сервере WAMP, ящик снова появляется, даже если я правильно заполнил формы.

<?php 
$username = 'admin'; 
$password = 'letmein'; 

if (isset($_SERVER['PHP_AUTH_USER']) && 
    isset($_SERVER['PHP_AUTH_PW'])) 
{ 
    if ($_SERVER['PHP_AUTH_USER'] == $username && 
     $_SERVER['PHP_AUTH_PW'] == $password) 
     echo "You are now logged in"; 
    else die("Invalid username/password combination"); 
} 
else 
{ 
    header('WWW-Authenticate: Basic realm="Restricted Section'); 
    header('HTTP/1.0 401 Unauthorized'); 
    die ("Please enter your username and password"); 
} 
?> 

Так что же делать, чтобы браузер принял мой ответ?

Существует намек в книге:

Безопасность в современных браузерах становится строже и достигла точки, где вы не можете легко быть в состоянии проверить аутентификацию HTTP на локальную файловую систему, если вы не измените ваш настройки браузера. Это защитит вас от потенциально вредоносных файлов, которые вы можете загрузить с интернет-сайта (поскольку локальные файлы обычно представляют собой большие риски безопасности). Вместо этого, , если вы хотите написать код, который использует этот тип аутентификации, это один экземпляр , где вы можете предпочесть выполнить тестирование на удаленном сервере , используя подключение к Интернету.

Как я могу проверить свои php-скрипты на удаленном сервере? Или я могу изменить собственные настройки, чтобы позволить мне использовать эту функцию?

ответ

0

Это заявление - вздор; пока вы обращаетесь к файлу с использованием веб-сервера и URL-адреса, например http://localhost/..., а не file:///..., нет существенной разницы. Для написания кода вам не нужен «удаленный» сервер.

Проблема в этом случае вполне вероятно, что веб-сервер чувствует ответственность за обработку аутентификации, а ваш PHP-скрипт вообще не задействован. Вы можете подтвердить это, изменив значение realm и посмотрите, имеет ли он эффект в всплывающем окне браузера.

В противном случае, var_dump($_SERVER), чтобы подтвердить получаемые вами значения.

+0

Когда я эхо 'var_dump ($ _ SERVER)', я получаю много информации. Одна из информации заключается в том, что я использую «Ограниченный раздел» в Realm, и эта информация такова: «HTTP_CACHE_CONTROL»] => строка (9) «max-age = 0» Что я должен изменить в своем царстве к? –

Смежные вопросы