Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > авторизация к сайту


Автор: DeamonShan 11.6.2008, 08:57
Код

if ( $PHP_AUTH_USER != "admin" || $PHP_AUTH_PW != "fira" ) {
        header('WWW-Authenticate: Basic realm="'.$project.'"');
        header('HTTP/1.0 401 Unauthorized');
        die('<h1>Denied.</h1>');
}


логин и пароль ввожу правильно. на локалке нормально работает, на сервер залил не работает... все требует ввести логин и пароль...в чем трабла может быть??

Автор: Feldmarschall 11.6.2008, 09:18
ну, например, в CGI
иногда нужно документацию читать

Автор: Geol 11.6.2008, 09:37
Прежде всего надо проверить наличие переменных $PHP_AUTH_USER и $PHP_AUTH_PW. Если php установлен как cgi-интерпритатор, то их нет. (Для буквоедов - скорей всего нет)

Автор: Feldmarschall 11.6.2008, 09:43
ой, да. 
слона-то я и не приметил.
$_SERVER['PHP_AUTH_USER'] и пароль так же

Автор: DeamonShan 11.6.2008, 13:50
Код

if ( $_SERVER['PHP_AUTH_USER'] != "admin" || $_SERVER['PHP_AUTH_PW'] != "fira" ) {
        header('WWW-Authenticate: Basic realm="'.$project.'"');
        header('HTTP/1.0 401 Unauthorized');
        die('<h1>Denied.</h1>');
}


не помогло... smile

Добавлено через 1 минуту
Geol, я малость вас не понял где и как проверить эти интерпритаторы?

Автор: Feldmarschall 11.6.2008, 14:54
в phpinfo можно
server API

Автор: Wolf1994 11.6.2008, 17:19
DeamonShan, попробуйте:

Код

if ( $_POST['PHP_AUTH_USER'] != "admin" || $_POST['PHP_AUTH_PW'] != "fira" ) {
        header('WWW-Authenticate: Basic realm="'.$project.'"');
        header('HTTP/1.0 401 Unauthorized');
        die('<h1>Denied.</h1>');
}


IMHO, PHP_AUTH_USER и PHP_AUTH_PW передаются методом POST из формы и к серверному окружению не имеют отношения. Проблема могла быть вызвана тем, что на хостинге выключены глобальные переменные.

Для их включения можете воспользоваться таким скриптом: http://www.wolf-ware.ru/forum/id/868/1/registerglobals-on/

Удачи!

Автор: DeamonShan 11.6.2008, 17:51
Wolf1994, не помогло.... 

Автор: bobik02 11.6.2008, 18:02
Wolf1994, 
странно , вот у меня например register_globals = off
и нормально передаться 
$_SERVER['PHP_AUTH_USER'],
а при:
$_POST['PHP_AUTH_USER']  соответственно как и должно быть я получаю Notice: Undefined index 
---

Не передаются они методом POST  ! smile 

вот на чем опирается это утверждения:


http://www.ietf.org/rfc/rfc2617.txt
вот ключевое:
http://ua.php.net/manual/en/features.http-auth.php

http://ua.php.net/manual/en/reserved.variables.server.php

Цитата

...
 $_SERVER is an array containing information such as headers, paths, and script locations. 
...


А проблема как было замечено выше, кроется скорей всего в этом:
Цитата

...
When running under Apache or IIS (ISAPI on PHP 5) as module doing HTTP authentication this variable is set to the password provided by the user. 
...
the HTTP Authentication hooks in PHP are only available when it is running as an Apache module and is hence not available in the CGI version. 
...

Автор: DeamonShan 11.6.2008, 18:11
и как быть? что делать?

Автор: MoLeX 11.6.2008, 18:18
Цитата(DeamonShan @  11.6.2008,  18:11 Найти цитируемый пост)
и как быть? что делать? 

авторизация через куки, или же закрывай доступ через хтэсс

Автор: bobik02 11.6.2008, 18:25
Цитата(DeamonShan @  11.6.2008,  18:11 Найти цитируемый пост)
и как быть? что делать?

Разбираться  smile 

Да вариантов на самом деле много:
  •  HTTP авторизация без участия PHP.
  •  заставить работать HTTP-авторизацию при работе с PHP в режиме CGI
  •  Задуматься о недостатках HTTP-авторизации, и сделать иначе
  •  ...

Автор: DeamonShan 11.6.2008, 18:33
кукки, так кукки)))))))

Автор: Feldmarschall 11.6.2008, 19:51
Wolf1994, жжош  smile 

DeamonShan, судя по всему, server API ты так и не посмотрел?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)