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

$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()

 

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

 

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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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