Почему поле Basic AUTH постоянно появляется после предоставления правильного пользователя / pw?

Я пишу очень простой сценарий авторизации, который просто использует заголовок PHP, чтобы предотвратить доступ других администраторов к другим пользователям. Этот скрипт PHP просто называется authorize.php и включен в другие файлы через

<?php require_once('authorize.php'); ?>

перед оставшимся HTML-кодом.

Вот сценарий:

<?php
//User name and password for authentication
$username = 'rock';
$password = 'roll';
//these arent the real passwords of course...

if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || ($_SERVER['PHP_AUTH_USER'] != $username) || ($_SERVER['PHP_AUTH_PW'] != $password)) {
//The user name/password are incorrect so send the authentication headers
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm= "Guitar Wars" ');
exit('<h2>Guitar Wars</h2>Sorry, but you do not have permission to view this page');
}
?>

И это все. Это совсем не причудливо, но по какой-то причине правильный ввод пользователя / pw просто вызывает всплывающее окно AUTH каждый раз.

Я обнюхал ответ, и хотя я нашел несколько похожих проблем, ни одна из них не решила его. Например:
этот
но мои заголовки в операторе if …
или же этот
в котором вопрос не был на самом деле ответил …
Я даже пытался войти в это ..

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

в .htaccess корневого каталога, основанного на чем-то еще, что я нашел, но это не помогло, и я, честно говоря, даже не знаю, что он делает …

Я проверил информацию о php, похоже, это CGI / fastCGI.

Что здесь не так? Я в значительной степени скопировал вербатный код из учебника, по которому я учусь (я профессор английского, а не программист, так что будьте осторожны со мной)

0

Решение

Я нашел ответ на свою проблему после 2 дней поиска … Моя идея редактировать файл .htaccess была только частично верна. Мне нужно было включить это в файл .htaccess

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>

и затем в моем сценарии PHP, выше, где я сделал заголовки, включите это:

if(preg_match('/Basic+(.*)$/i', $_SERVER['REDIRECT_HTTP_AUTHORIZATION'], $matches))
{
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['REDIRECT_HTTP_AUTHORIZATION'], 6)));
}

Я только начинающий, поэтому я абсолютно не знаю, что из этого получается, но, эй, это решило проблему. Если у других возникла эта проблема, позвольте мне остановиться на некоторых других вещах, которые я заметил, чтобы вы могли сравнить свою ситуацию с моей.

  1. У меня есть аккаунт на ipage, и именно этим я и занимаюсь. Вроде бы Apache 2.
  2. phpinfo показывает, что работает FastCGI / CGI
  3. Вызов var_dump для $ _SERVER не показал ни индексы PHP_AUTH_USER, ни PHP_AUTH_PW, хотя он действительно показал REMOTE_USER, который, по-видимому, сохранял хотя бы ввод имени пользователя.
  4. Я нашел ответ Вот.
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector