http аутентификация, php 5.3
Мне нравится эта простая проверка подлинности http для некоторых некритических страниц.
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text, der gesendet wird, falls der Benutzer auf Abbrechen drückt';
exit;
} else {
echo "<p>Hallo {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>Sie gaben {$_SERVER['PHP_AUTH_PW']} als Passwort ein.</p>";
}
?>
Сейчас я пытаюсь реализовать его на сервере с php 5.3, и он не работает. В чем дело?
Я набираю имя и пароль, нажимаю ввод и страницы снова показывают мне диалог. Нет значений в $_SERVER['PHP_AUTH_USER'].
2 ответа
Я испытываю ту же проблему. По моему мнению, это старая версия php, которая не работает на php 5.5 и выше. Вам нужно будет найти более новую версию php.
Со страницы HTTP-аутентификации на PHP на php.net:
Начиная с PHP 4.3.0, чтобы кто-то не мог написать скрипт, который раскрывает пароль для страницы, которая была аутентифицирована с помощью традиционного внешнего механизма, переменные PHP_AUTH не будут установлены, если для этой конкретной страницы включена внешняя аутентификация и безопасная режим включен. Независимо от этого, REMOTE_USER может использоваться для идентификации внешне аутентифицированного пользователя. Таким образом, вы можете использовать $_SERVER['REMOTE_USER'].
Возможно, это относится к этому делу. (только заметил, что это старый вопрос:)