Автор Тема: Регистрация \\ Авторизация.  (Прочитано 6816 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Lieto

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.creativity.kiev.ua
Регистрация \\ Авторизация.
« : 27 Апреля 2005, 17:36:45 »
Если Вы готовы бесплатно дать мне практический совет, относительно решения определённой практической задачи, пожалуйста, читайте ниже =)

Передо мной, стоит задача -- дать доступ к определённой странице, определённому логину с паролем.

( регистрацию я предварительно решил сделать через сендмеил т.к. логинов большое количество не предвидится )

Насколько я понимаю технологию она должна строиться следующим образом.

1. ПХП форма на главной странице запрашивает логин и пароль.
2. Эта же форма обращается к файлу на сервере в котором содержиться информация о соответствии логинов\\паролей определённым страницам и редиректит на персональную страницу данного логина.
3. Форма на странице логина проверяет пароль и либо даёт доступ, либо возвращает на заглавную. (или как-то так)

ПХП я знаю "отрывками", но если будет пример с минимальными пояснениями смогу разобраться.

Заранее благодарен за любую помощь =)

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

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Регистрация \\ Авторизация.
« Ответ #1 : 27 Апреля 2005, 18:49:31 »
http://phpclub.net/talk/showthread.php?s=&threadid=32810

правда, примеры устаревшие, но адаптировать несложно

Оффлайн Lieto

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.creativity.kiev.ua
Регистрация \\ Авторизация.
« Ответ #2 : 28 Апреля 2005, 01:19:03 »
Почитал, довольно непонятно, но уже что-то.

Меня интересует такая схема

юзер печатает логин и пассворд, скрипт сверяет его со списком

if юзер1 and пароль1 than load index1.htm else
if юзер2 and пароль2 than load index2.htm else
redirect dead.htm

Вы уж простите. Опыта программирования у меня не особо ) я так понимаю что если задать переменные то можно их потом сравнивать.
Ни у кого нет примера более близкого к моей реальности?

п.с. на пхпфаг пока не нашёл.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Регистрация \\ Авторизация.
« Ответ #3 : 28 Апреля 2005, 01:21:05 »
а чем тебя тот, который я дал, не устраивает?

Оффлайн Lieto

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.creativity.kiev.ua
Регистрация \\ Авторизация.
« Ответ #4 : 28 Апреля 2005, 01:48:34 »
2 РомикЧиф

а можно пояснение по Вашему скрипту?

$file="data.txt";
$fp=fopen($file, "r");
$auth_file=fread($fp, filesize($file));
fclose($fp);
if (!strstr($auth_file,$PHP_AUTH_USER.":".$PHP_AUTH_PW."\\n")) {
  header(\'WWW-Authenticate: Basic realm="Realm"\');
  header("HTTP/1.0 401 Unauthorized");
  echo  "Bad password";
  exit;
}

Скрипт вроде недлинный. Можете прокоментировать? -- что он собственно делает в случае если пароль и логин совпадают? Какие переменные нужно обозначить?
Как "это" внедрить в пустую веб-страницу? )

Благодарю =)

Оффлайн Lieto

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.creativity.kiev.ua
Регистрация \\ Авторизация.
« Ответ #5 : 28 Апреля 2005, 01:51:52 »
А где в данном скрипте (ниже) ссылка на этот дата.тхт или это два совершенно разных независимых скрипта авторизации?

session_start();
if ($_POST[\'user_name\']==\'user\' AND $_POST[\'user_pass\']==\'pass\') {
  $_SESSION[\'authorized\']=1;
  if (defined("SID") AND constant("SID")) $sid="?".SID; else $sid=\'\';
  header("Location: member.php$sid");
  exit;
}
?>
" method="POST">
Name:
 
Pass:
 



member.php
session_start();
if (empty($_SESSION[\'authorized\'])) {header("Location: auth.php");exit;}
?>
СЕКРЕТНАЯ ИНФА!!!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Регистрация \\ Авторизация.
« Ответ #6 : 28 Апреля 2005, 12:28:26 »
Цитировать
Lieto:
Можете прокоментировать? -- что он собственно делает в случае если пароль и логин совпадают?

в этом случае скрипт не делает НИ-ЧЕ-ГО.
Это означает, что если ПОД НИМ что-то написать, то это исполнится.
Цитировать
Lieto:
или это два совершенно разных независимых скрипта авторизации?

Да, это два независимых.
Во втором примере отсутствует код проверки паролей из файла. В нём зашита проверка только одного логина и пароля.

Оффлайн Lieto

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.creativity.kiev.ua
Регистрация \\ Авторизация.
« Ответ #7 : 28 Апреля 2005, 16:27:33 »
Благодарю ) Нашёл у себя самоучитель по ПХП и разобрался во многом.
И всё-таки так и не понял как адаптировать скрипт таким образом, чтобы после введения определённого логина и пароля (или группы логинов и паролей), давало доступ к определённой странице. (по типу почтовой системы). Мне необходимо, чтобы каждый авторизированный клиент получал доступ к своему хтмл-файлу.


Для тех, кто возможно зайдёт в эту тему с таким же вопросом как у меня, привожу текст, который многое для меня прояснил. Авторство к сожалению не знаю.

СЦЕНАРИЙ АВТОРИЗАЦИИ (авторизацию сессиями я счёл набиолее удобной)






Алгоритм сценария прост. После определения допустимости полученных от посетителя каким бы то ни было образом (вводом в форму или в диалоговое окно авторизации) логина и пароля открывается сессия и в ней регистрируется переменная - указатель на успешную авторизацию, которой присваивается определенное значение. На каждой странице "защищенной зоны" проверяется значение полученной с данными сессии этой переменной (а, как вы помните, берется оно не из отправляемых браузером посетителя данных, а из созданного во временной директории сервера файла с данными сессии - браузер посетителя сообщает лишь идентификатор этого файла), и если оно совпадает с обозначающим успешную авторизацию, то посетитель допускается к работе со страницей, если же нет - то доступ к странице не разрешается. На странице "выхода" из защищенной зоны располагается команда session_destroy ();, после выполнения которой идентификатор сессии "забывается" сервером и передача Сценарию переменной - указателя на успешную авторизацию более не происходит - до нового прохождения авторизации.
Начало сценария на странице проверки логина с паролем может быть таким:

foreach (file("passw/passwr") as $k)
{if (substr($k, 0, -2)=="$PHP_AUTH_USER $PHP_AUTH_PW")
{$rez=l;}}
if ($rez!=l) {Header("WWW-Authenticate: Basic realm=\\"Защищенная зона"\\""); Header("HTTP/1.0 401 Unauthorized");
...текст страницы, выдающейся посетителю в случае нажатия им кнопки "Отмена"...
exit,-}

или таким (если логин и пароль передаются из формы в переменных Slogin и Spass):

форма --
Логин:
 Пароль:
 


код --

foreach (file("passw/passwr") as $k)
{if (substr($k, 0, -2)=="$login $pass"){$rez=l;
if ($rez!=l) {...текст страницы, выдающейся посетителю в случае ввода неправильных логина и пароля ...
exit;}

В результате их выполнения нижеследующий текст сценария будет выполняться только в том случае, если введенные посетителем логин или пароль есть в файле логинов и паролей (имеющем в данном случае имя "passwr").
Продолжение же сценария довольно простое. Создаем сессию...

session_start();

...регистрируем переменную:

session_register("auth");

...и устанавливаем ей определенное значение - дабы потом его и проверять.

$auth=1;

Собственно, и все.

?>

Дальше следует текст страницы, которую посетитель должен увидеть сразу же после успешной авторизации.
Так как идентификатор сессии обычно сохраняется в cookie, то приведенный выше код должен стоять в самом начале страницы, чтобы сервер имел возможность работать с cookies, т. е. был бы в состоянии отправить cookie с идентификатором сессии браузеру посетителя. (Если браузер посетителя не принимает cookie, то идентификатор сессии будет автоматически присоединяться ко всем найденным на данной странице ссылкам на другие ресурсы сайта.)
На каждой странице "защищенной зоны", в самом ее начале нужно поставить код

if ($auth!=l)
{...текст страницы, выдающейся посетителю в случае попытки несанкционированного доступа...
exit;}

...и все, что после этого кода, будет выполнено и/или выдано посетителю только в том случае, если он успешно прошел авторизацию на первой странице. При заходе на страницу "защищенной зоны" браузер посетителя перешлет серверу cookie с идентификатором сессии, а сервер возьмет из своего временного хранилища значение всех переменных сессии и передаст их сценарию.
Страница выхода из "защищенной зоны" должна содержать код (если в файле php.ini установлен в 1 параметр session.autostart, то указывать команду session_start () на каждой странице, где используются переменные сессии или производятся действия с самой сессией, не обязательно).

session_start(); session_destroy(); ?>

После его выполнения для посещения страниц "защищенной зоны" вновь потребуется авторизация.

Оффлайн Lieto

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.creativity.kiev.ua
Регистрация \\ Авторизация.
« Ответ #8 : 29 Апреля 2005, 23:06:02 »
ВОПРОС

Вот допустим у меня есть форма

Логин:
 Пароль:
 


Она ссылается на ап.пхп. Как мне сделать, чтобы форма ссылалась на тот *логин*.пхп ? Т.е. для каждого логина был бы свой файл.

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Регистрация \\ Авторизация.
« Ответ #9 : 29 Апреля 2005, 23:12:35 »
Цитировать
Lieto:
для каждого логина был бы свой файл.


Зачем?! Как вы пришли к такому решению.
Не все коту матрица.

Оффлайн Lieto

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.creativity.kiev.ua
Регистрация \\ Авторизация.
« Ответ #10 : 30 Апреля 2005, 00:15:29 »
Ну у меня в голове мыслительный процессы проходят, а как это реализовать я не знаю =)

Наиболее простым способом дать каждому пользователю доступ только к нужной ему информации -- создать для него страницу. (поскольку пользователей немного, то это оправдано).

Мне необходимо, чтобы эта форма перенесла пользователя на нужную страницу. На ту же страницу перенесутся данные "логин" и "пароль" и отработает описанный в примере скрипт.

Возможно я не очень стройно излагаю или чего-то не понял из примере, буду благодарен за помощь )

Оффлайн Fargus

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 31
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Регистрация \\ Авторизация.
« Ответ #11 : 30 Апреля 2005, 11:06:23 »
Цитировать
Lieto:
Наиболее простым способом дать каждому пользователю доступ только к нужной ему информации -- создать для него страницу. (поскольку пользователей немного, то это оправдано).


Не оправдано. Если юзеров больше, чем 1, то разумнее написать 1 страницу и передавать туда переменную в виде id пользователя. Предварительно, естественно, при регистрации присваивать пользователям id.

А вообще, посоветую Вам прочитать книгу [ссылка на чудовищную книгу удалена. ]. Очень понятно и доходчиво все разжёванно. Эта книга гуляет по сети в виде pdf. Но рекомедую прикупить, она думаю станет Вашей настольной книгой.
« Последнее редактирование: 30 Апреля 2005, 13:05:58 от RomikChef »

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Регистрация \\ Авторизация.
« Ответ #12 : 30 Апреля 2005, 13:06:19 »
Fargus не надо рекомендовать всякие глупости

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28