raizus Опубликовано 13 Февраля 2005 Жалоба Поделиться Опубликовано 13 Февраля 2005 Вот скрипт: <?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 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DINI Опубликовано 13 Февраля 2005 Жалоба Поделиться Опубликовано 13 Февраля 2005 Во-первых, названия функций лучше (и правильнее) писать на английском Во-вторых, ты логин и пароль-то верные вводишь? У меня все работает... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
raizus Опубликовано 13 Февраля 2005 Автор Жалоба Поделиться Опубликовано 13 Февраля 2005 Да они на английском, это для упрощения. ЧТоб понять о чём реч. К примеру скажи_пароль у меня ska_par() пароль ввожу правельно. Не работет на моём домашнем серваке на других работает, что то с настройками. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 13 Февраля 2005 Жалоба Поделиться Опубликовано 13 Февраля 2005 Попробуйте массив $_SERVER. Массив глобальный сразу, так что внутри функций global $_SERVER прописывать не надо. Переменные ваши: $_SERVER['PHP_AUTH_USER']) и $_SERVER['PHP_AUTH_PW'] пробуйте. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
raizus Опубликовано 13 Февраля 2005 Автор Жалоба Поделиться Опубликовано 13 Февраля 2005 Скрипт рабочий, не работает только дома, что-то с натройками. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DINI Опубликовано 13 Февраля 2005 Жалоба Поделиться Опубликовано 13 Февраля 2005 if ($PHP_AUTH_USER=="qqw" && $PHP_AUTH_PW=="wwq") return 1; return 0;Это я чего-то не понимаю? Зачем возвращать единицу, а затем нуль? Добавлено в [mergetime]1108321776[/mergetime] Понял. Ступил. Просто обычно услови со скобками пишут, либо, если без скобок, то в одну строчку... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
raizus Опубликовано 14 Февраля 2005 Автор Жалоба Поделиться Опубликовано 14 Февраля 2005 Форма работает, а вот переменные не передаются. т.е. Окно вывода пишет, а пароль с логином не проглатывает. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
porcelanosa Опубликовано 5 Апреля 2005 Жалоба Поделиться Опубликовано 5 Апреля 2005 У меня обратная проблема.вот такой код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(). Но по моему в случаи проблемы вообще не должно ввыводиться диалоговое окно.... Кто нибудь подскажет в чем дело ??? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
kosha Опубликовано 13 Апреля 2005 Жалоба Поделиться Опубликовано 13 Апреля 2005 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));если получится - объясню посему... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
porcelanosa Опубликовано 14 Апреля 2005 Жалоба Поделиться Опубликовано 14 Апреля 2005 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));если получится - объясню посему...<{POST_SNAPBACK}> Ну диалог то он показывает. Т.е. походу аутнетефикация работает... Попробовала твой совет.. Не помогло (Вышла сейчас из положения написав свой модуль аутентефикации. На MySQLНо все равно интересно. Почему же не работает. )Спасибо за ответ Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Vic'er Опубликовано 20 Апреля 2005 Жалоба Поделиться Опубликовано 20 Апреля 2005 >>оффтопДа они на английском, это для упрощения. ЧТоб понять о чём реч. К примеру скажи_пароль у меня ska_par() А вот потом когда программер правит/добавляет чужой код и звучат дикие громкие маты... Обозначение имен в коде русскими словами признак очччень плохого тона... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.