@sunnyrio

Почему при запуске php программы в браузере не появляется окно с предложением ввести логин и пароль?

При запуске php программы в браузере не появляется окно с предложением ввести логин и пароль. После первого неправильного ввода в окно авторизации программа не выдает заново окошко с предложением ввести логин и пароль а лишь пишет сообщение о том что введен неправильный логин или пароль, в чем дело как вернуть окно авторизации?
Вот сам код из книги O'reilly:
<?php // authenticate.php
require_once 'login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) die("Невозможно подключиться к MySQL: " . mysql_error());
mysql_select_db($db_database)
or die("Невозможно выбрать базу данных: " . mysql_error());
if (isset($_SERVER['PHP_AUTH_USER']) &&
isset($_SERVER['PHP_AUTH_PW']))
{
$un_temp = mysql_entities_fix_string($_SERVER['PHP_AUTH_USER']);
$pw_temp = mysql_entities_fix_string($_SERVER['PHP_AUTH_PW']);

$query = "SELECT * FROM users WHERE username='$un_temp'";
$result = mysql_query($query);
if (!$result) die("Сбой при доступе к базе данных: " . mysql_error());
elseif (mysql_num_rows($result))
{
$row = mysql_fetch_row($result);
$salt1 = "qm&h*";
$salt2 = "pg!@";
$token = md5("$salt1$pw_temp$salt2");

if ($token == $row[3]) echo "$row[0] $row[1]:
Привет, $row[0], теперь вы зарегистрированы под именем '$row[2]'";
else die("Неверная комбинация имя пользователя-пароль");
}
else die("неверная комбинация имя пользователя-пароль");
}
else
{
header('WWW-Authenticate: Basic realm="Restricted Section"');
header('HTTP/1.0401 Unauthorized');
die ("Пожайлуста, введите имя пользователя и пароль");
}

function mysql_entities_fix_string($string)
{
return htmlentities(mysql_fix_string($string));
}

function mysql_fix_string($string)
{
if (get_magic_quotes_gpc()) $string = stripslashes($string);
return mysql_real_escape_string($string);
}
?>
  • Вопрос задан
  • 256 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Будьте особенно внимательны при указании HTTP-заголовков. Для того, чтобы гарантировать максимальную совместимость с наибольшим количеством различных клиентов, слово "Basic" должно быть написано с большой буквы "B", регион (realm) должен быть взят в двойные (не одинарные!) кавычки, и ровно один пробел должен предшествовать коду 401 в заголовке HTTP/1.0 401.
php.net/manual/ru/features.http-auth.php
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@pudovMaxim
web-developer
if ($token == $row[3]) echo "$row[0] $row[1]:
Привет, $row[0], теперь вы зарегистрированы под именем '$row[2]'";
else die("Неверная комбинация имя пользователя-пароль");
}
else die("неверная комбинация имя пользователя-пароль");
}
else
{


Расставьте скобки и присмотритесь что к чему
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы