- Активация email после регистрации
- База данных
- HTML
- db.php
- index.php
- Send_Mail.php
- activation.php
- .htaccess
- Результат
- Активация email на php
- Фильтрация данных с помощью zend-filter
- Контекстное экранирование с помощью zend-escaper
- Подключение Zend модулей к Expressive
- Совет: отправка информации в Google Analytics через API
- Подборка PHP песочниц
- Совет: активация отображения всех ошибок в PHP
- Как сделать регистрацию на PHP через email
- Как работает регистрация:
- Подготовка базы данных:
- Создание базы данных:
- Создание таблицы в БД:
- Подключение БД для регистрации:
- Создание регистрации на PHP:
- Подтверждение Email:
- Вывод:
- Рекомендации по коду:
Активация email после регистрации
В этом примере реализуем верификацию регистрации по email на PHP. Для этого будем генерировать и использовать специальный код активации.
Внимание! Данный код предоставлен как пример решения поставленной задачи. Он не служит эталоном.
База данных
Создадим таблица users, в которую будем записывать данные пользователя и код активации.
CREATE TABLE IF NOT EXISTS `users` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(300) NOT NULL UNIQUE, `password` varchar(300) NOT NULL, `activation` varchar(300) NOT NULL UNIQUE, `status` enum('0','1') NOT NULL DEFAULT '0', PRIMARY KEY (`uid`) );
HTML
db.php
Конфигурационный файл с основными параметрами и подключением к базе.
index.php
Сохраняем пользователей в таблицу users. Код активации генерируем с помощью MD5.
)$/'; if(preg_match($regex, $email)) < $password=md5($password); // пароль $activation=md5($email.time()); // email + timestamp $count=mysqli_query($connection,"SELECT uid FROM users WHERE email='$email'"); // проверка email-а if(mysqli_num_rows($count) < 1) < mysqli_query($connection,"INSERT INTO users(email,password,activation) VALUES('$email','$password','$activation')"); // отправка письма include 'smtp/Send_Mail.php'; $to=$email; $subject="Проверка Email-а"; $body='Hi,
Активация! Пожалуйста перейдите по ссылки для активации вашего аккаунта.
'.$base_url.'activation/'.$activation.''; Send_Mail($to,$subject,$body); $msg= "Регистрация прошла успешно! Пройдите активацию через email."; > else < $msg= 'Данный email уже занят.'; >> else < $msg = 'Не валидный email.'; >> // HTML Часть ?>
Send_Mail.php
Для отправки email сообщений используется библиотека PHPMailer. Но можно использовать и стандартный mail().
Отправка email сообщения. Исправьте SMTP параметры.
IsSMTP(true); // use SMTP $mail->IsHTML(true); $mail->SMTPAuth = true; // активируем SMTP аутентификацию $mail->Host = "tls://smtp.yourwebsite.com"; // SMTP хост $mail->Port = 465; // SMTP порт $mail->Username = "SMTP_Username"; // SMTP имя пользователя $mail->Password = "SMTP_Password"; // SMTP пароль $mail->SetFrom($from, 'From Name'); $mail->AddReplyTo($from,'From Name'); $mail->Subject = $subject; $mail->MsgHTML($body); $address = $to; $mail->AddAddress($address, $to); $mail->Send(); > ?>
activation.php
В зависимости от кода активации выставляем статус пользователю 0 или 1.
0) < $count=mysqli_query($connection,"SELECT uid FROM users WHERE activation='$code' and status='0'"); if(mysqli_num_rows($count) == 1) < mysqli_query($connection,"UPDATE users SET status='1' WHERE activation='$code'"); $msg="Ваш аккаунт активирован"; >else < $msg ="Ваш аккаунт уже активирован"; >> else < $msg ="Неверный код активации"; >> ?> //HTML часть
.htaccess
Для соблюдения ЧПУ преобразуем URL вида:
http://website.com/activation.php?code=ACTIVATION_CODE
http://website.com/activation/ACTIVATION_CODE
Для этого прописываем в файле .htaccess
RewriteEngine On RewriteRule ^activation/([a-zA-Z0-9_-]+)$ activation.php?code=$1 RewriteRule ^activation/([a-zA-Z0-9_-]+)/$ activation.php?code=$1
Результат
После регистрации пользователя, ему на email отсылается письмо с ссылкой активацией emai адреса. При переходе по ссылке, скрипт проверяет наличие такого кода активации в базе, и в случае нахождения, изменяет статус данного email адреса на «активирован».
Активация email на php
В этом разделе помещены уроки по PHP скриптам, которые Вы сможете использовать на своих ресурсах.
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Совет: активация отображения всех ошибок в PHP
При поднятии PHP проекта на новом рабочем окружении могут возникнуть ошибки отображение которых изначально скрыто базовыми настройками. Это можно исправить, прописав несколько команд.
Как сделать регистрацию на PHP через email
В этой статье хочу рассказать как сделать регистрацию на сайте, конечно, уже есть подобная статья на сайте (Ссылка на статью), но в этой ещё покажу как сделать в PHP подтверждение регистрации по email, что очень полезно бывает.
Также в конце вы сможете скачать файлы этой программы, ещё перед тем как начать читать эту статью рекомендуется прочитать наш учебник (Ссылка на учебник).
Как работает регистрация:
Регистрация через Email работает очень просто, для этого мы будем отправлять ссылку, которая хранит в себе GET запрос с хешом пользователя, когда человек переходит по ссылки, хеш проверяется, находится пользователь с таким хешом и меняет значение столбца который отвечает за подтверждение Email на подтвержденный.
Подготовка базы данных:
Для начала создадим базу данных в которой будет хранится данные о пользователе.
Создание базы данных:
Создаём базу данных, называем её user-login, но я назову её просто test и выбираем кодировку utf8_general_ci.
После того как база данных была создано, создаём таблицу.
Создание таблицы в БД:
Теперь нужно создать таблицу для пользователей, вот как она выглядит.
Как можете заметить, это обычная таблица для пользователей, нам тут интересно только два столбца, первой это хеш, по нему мы будем определять Email, а последний столб отвечает за то, подтверждён ли email или нет, если значение один, то и ноль соответственно нет.
Подключение БД для регистрации:
Теперь пришло время подключить базу данных к сайту.
Если выводит, что подключение к базе данных прошло успешно, то значит всё хорошо.
Дальше подключаем этот файл в наш основной, для регистрации, для этого используем require_once .
Вот теперь всё должно хорошо работать, а если не заработает, то выведет ошибку.
Создание регистрации на PHP:
Пришло время написать регистрацию на PHP, но для начала сделаем форму.
Ну тут не чего интересного нет, простая HTML форма, Вот какая форма получилась.
Вот сейчас наконец можно посмотреть как делается регистрация с подтверждением email PHP 7.
mysqli_query ( $db , «INSERT INTO `user` (`login`, `email`, `password`, `hash`, `email_confirmed`) VALUES (‘» . $login . «‘,'» . $email . «‘,'» . $pass . «‘, ‘» . $hash . «‘, 1)» ) ;
Как видите это обычное код для регистрации, сначала идёт проверка все ли поля забиты правильно, потом, если всё хорошо, то создаются данные для отправки почты, дальше отправляется Email и одна временно проверяется отправилось ли письмо, если всё хорошо, выводит на экран «Подтвердите на почте».
Вот какое письмо пришло ко мне на Email.
Подтверждение Email:
Теперь пришло время написать скрипт для подтверждения email, это будет отдельная страница.
if ( $result = mysqli_query ( $db , «SELECT `id`, `email_confirmed` FROM `user` WHERE `hash`='» . $hash . «‘» ) )
mysqli_query ( $db , «UPDATE `user` SET `email_confirmed`=0 WHERE `id` crayon-sy»>. $row [ ‘id’ ] ) ;
Давайте разберём этот код, сначала идёт подключение БД, потом проверка, существует ли GET запрос, если да, то получаем ID и Email по хешу и проверяем, мы вообще получили эти данные, если да, то опять идёт проверка, если столбец который отвечает за подтверждённый Email, если равен одному, то Email не подтверждён, ноль соответственно значит подтверждён.
Если всё проверки прошли и не вывело не одной ошибки, то программа обновляет столбец email_confirmed на ноль.
Нажимаем на ссылку из письма и вот какая страница у нас выходит.
Как видите всё работает нормально, этот код полностью рабочий.
Вывод:
Надеюсь эта статья для вас была полезно, здесь я показал как сделать регистрацию, но не просто а на PHP подтверждение регистрации по email, поэтому она не много сложнее чем предыдущая часть про регистрацию (Ссылка на статью).
Вы можете скачать код этой программы, но там будет не только сама программа, но и файл для импорта таблицы которая была здесь сделана.
Рекомендации по коду:
Этот код был достаточно простой, поэтому дам пару советов по его улучшению.
Первое что можно сделать, это данные с хешом хранит в отдельной таблицы в базе данных, второе, нужно добавить зависимость от времени, что бы по истечению одно дня, если Email не подтверждён, приходилось заново регистрироваться.
Также, если вам надо сделать восстановление пароля по Email, то посмотрите статью: «Восстановление пароля на PHP».