[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: почему отсутствует $_SERVER['PHP_AUTH_USER']
aletych
Вот скрипт защиты файла паролем. Вводиш логин и пароль - опять тоже самое окно запроса. Вроди переменной $_SERVER['PHP_AUTH_USER'] вообще нету. Подскажите почему? на домашнем сервере всё работает, а на сервере провайдера нет. Может с настройками рнр что-то?
PHP
<?php 
include("blocks/bd.php"); 
if (!isset(
$_SERVER['PHP_AUTH_USER'])) 


Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); 
Header ("HTTP/1.0 401 Unauthorized"); 
exit(); 


else { 
if (!
get_magic_quotes_gpc()) { 
$_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']); 
$_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']); 


$query "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'"
$lst = @mysql_query($query); 

if (!
$lst

Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); 
Header ("HTTP/1.0 401 Unauthorized"); 
exit(); 


if (
mysql_num_rows($lst) == 0

Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); 
Header ("HTTP/1.0 401 Unauthorized"); 
exit(); 


$pass = @mysql_fetch_array($lst); 
if (
$_SERVER['PHP_AUTH_PW']!= $pass['pass']) 

Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); 
Header ("HTTP/1.0 401 Unauthorized"); 
exit(); 

}





Спустя 1 час, 10 минут, 21 секунда (13.08.2009 - 15:25) Kuliev написал(а):
Скорей всего символы чувствительны к регистру, и может быть что вы после логина ставите пробел и набираете пароль!

Спустя 2 часа, 6 минут, 28 секунд (13.08.2009 - 17:31) kirik написал(а):
Basic авторизация не работает, если php стоит как cgi. Совсем недавно наткнулся на эту неприятность.. Сделал такую замену:
Свернутый текст
PHP
function passwordProtect($username, $password)
{
    if(empty($_SESSION['admin']))
    {
        if(isset($_POST['name'], $_POST['pass']) && $_POST['name'] == $username && $_POST['pass'] == $password)
        {
            $_SESSION['admin'] = true;
            return true;
        }

        echo '<form method="post"><input type="text" name="name" /><br /><input type="password" name="pass" /><br /><input type="submit" value="Enter" /></form>';
        return false;
    }
    else
    
{
        return true;
    }

//     if(isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_USER'] == $username && $_SERVER['PHP_AUTH_PW'] == $password)
//     {
//         return true;
//     }
//     else
//     {
//         header('WWW-Authenticate: Basic realm="Login"', true);
//         header('HTTP/1.0 401 Unauthorized', true);
//         return false;
//     }
}

if(
passwordProtect('mylogin', 'mypassword'))
    header('Location: /index.php');
else
    exit('Даешь пароль!');

Спустя 7 минут, 56 секунд (13.08.2009 - 17:39) twin написал(а):
Цитата
Basic авторизация не работает, если php стоит как cgi.

Странно... Вот как cgi стоит...

Спустя 15 минут, 31 секунда (13.08.2009 - 17:55) kirik написал(а):
Цитата (twin @ 13.08.2009 - 09:39)
Странно... Вот как cgi стоит...

Вот ерунда.. у меня неделю назад отказывалась работать, а сейчас тоже работает.. Даже в мане пишут:
Цитата (http://us3.php.net/manual/en/features.http-auth.php)
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.

Цитата (http://www.php.ru/manual/features.http-auth.html)
HTTP-Аутентификация в PHP возможна только в том случае, когда он выполняется как модуль веб-сервера Apache, и, соответственно, недоступна для CGI-версии.

... unsure.gif
Быстрый ответ:

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