Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Аутонтификация

291
26 января 2003 года
gufy
703 / / 08.01.2003
вот мой код аутентификации

 
Код:
if (!isset($PHP_AUTH_USER))
{
    header('WWW-Authenticate: Basic realm="Gufys SERVER"');
    header('HTTP/1.0 401 Unauthorized');
} elseif ($PHP_AUTH_USER=='gufy')
{
    print("it works!!!");
}


но это не работает. пробовал заменять на $SERVER['PHP_AUTH_USER'] - тот же эффект.
как ЭТО вообще положено делать?
250
26 января 2003 года
Joker
1.4K / / 20.02.2000
Цитата:
Originally posted by gufy
вот мой код аутентификации

 
Код:
if (!isset($PHP_AUTH_USER))
{
    header('WWW-Authenticate: Basic realm="Gufys SERVER"');
    header('HTTP/1.0 401 Unauthorized');
} elseif ($PHP_AUTH_USER=='gufy')
{
    print("it works!!!");
}


но это не работает. пробовал заменять на $SERVER['PHP_AUTH_USER'] - тот же эффект.
как ЭТО вообще положено делать?



http://detail.phpclub.net/2001-03-21.htm

583
29 января 2003 года
#define
150 / / 03.12.2002
Цитата:
Originally posted by gufy
вот мой код аутентификации

 
Код:
if (!isset($PHP_AUTH_USER))
{
    header('WWW-Authenticate: Basic realm="Gufys SERVER"');
    header('HTTP/1.0 401 Unauthorized');
} elseif ($PHP_AUTH_USER=='gufy')
{
    print("it works!!!");
}


но это не работает. пробовал заменять на $SERVER['PHP_AUTH_USER'] - тот же эффект.
как ЭТО вообще положено делать?



Вообще-то $_SERVER["PHP_AUTH_USER"] - Чувствуешь разницу?:) Но не в этом дело.. у тебя вообще код неправильный.
Попробуй так:

 
Код:
function auth()
{
  header("WWW-Authenticate: Basic realm=\"Secure\"");
  header("HTTP/1.0 401 Unauthorized");

}

Потом..
 
Код:
if(!isset($_SERVER["PHP_AUTH_USER"]) || !isset($_SERVER["PHP_AUTH_PW"])) auth();

Ну и т.д. С проблемой авторизация я разобрался.. в мануале по этому поводу все толково написано. А вот с logout'ом все никак не могу.. может кто подскажет как сделать logout из Basic авторизации без использования сессий и печенек?
291
29 января 2003 года
gufy
703 / / 08.01.2003
ВОТ мой код:

 
Код:
if($_SERVER["PHP_AUTH_USER"]!="gufy")
{
  header("WWW-Authenticate: Basic realm=localhost");
  header("HTTP/1.0 401 Unauthorized");
} else
{
    die("it sucks");
}

Оно 3 раза после введения правильного login'а снова выдает табличку, а затем просто грузит страницу.
В чем моя ошибка?
291
30 января 2003 года
gufy
703 / / 08.01.2003
ответьте плиз
583
30 января 2003 года
#define
150 / / 03.12.2002
Не мудри :) Чем тебе такой подход не нравится?:
Код:
function auth()
{
  header("WWW-Authenticate: Basic realm=\"localhost\"");
  header("HTTP/1.0 401 Unauthorized");
  #если нажата Отмена умереть
  exit;
}

if(!isset($_SERVER["PHP_AUTH_USER"]) || !isset($_SERVER["PHP_AUTH_PW"])) auth();
elseif($_SERVER["PHP_AUTH_USER"]==$user && $_SERVER["PHP_AUTH_PW"]==$pass)
  {
  #Успешно залогинился
  }
else
  {
  #Неверные логин или пароль
  auth();
  }
291
31 января 2003 года
gufy
703 / / 08.01.2003
#define
Ты вообще-то не обижайся, я твой код не взял, потому что он у меня не работал...
Как не работает у меня и этот...
Смотри, я взял все как есть.
Оно ведет себя так, как если бы не получало значений. Может, есть какие-нибудь специфические настройки сервера, которых на моем Apache нет? или php.ini?
291
01 февраля 2003 года
gufy
703 / / 08.01.2003
hey
583
01 февраля 2003 года
#define
150 / / 03.12.2002
Цитата:
Originally posted by gufy
#define
Оно ведет себя так, как если бы не получало значений. Может, есть какие-нибудь специфические настройки сервера, которых на моем Apache нет? или php.ini?



Специфических настроек сервера, которые могли бы влиять на поведение данного куска кода, нет. Не понимаю почему у тебя не работает..
До посылки хидеров ничего в браузер не выводишь? Переменные $user и $pass определил до использования?

291
01 февраля 2003 года
gufy
703 / / 08.01.2003
Вот мой код перед <html>

Код:
<?
include("lib_change.inc");
$user="gufy";
$pass="gufy";
if(!isset($_SERVER["PHP_AUTH_USER"]) || !isset($_SERVER["PHP_AUTH_PW"]))
{
    auth();
} elseif($_SERVER["PHP_AUTH_USER"]==$user && $_SERVER["PHP_AUTH_PW"]==$pass)
{
}
else
{
  auth();
}
?>


вот auth()
 
Код:
function auth()
{
  header("WWW-Authenticate: Basic realm=\"localhost\"");
  header("HTTP/1.0 401 Unauthorized");
  exit;
}

кстати, что такое BASICrealm? это просто надпись или на что-=то влияет?
а работает она так.
после трех раз ввода логина и пароля показывает пустую страницу, но с нужным адресом.
Иными словами, делает то что должен делать cancel
а при попытке вывода $_SERVER['PHP_AUTH_PW'] возвращает пустую строку...
583
02 февраля 2003 года
#define
150 / / 03.12.2002
Basic - это вид авторизации. Типа основной. Есть еще Digust, он почти такой же, чем отличаются забыл уже :)
А realm указывает как назвать авторизированное место - т.е. может быть несколько страниц авторизации с разными рилмами.
Функция auth() должна описываться до ее использования.
Не понимаю почему у тебя 3 раза запрашивает и в итоге не авторизует. Попробуй в новом документе, без всяких lib_change.inc и проч.
"Вот мой код перед <html>" - не понял? Вообще-то надо что-то типа следующего сделать:
1. Засунь страницу, которая будет показываться при успешной авторизации, в отдельный файл - к примеру, "keep.out".
2. Модернизируй код:
 
Код:
...
if(!isset($_SERVER["PHP_AUTH_USER"]) || !isset($_SERVER["PHP_AUTH_PW"])) auth();
elseif($_SERVER["PHP_AUTH_USER"]==$user && $_SERVER["PHP_AUTH_PW"]==$pass)
{
  include("keep.out");
}
else
...

В таком случае твоя страница будет "включена" в документ в случае успешной авторизации.
Но все же я не пойму почему у тебя пасс с логином не принимает.. у тебя код выходит на exit - это не только cancel, это еще если 3 раза неправильно введены данные авторизации.
291
10 марта 2003 года
gufy
703 / / 08.01.2003
черт, как только не пробовал - ну, не получается. переменные $_SERVER['PHP_AUTH_USER'] и PW не запролняются, хоть убейся. Может, у меня в сервере все-таки проблема. Кстати, как можно использовать remote_user?
Если можно, выложите скрипт авторизации, работающий на вашем сервере - вдруг все-таки не в программе дело?
583
11 марта 2003 года
#define
150 / / 03.12.2002
Код, который я дал я и использую для авторизации на своем сайте, все работает. Код в оригинале почти.
Сервер Apache? Версия? Может он так настроен что не понимает ассоциативного массива $_SERVER - на сколько я знаю - такая фишка далеко не во всех версиях была.
remote_user мне кажется никуда неподоткнешь.. тем более если учитывать тот факт, что у большинства посетителей он как надо не определяется.
291
11 марта 2003 года
gufy
703 / / 08.01.2003
Стоит Apache 1.3.26(Win32)
Всякие там фишки по поводу его работы я не знаю, но запускаю каждый раз вручную.
Если не $_SERVER[], то что? register_globals менять не хотелось бы...
583
12 марта 2003 года
#define
150 / / 03.12.2002
Цитата:
Originally posted by gufy
Стоит Apache 1.3.26(Win32)
Всякие там фишки по поводу его работы я не знаю, но запускаю каждый раз вручную.
Если не $_SERVER[], то что? register_globals менять не хотелось бы...



register globals не при чем.
А версия PHP?

PHP Version Note:
Autoglobals, such as $_SERVER, became available in PHP version » 4.1.0. $HTTP_SERVER_VARS has been available since PHP 3.

Если у тебя PHP не "» 4.1.0", то попробуй использоваться $HTTP_SERVER_VARS['PHP_AUTH_USER'] и PW.

291
12 марта 2003 года
gufy
703 / / 08.01.2003
это я уже тоже пробовал, но не получилось... ну не передаются эти значения...
381
29 марта 2003 года
qik
116 / / 20.06.2000
ребят а у меня вот так:
 
Код:
<? include "auth.php"; ?>

эту хреннатень вставляешь в файл который нужно запаролить, а вот этот просто кладешь в auth.php:
Код:
<?php
$LOGIN = "admin";
$PASSWORD = "pass";

function error ($error_message) {
    echo $error_message."
"
;
    exit;
}

if ( (!isset($PHP_AUTH_USER)) || ! (($PHP_AUTH_USER == $LOGIN) && ( $PHP_AUTH_PW == "$PASSWORD" )) ) {
    header("WWW-Authenticate: Basic entrer=\invisible place\"");
    header("HTTP/1.0 401 Unauthorized");
    error("&#194; &#207;&#208;&#206;&#203;&#197;&#210;&#197; =) ");
}

?>


вот и все пироги....а вот как папки паролить это я хотел у вас спросить...
328
29 марта 2003 года
Felix
257 / / 20.07.2000
ну папки я лично при помощи .htaccess закрываю
5.0K
28 июля 2003 года
neon
1 / / 28.07.2003
U menja tochno takaja zhe problema kak i u gufy. Problema tochno v servere. U menja na odnom i tom zhe servere est' mnogo virtualnyh hostov. V nekotoryh etot skript rabotajet a v nekotoryh net. $_SERVER['PHP_AUTH_USER'] ostajetsja pustoj.
U menja vopros k gufy. Ty razobralsja kakije nastroiki pomenjat' nado? Esli da podelis' opytom.

Цитата:
Originally posted by gufy
черт, как только не пробовал - ну, не получается. переменные $_SERVER['PHP_AUTH_USER'] и PW не запролняются, хоть убейся. Может, у меня в сервере все-таки проблема. Кстати, как можно использовать remote_user?
Если можно, выложите скрипт авторизации, работающий на вашем сервере - вдруг все-таки не в программе дело?

7.4K
15 апреля 2004 года
bavc
1 / / 15.04.2004
Цитата:
Originally posted by neon
U menja tochno takaja zhe problema kak i u gufy. Problema tochno v servere. U menja na odnom i tom zhe servere est' mnogo virtualnyh hostov. V nekotoryh etot skript rabotajet a v nekotoryh net. $_SERVER['PHP_AUTH_USER'] ostajetsja pustoj.
U menja vopros k gufy. Ty razobralsja kakije nastroiki pomenjat' nado? Esli da podelis' opytom.



ответ прост просто в файле php.ini надо поставить register_globals=On
Все работает пользуйтесь

1.8K
16 апреля 2004 года
MishaSt
170 / / 11.08.2003
Цитата:
Originally posted by bavc


ответ прост просто в файле php.ini надо поставить register_globals=On
Все работает пользуйтесь


Можно поставить <? phpinfo(); ?> и посмотреть где ваш логин-пароль лежит.

8.3K
20 июля 2004 года
skablov
1 / / 20.07.2004
Начиная с PHP 4.3.0, для того, чтобы предотвратить написание кем-либо скрипта, раскрывающего пароль к странице, которая использует внешнюю аутентификацию, переменные PHP_AUTH не устанавливаются в случае, если данная страница использует внешнюю аутентификацию и установлен safe mode. Несмотря на это, переменная REMOTE_USER может использоваться для аутентификации пользователя, прошедшего внешнюю аутентификацию. Таким образом, вы всегда можете воспользоваться переменной $_SERVER['REMOTE_USER'].

http://ru.php.net/features.http-auth
6.3K
20 июля 2004 года
Silya
22 / / 27.03.2004
Ребята, исправьте хоть название топика, а то аж глаза режет.

php-manual:
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
} else {
echo "

Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "

You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>

привет
291
21 июля 2004 года
gufy
703 / / 08.01.2003
и вот че ты с умным видом запостил в форум тот код, который в этой теме ПОЛУТОРАГОДОВАЛОЙ давности уже десять раз постили? Зачем ты ее поднял опять? чтобы сказать, что тебе не нравится название? ну, опечатка это. не знаю я как изменять название своей темы. лучше бы сказал, что у меня PHP был установлен как CGI а не как sapi модуль, пожтому и аутентификация не работала.
1.3K
26 июля 2004 года
view
148 / / 14.10.2003
У меня вот так:

Код:
function authenticate()
{
    header('WWW-Authenticate: Basic realm="Произвольное наименование"');
    header('HTTP/1.0 401 Unauthorized');
    echo "Error!\n";
    exit;
}

if (!isset($_SERVER[PHP_AUTH_USER]) || (preg_match("/quit/", dirname($_SERVER['PHP_SELF'])) && $_GET[old] == $_SERVER[PHP_AUTH_USER]))
{
    authenticate();
}


При этом работает logout. Только в форме надо устанавливать переменную $old в текущий логин
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог