Активация email на php

Активация 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().

Читайте также:  Сколько нужно изучать php

Отправка 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

В этой статье хочу рассказать как сделать регистрацию на сайте, конечно, уже есть подобная статья на сайте (Ссылка на статью), но в этой ещё покажу как сделать в PHP подтверждение регистрации по email, что очень полезно бывает.

Также в конце вы сможете скачать файлы этой программы, ещё перед тем как начать читать эту статью рекомендуется прочитать наш учебник (Ссылка на учебник).

Как работает регистрация:

Регистрация через Email работает очень просто, для этого мы будем отправлять ссылку, которая хранит в себе GET запрос с хешом пользователя, когда человек переходит по ссылки, хеш проверяется, находится пользователь с таким хешом и меняет значение столбца который отвечает за подтверждение Email на подтвержденный.

Подготовка базы данных:

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

Создание базы данных:

Создаём базу данных, называем её user-login, но я назову её просто test и выбираем кодировку utf8_general_ci.

Нажимаем кнопку, создать БД

Называем БД authorization-system и выбираем кодировку

После того как база данных была создано, создаём таблицу.

Создание таблицы в БД:

Теперь нужно создать таблицу для пользователей, вот как она выглядит.

Делаем таблицу для регистрации по Email на PHP

Как можете заметить, это обычная таблица для пользователей, нам тут интересно только два столбца, первой это хеш, по нему мы будем определять Email, а последний столб отвечает за то, подтверждён ли email или нет, если значение один, то и ноль соответственно нет.

Подключение БД для регистрации:

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

Если выводит, что подключение к базе данных прошло успешно, то значит всё хорошо.

Дальше подключаем этот файл в наш основной, для регистрации, для этого используем require_once .

Вот теперь всё должно хорошо работать, а если не заработает, то выведет ошибку.

Создание регистрации на PHP:

Пришло время написать регистрацию на PHP, но для начала сделаем форму.

Ну тут не чего интересного нет, простая HTML форма, Вот какая форма получилась.

Форма для отправки Email

Вот сейчас наконец можно посмотреть как делается регистрация с подтверждением 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:

Теперь пришло время написать скрипт для подтверждения 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».

Источник

Оцените статью