[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по аутентификации
Andreydial
Здрасте, опять же вопрос по книге. Имеем простенький код, не имеющий ничего общего с реальностью
PHP
<?php
$the_right_user 
'user';
$the_right_password 'password';
if(!isset(
$PHP_AUTH_USER))
    {
    
header("WWW-Authenticate: Basic realm=\"PHP book\"");
    
header("HTTP/1.0 401 Unauthorized");
    echo 
"cancelled by user\n";
    exit;
    }
else
    {
    if((
$PHP_AUTH_USER == 'user') && ($PHP_AUTH_PW == 'password'))
    print(
"The realm is yours<br>");
    else
    print(
"We don't need your kind<br>");
    }
    

Всплывающее окно всплывает, ввожу юзера и пассворд, опять появляется то же окно и только если отменить то работает сообщение echo "cancelled by user\n";
Что же тут не так?



Спустя 12 минут, 14 секунд (11.04.2009 - 13:31) sergeiss написал(а):
Для начала - откуда берется $PHP_AUTH_USER? Предполагается, что включены глобальные переменные? Скорее всего, они выключены на реальном сервере.
Затем. Для чего в echo прописан знак \n? Он там не нужен. Да и вообще можно обойтись без эхо, если написать
PHP
exit ("cancelled by user");

Спустя 16 минут, 15 секунд (11.04.2009 - 13:47) Andreydial написал(а):
Т.е. если глобальные переменные выключены, то авторизация не будет проходить? По поводу ехо или без эхо, то вопрос то ведь не в этом, эта часть кода ведь работает, просто в книге так написано, так и я написал.

Спустя 27 минут, 35 секунд (11.04.2009 - 14:15) sergeiss написал(а):
Если предположить (как оно и есть, скорее всего), что глобальные переменные выключены, то текст преобразуется в другой
PHP
if(!isset( $_SERVER['PHP_AUTH_USER'] ))
    {
    
header("WWW-Authenticate: Basic realm=\"PHP book\"");
    
header("HTTP/1.0 401 Unauthorized");
    echo 
"cancelled by user\n";
    exit;
    }
else
    {
    
$auth_user=$_SERVER['PHP_AUTH_USER'];
    
$auth_pw=$_SERVER['PHP_AUTH_PW'];
    if((
$auth_user == 'user') && ($auth_pw == 'password'))
    print(
"The realm is yours<br>");
    else
    print(
"We don't need your kind<br>");
    }

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

Спустя 1 минута, 31 секунда (11.04.2009 - 14:16) Andreydial написал(а):
спасибо, попробую.

Спустя 21 минута, 29 секунд (11.04.2009 - 14:38) Kuliev написал(а):
Цитата (Andreydial @ 11.04.2009 - 10:18)
Здрасте, опять же вопрос по книге. Имеем простенький код, не имеющий ничего общего с реальностью
PHP
<?php
$the_right_user 
= 'user';
$the_right_password = 'password';
if(!isset(
$PHP_AUTH_USER))
    {
    header("WWW-Authenticate: Basic realm=\"PHP book\"");
    header("HTTP/1.0 401 Unauthorized");
    echo "cancelled by user\n";
    exit;
    }
else
    {
    if(($PHP_AUTH_USER == 'user') && ($PHP_AUTH_PW == 'password'))
    print("The realm is yours<br>");
    else
    print
("We don't need your kind<br>");
    }

Всплывающее окно всплывает, ввожу юзера и пассворд, опять появляется то же окно и только если отменить то работает сообщение echo "cancelled by user\n";
Что же тут не так?

Это код пример базовой авторизации! За работу механизма так называемой базовой авторизации на стороне сервера отвечает не какое-то специфическое ПО, а сам сервер.

Спустя 1 день, 20 часов, 16 минут, 19 секунд (13.04.2009 - 10:54) Andreydial написал(а):
Совсем запутался, так это сервер не формирует правильный ответ?

Спустя 1 день, 3 часа, 19 минут, 38 секунд (14.04.2009 - 14:13) Kuliev написал(а):
Цитата (Andreydial @ 13.04.2009 - 07:54)
Совсем запутался, так это сервер не формирует правильный ответ?

Более подробную информацию читай ТУТ
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.