Перейти к контенту

$PHP_AUTH_USER не передаётся.


Рекомендуемые сообщения

Вот скрипт:

 

<?php

 

function правельный_пароль() {

 

global $PHP_AUTH_USER,$PHP_AUTH_PW;

 

if ($PHP_AUTH_USER=="qqw" && $PHP_AUTH_PW=="wwq")

 

return 1;

 

return 0;

 

}

 

 

 

function скажи_пароль() {

 

if (!правельный_пароль())

 

{

 

Header("WWW-Authenticate: Basic realm=\"проверка карточки\"");

 

Header("HTTP/1.0 401 Unauthorized");

 

exit;

 

}

 

}

 

скажи_пароль();

 

echo "Добро пожаловать";

 

?>

 

<html>

 

<h1>Проверка</h1>

 

<p1>Вы прошли проверку пароля<p1>

 

</html>

 

Я ввожу логин и пароль. Но вход не происходит, выводит сообщение повторно.

 

Может что то в настройках php.ini

Ссылка на комментарий
Поделиться на других сайтах

Во-первых, названия функций лучше (и правильнее) писать на английском :D

Во-вторых, ты логин и пароль-то верные вводишь?

 

У меня все работает...

Ссылка на комментарий
Поделиться на других сайтах

Да они на английском, это для упрощения. ЧТоб понять о чём реч. К примеру скажи_пароль у меня ska_par()

 

пароль ввожу правельно. Не работет на моём домашнем серваке на других работает, что то с настройками.

Ссылка на комментарий
Поделиться на других сайтах

Попробуйте массив $_SERVER. Массив глобальный сразу, так что внутри функций global $_SERVER прописывать не надо. Переменные ваши: $_SERVER['PHP_AUTH_USER']) и $_SERVER['PHP_AUTH_PW']

 

пробуйте.

Ссылка на комментарий
Поделиться на других сайтах

if ($PHP_AUTH_USER=="qqw" && $PHP_AUTH_PW=="wwq")

 

return 1;

 

return 0;

Это я чего-то не понимаю? Зачем возвращать единицу, а затем нуль?

Добавлено в [mergetime]1108321776[/mergetime]

Понял. Ступил. Просто обычно услови со скобками пишут, либо, если без скобок, то в одну строчку...

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

У меня обратная проблема.

вот такой код

if (substr($SERVER_SOFTWARE, 0, 9) == 'Microsoft' &&
   !isset($PHP_AUTH_USER) &&
   !isset($PHP_AUTH_PW) &&
   substr($HTTP_AUTHORIZATION, 0, 6) == 'Basic '
  )
{
 list($PHP_AUTH_USER, $PHP_AUTH_PW) =
   explode(':', base64_decode(substr($HTTP_AUTHORIZATION, 6)));
}
if ($PHP_AUTH_USER != 'user' || $PHP_AUTH_PW != 'pass')
{
  header('WWW-Authenticate: Basic realm="Realm-Name"');
 if (substr($SERVER_SOFTWARE, 0, 9) == 'Microsoft')
   header('Status: 401 Unauthorized');
 else
   header('HTTP/1.0 401 Unauthorized');
 echo '<h1>ÈÄÈ ÍÀÕ!!!</h1>';
 echo 'Âû íå àâòîðèçîâàííû.';
 exit;
}
else
{ Основной код страницы }

Работает без проблем на локальном серваке и на нескольких хостингах. А на одном не работает. Код стандартный. Взят из книжки.....

По этому поводу нашла вот

HTTP-Аутентификация в PHP возможна только в том случае, когда он выполняется как модуль веб-сервера Apache, и, соответственно, недоступна для CGI-версии. Ваш скрипт может использовать функцию header() для того, чтобы отправить браузеру клиента сообщение "Authentication Required", что в свою очередь приведет к появлению диалогового окна для ввода имени пользователя и пароля. После того как клиент ввел свое имя и пароль, скрипт будет вызван повторно, но уже с предопределенными переменными PHP_AUTH_USER, PHP_AUTH_PW и AUTH_TYPE, которые соответственно содержат имя пользователя, пароль и тип аутентификации. Эти переменные могут быть найдены в массиве $_SERVER и $HTTP_SERVER_VARS. В настоящее время поддерживается только "Basic"-аутентификация. Также вы можете ознакомится с более детальным описанием функции header().

 

Но по моему в случаи проблемы вообще не должно ввыводиться диалоговое окно.... Кто нибудь подскажет в чем дело ??? :D

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

2raizus

вот ответ на Твой вопрос:

HTTP-Аутентификация в PHP возможна только в том случае, когда он выполняется как модуль веб-сервера Apache, и, соответственно, недоступна для CGI-версии

 

2porcelanosa попробуй на проблемном хостинге следующее:

строку

list($PHP_AUTH_USER, $PHP_AUTH_PW) =

  explode(':', base64_decode(substr($HTTP_AUTHORIZATION, 6)));

 

заменить на

list($PHP_AUTH_USER, $PHP_AUTH_PW) =

  explode(':', substr($HTTP_AUTHORIZATION, 6));

если получится - объясню посему...

Ссылка на комментарий
Поделиться на других сайтах

2raizus

вот ответ на Твой вопрос:

HTTP-Аутентификация в PHP возможна только в том случае, когда он выполняется как модуль веб-сервера Apache, и, соответственно, недоступна для CGI-версии

 

2porcelanosa попробуй на проблемном хостинге следующее:

строку

list($PHP_AUTH_USER, $PHP_AUTH_PW) =

  explode(':', base64_decode(substr($HTTP_AUTHORIZATION, 6)));

 

заменить на

list($PHP_AUTH_USER, $PHP_AUTH_PW) =

  explode(':', substr($HTTP_AUTHORIZATION, 6));

если получится - объясню посему...

 

Ну диалог то он показывает. Т.е. походу аутнетефикация работает... Попробовала твой совет.. Не помогло ;)(

Вышла сейчас из положения написав свой модуль аутентефикации. На MySQL

Но все равно интересно. Почему же не работает. :D)

Спасибо за ответ

Ссылка на комментарий
Поделиться на других сайтах

>>оффтоп

Да они на английском, это для упрощения. ЧТоб понять о чём реч. К примеру скажи_пароль у меня ska_par()

 

А вот потом когда программер правит/добавляет чужой код и звучат дикие громкие маты...

 

Обозначение имен в коде русскими словами признак очччень плохого тона...

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.