Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт авторизации, Очень полезный для новичков 
:(
    Опции темы
AtomoS
Дата 30.8.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



Очень полезный скрипт для начинающих:

Код

<?

  $admin_user = "admin";
  $admin_pass = "password";

  
  // Если пользователь не авторизовался - авторизуемся
  if(!isset($_SERVER['PHP_AUTH_USER'])) 
  { 
    Header("WWW-Authenticate: Basic realm=\"Restricted Area\""); 
    Header("HTTP/1.0 401 Unauthorized"); 
    exit(); 
  } 
  else 
  { 
    // Утюжим переменные $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'],
    // Чтобы мышь не проскочила
    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']);
    }
    
    $p_user = $_SERVER['PHP_AUTH_USER']; 

    // Если такого пользователя нет - выдаём окно
    if($p_user != $admin_user)
    {
      Header("WWW-Authenticate: Basic realm=\"Restricted Area\""); 
      Header("HTTP/1.0 401 Unauthorized"); 
      exit(); 
    }
    // Если все проверки пройдены, сравниваем пароли
    $p_pass = $_SERVER['PHP_AUTH_PW'];
    if($_SERVER['PHP_AUTH_PW'] != $admin_pass)
    {
      Header("WWW-Authenticate: Basic realm=\"Restricted Area\""); 
      Header("HTTP/1.0 401 Unauthorized"); 
      exit(); 
    }
  }
?>


И собственно вопросик:

Можно чтобы когда в бразузере вводишь &act=exit, то авторизация сбрасывалась и нас бы пеерекидывало на index.php?
PM MAIL   Вверх
Ипатьев
Дата 30.8.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Не знаю, как насчет полезного, но я вижу здесь очень много бесполезного.
Что это только три раза написано Header("WWW-Authenticate...?
Чего бы эту замечательную конструкцию не написать раз 15?
И что за странные мыши, которые куда-то скачут?

Я бы сказал, что этот код скорее вреден. полным непониманием написаного.

по поводу сброса авторизации можно почитать в документации.





PM MAIL   Вверх
SneG0K
Дата 30.8.2009, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



AtomoS, ацтой. Где работа с БД, где куки, где сессии, где права доступа?
PM WWW Skype   Вверх
Ипатьев
Дата 30.8.2009, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Ну, скажем прямо, не всегда требуются при авторизации куки, сессии и права доступа. 
А HTTP авторизация хороша тем, что делается в две строчки. Зачем автор скрипт растянул его в 20 раз больше - это уже другой вопрос.

PM MAIL   Вверх
SneG0K
Дата 30.8.2009, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Ипатьев, это не эстетично. Хотя в некоторых случаях, так интересней выглядит)
PM WWW Skype   Вверх
Ипатьев
Дата 31.8.2009, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Ну, эстетичность - это вопрос вкуса. 
Если же говорить об объективных вещах, то плюсами http авторизации являются простота Basic и защищенность Digest (поддерживаемой нативно с 5.1) вариантов.
минусом является все сокращающееся количество установок РНР как модуля апача. да и сам ого апача. 

PM MAIL   Вверх
AtomoS
Дата 31.8.2009, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



Я понимаю что знаний у вас придостаточно... но можно увидеть ли упрощённую версию скрипта?
PM MAIL   Вверх
MoLeX
Дата 31.8.2009, 06:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



AtomoS, врядли тебе его предоставит


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
fesor
Дата 31.8.2009, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



Больше нравится смотреть на код в документации.
http://us3.php.net/manual/en/features.http-auth.php
PM MAIL WWW   Вверх
Ипатьев
Дата 31.8.2009, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



AtomoS, прЕдостаточно. превосходная степень, а не близость к достаточности. 
Дело не в количестве строк. Упрощенная так и останется заклинанием, без понимания смысла написанного. 
Я в своем сообщении написал, в какую сторону думать. Если идей нет - то и не стоит переживать.
Ценность (в данном случае) представлять будет только та упрощенная версия, которую написал сам, размышляя над каждой строчкой. 
А с точки зрения просто работы - и этот сойдет. 
Какой смысл сокращать этот код, если весь остальной на сайте - точно такой же?




PM MAIL   Вверх
AtomoS
Дата 31.8.2009, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



Цитата(AtomoS @ 30.8.2009,  16:45)
И собственно вопросик:

Можно чтобы когда в бразузере вводишь &act=exit, то авторизация сбрасывалась и нас бы пеерекидывало на index.php?

Можно хотябы на этот вопрос ответить?)
PM MAIL   Вверх
Ипатьев
Дата 31.8.2009, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Можно, а смысл?
Ответ уже дали, он есть по ссылке, которую дал fesor. Прямо готовый код. Но кто бы ее еще увидел.
PM MAIL   Вверх
bars80080
Дата 31.8.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



там это довольно размазано


Цитата(AtomoS @  31.8.2009,  10:40 Найти цитируемый пост)
Можно чтобы когда в бразузере вводишь &act=exit, то авторизация сбрасывалась и нас бы пеерекидывало на index.php?

Код

if(!empty($_GET['act']) && $_GET['act'] == 'exit') {
    unset($_SESSION);
    session_destroyed();
    header('Location: http://server.ru/index.php');
    exit;
}

PM MAIL WWW   Вверх
Ипатьев
Дата 31.8.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



это там не размазано. этого там вообще нет smile
PM MAIL   Вверх
IZ@TOP
Дата 31.8.2009, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Солнечные бури или погода такая?

bars80080, при чем тут сессии и HTTP Basic авторизация?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
NewDima
Дата 31.8.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



Да, почитал... Иногда меня пугает, то что говорят у нас на форуме, ничего по делу
AtomoS, авторизация устроенная только на http basic не сбрасывается на сервере. Причина в том, что когда пользователь один раз ввел имя и пароль, броузер запоминает и отправляет их тебе. В данном случае единственное решение отключение броузера, что естественно тебе не под силу. Для полноценной авторизации придется сочитать с механизмом php-сессии, или чем-либо другим удобным.
P.S. AtomoS, судя по тому что ты пишешь и по комментам у тебя в коде, думается что ты где-то выложить это решил в качестве обучающего пособия, где-то в инете. Разочарую тебя, рано еще учить тебе, если это так
PM ICQ   Вверх
bars80080
Дата 31.8.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Ипатьев @  31.8.2009,  14:47 Найти цитируемый пост)
это там не размазано. этого там вообще нет 

Цитата(IZ@TOP @  31.8.2009,  15:05 Найти цитируемый пост)
при чем тут сессии и HTTP Basic авторизация? 

мдя. как-то в самом вопросе этого не было, потому и прошляпил
PM MAIL WWW   Вверх
Ипатьев
Дата 31.8.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



NewDima, странно, а в документации другое пишут
PM MAIL   Вверх
NewDima
Дата 31.8.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



Ипатьев, покажи

Добавлено через 7 минут и 38 секунд
Если ты об этом
Цитата

Both Netscape Navigator and Internet Explorer will clear the local browser window's authentication cache for the realm upon receiving a server response of 401

то скажу, что во-первых не у всех пользователей IE и NN, а во вторых, у меня в NN это не работает
PM ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1033 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.