![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
sanchos14931 |
|
||||||||||||||||||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 27.5.2008 Где: Нягань Репутация: нет Всего: нет |
Здравствуйте форумчане!!!
Я облазил весь интернет в поиске скрипта регистрации подходящего для меня.. Все таки я нашел этот скрипт и как его делать!! Мне кажется что многие тоже ходят по просторам интернета в поисках этого скрипта.. Я бы хотел тоже с вами поделится!!!! Рассмотрим систему авторизации пользователей (регистрация, login/logout, доступ к закрытым страничкам, поддтвеждение по e-mail). Нам понадобятся: вебсервер, PHP, MySQL. Предполагается, что вы с этим всем уже знакомы на определенном уровне. Для начала создадим в базу данных, допустим, "authorize" и таблицу "users" в ней. Работать с БД MySQL очень удобно с помощью инструмента PhpMyAdmin, который можно скачать здесь. Итак, таблица "users": Поле Тип По умолчанию Дополнительно id mediumint(9) auto_increment login varchar(32) index unique pass varchar(32) email varchar(64) index unique status tinyint(2) 0 timestamp int(10) Теперь сделаем страничку регистрации и скрипт, заносящий данные о юзере в базу. Нам понадобится html-файл с такой формой (естественно, если хотите иметь больше информации о юзере, можно добавить соответствующие поля, изменить скрипт и таблицу в БД):
На этом этапе стоит упомянуть о том, что полезно в таких случаях кроме проверок правильности введенных данных на сервере, делать такую проверку средствами Javascript. Например, если юзер ввел повтор пароля неверно, подсвечивать красным соответвующую строку. Это не сложно, поэтому расскажем об этом в следующий раз. Теперь создадим скрипт "registration.php", который и будет обрабатывать форму регистрации:
Не стоит забывать о том, что по Сети лазит множество ботов и от них нужно как-то защищаться, иначе ваша система долго не протянет. Для этого на странице регистрации стоит прицепить какую-нибудь каптчу. Теперь мы должны выслать юзеру на указанный e-mail письмо со ссылкой для подтверждения регистрации. Для этого вместо строчки echo "Юзер добавлен<br />\n"; вставим такой кусок кода:
Надеюсь, тут все понятно: сначала делаем всевозможные проверки на корректность введенных данных, потом записываем в базу данных с текущей временной меткой и отправляем письмо для подтверждения регистрации. Кстати о письме: правила составления ключевой строки "keystring" никем не писаны и каждый может придумать что-нибудь свое. Например, при каждой регистрации можно генерировать случайное слово и, записав в базу, на его основе генерить "keystring". Теперь у нас в таблице "users" должна быть строка вида: 1 login 76d80224611fc919a5d54f0ff9fba446 [email protected] 0 1197730343 Теперь создадим скрипт, активирующий пользователей. Система его будет такова: • Пользователь приходит по ссылке с GET-данными "login" и "key" • Берем из базы id, login, e-mail, status и timestamp юзера (если юзер есть). Проверяем статус (активирован уже или нет). Проверяем разницу текущей временной метки и метки из базы, если больше 5*24*60*60 - до свидания • Составляем новую "keystring" по тем же правилам, что и старую. Сравниваем. Не равны - до свидания • Если ключевые строки равны - апдейтим статус до 1. А код таков:
Так, с регистрацией мы покончили, теперь сделаем форму для авторизации, например, такую:
Вставляйте эту форму в любое место страницы, как того требует дизайн. Обработчиком формы будет у нас файл "login.php" такого вида:
Напишем сразу скрипт "logout.php", работающий как "выход из системы":
Ну вот, юзер авторизован. Осталась малость: • В начале каждого документа стартовать сессию функцией session_start() • Проводить проверку на присутствие в массиве $_SESSION элемента user. На основе нее выдавать "секретный" документ или общий. • Вместо формы для авторизации распечатывать приветствие и ссылку на "logout.php" Вот простейший пример документа:
Ну вот вроде и все. Продолжение: В обсуждении и разборе моей давней статьи о системе авторизации на PHP и MySQL, кто-то интересовался как сделать опцию "Запомнить" и автоматический вход. Это довольно просто, но так как есть желающие - нужно подробно описать. Я не буду повторять предыдущую статью, а буду на нее ссылаться. Итак, в форме авторизации добавляем чекбокс для запоминания:
Теперь смотрим наш обработчик этой формы - скрипт "login.php". Сначала рассмотрим т.н. первую авторизацию — при удачной авторизации и если отмечена опция "запомнить", пишем в cookie браузера специальную строку token. Эти строки нужно добавить после открытия сессии в файле "login.php":
Сразу после этого, нужно записать ту же строку token, в базу данных, в строку для залогинившегося юзера. Впоследствии мы будем искать по этой строке (когда она придет из куки) нужного пользователя.
Ну вот, теперь остался последний шаг — авторизовать посетителя автоматически при его заходе на сайт. Для этого, после старта сессии, в каждом документе нужно сделать такую проверку:
: Здесь мы смотрим — если юзер еще не залогинен и пришла нужна кука, ищем запись в базе данных соответствующую данной куке, если запись есть — авторизуем посетителя. Ну и последний штрих: в скрипте "logout.php", при удалении из сессии пользователя, удаляем его куку:
Вот и все. В прикрепленном архиве можете взглянуть overall на все исходники. И еще напомню: эти скрипты претендуют скорее на звание обучащих, чем на готовое решение. Поэтому не ленитесь, читайте и разбирайтесь. Вопросы можно в каменты. Источник: http://alt-f4.ru/avtorizaciya-posetiteley-php-mysql Модератора прошу закрепить эту тему... ![]() Это сообщение отредактировал(а) sanchos14931 - 15.3.2009, 12:44 |
||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
Djinn |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: 1 Всего: 1 |
коментировать скрипт не буду
![]()
не совсем удочно ![]()
в подобном лучше указывать лимит символов, ато БД ошибку покажет, если много символов ввести - 100, например... дальше тоже есть что поправить... ну да ладно, думаю ![]() |
||||
|
|||||
MoLeX |
|
||||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
ерунда... зачем искать когда быстрее самому сделать? Добавлено через 2 минуты и 48 секунд
-------------------- Amazing ![]() |
||||
|
|||||
enof |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
За такие советы расстреливать надо. Например на таком сайте отображается список кто онлайн. Сижу я значит и мониторю этот список. Как только кто новый появится, сразу брутим. Через минуту у нас есть чужой аккаунт.
![]() Добавлено через 2 минуты и 19 секунд
это вообще ###. |
||||
|
|||||
Mpak |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 12.11.2006 Репутация: нет Всего: 7 |
Видать плохо искали ;) бдыщ -------------------- В любой откомпилированной программе есть, по крайней мере, одна ошибка... P.S. А у меня их минимум две... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |