[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Базовая аутентификация
Georg-71
Сделал под свою админку аутентификацию для входа. Делал с урока (Базовая аутентификация). Но при проверке постоянно выбрасывает на окно ввода логина и пароля.
Помогите пожалуйста разобраться huh.gif



Спустя 1 минута, 32 секунды (26.01.2011 - 12:28) alex12060 написал(а):
Код скинь.

Спустя 11 минут, 23 секунды (26.01.2011 - 12:40) Georg-71 написал(а):
<?php


if(empty($_SERVER['PHP_AUTH_USER']))
{
header('WWW-Authenticate: Basic realm="Administrative resource"');
header("HTTP/1.0 401 Unauthorised");
exit();
}

include 'auth.php';
$key = false;


foreach($admins as $admin => $password)
if($_SERVER['PHP_AUTH_USER'] === $admin && md5($_SERVER['PHP_AUTH_PW']) === $password)
$key = true;

if(empty($key))
{
header('WWW-Authenticate: Basic realm="Administrative resource"');
header ('HTTP/1.0 401 Unauthorized');
exit();
}


А это код файла AUTH.php

<?php


$admins = array(
'FLADO' => '63a9f0ea7bb98050796b649e85481845', // FLADO=> FLADO
'123456' => 'e10adc3949ba59abbe56e057f20f883e',
);

Спустя 6 минут, 51 секунда (26.01.2011 - 12:47) Snus написал(а):
Georg-71
Да ну нафик о.О

Ну уж если и делать таким изащренным способом аутентификацию, то делай так

<?php

if(empty($_SERVER['PHP_AUTH_USER'])){
header('WWW-Authenticate: Basic realm="Administrative resource"');
header("HTTP/1.0 401 Unauthorised");
exit();
}

include 'auth.php';
$key = false;

$user = $_SERVER['PHP_AUTH_USER'];
$pwd = md5($_SERVER['PHP_AUTH_PW']);

if(isset($admins[$user]) && $admins[$user] == $pwd) $key = true;

if(empty($key)){
header('WWW-Authenticate: Basic realm="Administrative resource"');
header ('HTTP/1.0 401 Unauthorized');
exit();
}

?>

Спустя 4 минуты, 55 секунд (26.01.2011 - 12:52) Georg-71 написал(а):
После уроков Попова пробую Все приводить в порядок. Вот сдесь нашел уроки и делал по ним.

Спустя 5 минут, 49 секунд (26.01.2011 - 12:57) alex12060 написал(а):
А ты попробуй делать не таким способом. И кстати, там вроде еще можно сделать с помощью htpasswd

Спустя 15 секунд (26.01.2011 - 12:58) twin написал(а):
Там есть косячек небольшенький. Вот это
$_SERVER['PHP_AUTH_USER'] === $admin 
не будет работать при логине, состоящем из одних цифр. Строго равно нужно поменять на просто равно. А вообще Snus предложил более рациональный вариант.

Кстати, а чем этот способ так уж "изащренн"?

Спустя 8 минут, 22 секунды (26.01.2011 - 13:06) Snus написал(а):
twin
Мог бы и не заметить ляп в слове smile.gif
alex12060 предложил вариант менее "изОщренный"


Спустя 16 минут, 56 секунд (26.01.2011 - 13:23) twin написал(а):
Ну способ с htpasswd не совсем удобен. Во первых придется разносить по папкам общедоступные и закрытые файлы. Но это не главное. Главное то, что не совсем удобно менять юзеров.

Спустя 27 минут, 33 секунды (26.01.2011 - 13:50) Georg-71 написал(а):
Спасибо ша попробую вариант от Snus . А вообще огромное спасибо за помощ Юзеру.

Спустя 17 минут, 57 секунд (26.01.2011 - 14:08) Georg-71 написал(а):
Warning: Cannot modify header information - headers already sent by (output started at /****/admin/lock2.php:1) in /home2/mygadjet/public_html/sub_donbassatletic/admin/lock2.php on line 18

нача материться. Вот эти строки

header('WWW-Authenticate: Basic realm="Administrative resource"');
header ('HTTP/1.0 401 Unauthorized');

Спустя 3 минуты, 29 секунд (26.01.2011 - 14:12) Georg-71 написал(а):
А если есть более простой способ аутентификации то подскажи какой.

Спустя 50 минут, 10 секунд (26.01.2011 - 15:02) Snus написал(а):
Georg-71
Перед header не должно быть никакого вывода на экран. Сначала должны шапки посылаться.

Спустя 5 часов, 2 минуты, 27 секунд (26.01.2011 - 20:05) Georg-71 написал(а):
Чет скока не воевал я с этим скриптом у меня всеравно гонит ошибку. Ктознает подскажите где она может быть. Вот сам скрипт

<?php

if(empty($_SERVER['PHP_AUTH_USER'])){
header('WWW-Authenticate: Basic realm="Administrative resource"');
header("HTTP/1.0 401 Unauthorised");
exit();
}

include 'auth.php';
$key = false;

$user = $_SERVER['PHP_AUTH_USER'];
$pwd = md5($_SERVER['PHP_AUTH_PW']);

if(isset($admins[$user]) && $admins[$user] == $pwd) $key = true;

if(empty($key)){
header('WWW-Authenticate: Basic realm="Administrative resource"');
header ('HTTP/1.0 401 Unauthorized');
exit();
}

?>
:blink: :blink: ошибка в предпоследних двух строках header.

Спустя 25 минут, 5 секунд (26.01.2011 - 20:30) twin написал(а):
это BOM

Спустя 1 час, 13 минут, 56 секунд (26.01.2011 - 21:44) Georg-71 написал(а):
Спасибо ша попробую разобраться.

Спустя 14 минут, 16 секунд (26.01.2011 - 21:58) alex12060 написал(а):
twin

А тебя инклуд не смущает? Не факт что это БОМ.
Просто в инклуде дело, я специально посчитал, 18 строка это проверка, если ключик пустой. так-что, пускай он оптимизирует скрипт)

Спустя 4 минуты, 30 секунд (26.01.2011 - 22:02) twin написал(а):
headers already sent by (output started at /****/admin/lock2.php:1) in /home2/mygadjet/public_html/sub_donbassatletic/admin/lock2.php on line 18
Синим - источник ошибки. Тобишь сам хидер. А красным место, на которое он ругается. Считай.

Спустя 14 часов, 57 минут, 43 секунды (27.01.2011 - 13:00) Georg-71 написал(а):
Я уже сщвсем ниче не догоняю мне теперь постоянно кидает окно повторного ввода.

Спустя 20 минут, 30 секунд (27.01.2011 - 13:21) Snus написал(а):
Georg-71
Я написал простенький скрипт авторизации -> Смотри тут

Спустя 1 минута, 41 секунда (27.01.2011 - 13:22) twin написал(а):

Спустя 1 час, 44 минуты, 47 секунд (27.01.2011 - 15:07) Georg-71 написал(а):
Спасибо огромное ша попробую.
Быстрый ответ:

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