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'].

Возможно, это относится к этому делу. (только заметил, что это старый вопрос:)

Другие вопросы по тегам