Начальные шаги
У данного вида регистрации два основных преимущества: во-первых, защита от спама посредством взаимодействия с пользователем, ну а во-вторых пользователи, зарегистрированные таким образом, заслуживают доверия. При необходимости им можно предоставить право на работу с базой данных сайта, но, конечно же, в пределах разумного.
Изначально работа будет начинаться с создания интерфейса формы. Вам нужно создать два файла: один из них будет содержать непосредственно саму форму, а второй будет служить для контролирования процесса взаимодействия с базой данных сайта. Вы можете назвать эти файлы как вашей душе угодно. В расматриваемом примере первый файл будет называться register.php, второй - verify.php.
Ниже предоставлено содержание файла register.php.
Работа над созданием обработчика событий
Теперь займемся непосредственно самим verify.php. Он будет использоваться для двух вещей. Во-первых, для ввода информации в базу данных. Во-вторых, он будет отправлять регистрационный код на e-mail пользователя. Поэтому нам будет нужна конструкция “If” для разделения этих двух процессов.
Так каким же образом мы будем определять, какую операцию выполнять – ввод данных или отправку регистрационного кода? Для этого будет нужно ввести скрытые значения в форму регистрации следующим образом:
Скрытые значения для регистрационной формы
<html>
<body>
<form action="verify.php" method="post" name="register">
Username: <input type="text" name="username" />
Password: <input type="text" name="password" />
Email: <input type="text" name="email" />
<input type="hidden" name="form_submitted" value="1"/>
<input type="submit" />
</form>
</body>
</html>
if ($_POST['form_submitted'] == '1') {
## Form was submitted,the user is registering!
} else{
## No value found, user must be activating their account!
}
Моделирование базы данных под e-mail активацию
В рассматриваемом примере мы создали таблицу под названием “users” с соответствующими полями “id, status, username, password, email, and activationkey”. В принципе и вам советуем придерживаться схожего регламента. Можно выполнить данные действия с помощью следующего SQL-запроса.
Код SQL запроса - Создание таблицы
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`status` varchar(20) NOT NULL,
`username` varchar(20) NOT NULL,
`password` varchar(20) NOT NULL,
`email` varchar(20) NOT NULL,
`activationkey` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`),
UNIQUE KEY `activationkey` (`activationkey`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
Если все сделать корректно, вы должны увидеть следующую картину маслом (внешний вид базы данных будет отличаться от предложенного лишь в том случае, если вы используете PHPMyAdmin или MySQL):

Вставка регистрационных данных в базу данных
На данном этапе мы будем связывать все созданные ранее элементы воедино. Нам необходимо перво-наперво установить правильные отношения между формами и базой данных. Мы будем использовать mysql_connect и mysql_select_db functions для связи с базой данных.
Связывание с базой данных |
Как вы сами прекрасно видите, нам нужно внести изменения только в базу данных , пароль и название таблицы. В идеале лучше назвать таблицу “users”, как сделано в рассматриваемом примере. Пароль и имя базы данных могут быть созданы с помощью MySQL, если у вас есть соответствующие полномочия на хостинге. Иначе вам нужно будет связаться с хостинг-мастером и получить их.
Ваш файл verify.php должен выглядеть следующим образом:
<?php |
Протестируйте наличие связи загруженных файлов с сервером. Если вам не будет выдаваться никаких ошибок, то вы успешно сконектились с базой данных. Сейчас займемся генерацией рандомного ключа и установкой значений в базе данных.
Генерация случайного ключа и ввод значений в базе данных
Для генерации рандомного ключа воспользуемся функцией mt_rand(). Для того, чтобы задать длину ключа, нужно несколько раз подряд через точку написать данную функцию ( в рассматриваемом примере длина ключа 5).
activationKey = mt_rand() . mt_rand() . mt_rand() . mt_rand() . mt_rand();
|
Теперь займемся вводом данных в нашу базу данных
Ввод данных в нашу базу данных |
Как вы видите, мы дополнили все значения регистрационного поля командой $_POST. Также мы внесли переменную $activationKey и вставили слово ‘verify’ в поле статуса. Это необходимо для определения, кто прошел проверку, а кто нет.
Файл verife.php будет выглядеть следующим образом:
Отправка регистрационного ключа
Отправка почты с помощью РНР довольно простой и безболезненный процесс. Нам только нужно ввести пару значений в уже готовую РНР функцию mail(). В рассматриваемом примере мы пользуемся четырьмя параметрами: адрес получателя, тема сообщения, непосредственно само сообщение и обратный адрес.
Отправка e-mail в РНР - verify.php |
Не будем останавливаться подробно на данном коде. При желании вы можете ознакомиться с деталями в статье на нашем сайте "отправка e-mail” .
Проверка соответствия регистрационного кода
Это заключительный этап данной статьи: проверить соответствие введенного пользователем регистрационного кода с отправленным ему на почту. В случае соответствия пользователь получает регистрацию, иначе выдается сообщение о том, что при вводе произошла ошибка. Так же необходимо исключить случаи повтора регистрационных ключей. Код выглядит следующим образом:
Дальнейшие изменения в verify.php |
Уделите особое внимание тому факту, что мы использовали SQL команду UPDATE вместо INSERT. Ну и наконец необходимо обезопасить наш скрипт:
Последние изменения в verify.php |
Ну вот в принципе и все. Дерзайте!:)





