- Подтверждение адреса электронной почты на PHP
- База данных
- HTML код
- db.php
- index.php
- Send_Mail.php
- activation.php
- Подтверждение адреса электронной почты
- .htaccess
- CSS код
- Как сделать регистрацию на PHP через email
- Как работает регистрация:
- Подготовка базы данных:
- Создание базы данных:
- Создание таблицы в БД:
- Подключение БД для регистрации:
- Создание регистрации на PHP:
- Подтверждение Email:
- Вывод:
- Рекомендации по коду:
- Php регистрация email подтверждение
- Фильтрация данных с помощью zend-filter
- Контекстное экранирование с помощью zend-escaper
- Подключение Zend модулей к Expressive
- Совет: отправка информации в Google Analytics через API
- Подборка PHP песочниц
- Совет: активация отображения всех ошибок в PHP
- PHP: Регистрация пользователя с проверкой электронной почты на PHP
- Как отправить электронное письмо с подтверждением пользователя после регистрации с помощью ссылки активации
- Шаг 1: Создайте таблицу в БД с помощью запроса SQL
- Шаг 2: Создайте файл PHP для подключения к базе данных
- Шаг 3: Создайте страницу регистрации пользователя PHP
- Шаг 4: Сохранение регистрационных данных пользователя и отправка электронного письма
- Шаг 5: Создайте PHP-файл подтверждения электронной почты
Подтверждение адреса электронной почты на PHP
Я получил множество вопросов от моих читателей, в большинстве из которых они спрашивали меня, как реализовать систему подтверждения адреса электронной почты с помощью PHP.
Ниже приведен базовый урок, объясняющий, как создать базу данных и надлежащий код активации. Реализация выполнена с помощью методов mysqli_() , так как методы mysql_() уже потеряли свои позиции.
База данных
Примерная таблица базы данных users содержит пять столбцов: идентификатор пользователя ( uid ), адрес электронной почты ( email ), пароль ( password ), активация ( activation ) и статус ( status ):
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 код
Содержит простой HTML код:
db.php
Файл конфигурации базы данных, измените имя пользователя, пароль, базу данных и основные значения URL:
index.php
Содержит PHP код, который сохраняет данные регистрации пользователя в таблицу users.
Здесь же находится генерация кода активации с помощью MD5 шифрования:
)$/'; if(preg_match($regex, $email)) < $password=md5($password); // encrypted password $activation=md5($email.time()); // encrypted email+timestamp $count=mysqli_query($connection,"SELECT uid FROM users WHERE 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="Подтверждение электронной почты"; $body='Здравствуйте!
Мы должны убедиться в том, что вы человек. Пожалуйста, подтвердите адрес вашей электронной почты, и можете начать использовать ваш аккаунт на сайте.
'.$base_url.'activation/'.$activation.''; Send_Mail($to,$subject,$body); $msg= "Регистрация выполнена успешно, пожалуйста, проверьте электронную почту."; > else < $msg= 'Данный адрес электронный почты уже занят, пожалуйста, введите другой. '; >> else < $msg = 'Адрес, введенный вами, неверен. Пожалуйста, попробуйте еще раз.'; >> // HTML часть ?>
Send_Mail.php
В этом файле находится функция отправки сообщения, измените только SMTP хост, имя пользователя и пароль.
Здесь вы можете использовать элементы GMail SMTP для тестирования:
IsSMTP(true); // используем протокол 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
Содержит 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, который превращает
RewriteEngine On RewriteRule ^activation/([a-zA-Z0-9_-]+)/?$ activation.php?code=$1
CSS код
body < font-family: "Helvetica",Arial,sans-serif; font-weight: 500; color:#333; >label < width:100px; display:block; font-weight:bold; color:#666666; >#main < margin:0 auto; width:800px; >.input < padding:10px; font-size:14px; border:1px solid #999999; width:200px; margin-bottom:10px; >.button < padding:10px; background-color: #5fcf80 !important; border-color: #3ac162 !important; >.msg
Как сделать регистрацию на 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».
Php регистрация email подтверждение
В этом разделе помещены уроки по 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: Регистрация пользователя с проверкой электронной почты на PHP
Отправка ссылки подтверждения по электронной почте после регистрации на PHP и MySQL. Здесь мы покажем вам, как отправить электронное письмо с подтверждением пользователя после регистрации со ссылкой для активации в PHP и MySQL.
Кроме того, мы предоставляем ссылку на исходный код php для проверки электронной почты в конце этого руководства.
Предположим, любой пользователь зарегистрировался в вашем веб-приложении PHP и MySQL. И вам необходимо подтвердить адрес электронной почты пользователя, отправив ссылку активации/проверки в электронном письме при регистрации пользователя.
Как отправить электронное письмо с подтверждением пользователя после регистрации с помощью ссылки активации
Используйте приведенные ниже простые шаги для проверки/активации учетной записи пользователя по ссылке электронной почты в PHP и MySQL после регистрации
Шаг 1: Создайте таблицу в БД с помощью запроса SQL
Прежде всего, откройте phpmyadmin и выполните следующий запрос sql. Чтобы создать таблицу в выбранной базе данных:
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `email` varchar(100) NOT NULL, `password` varchar(250) NOT NULL, `status` int(11) NOT NULL DEFAULT '0', `email_verification_link` varchar(255) NOT NULL, `email_verified_at` TIMESTAMP NULL, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Шаг 2: Создайте файл PHP для подключения к базе данных
На этом шаге создайте файл db.php и добавьте в него следующий код:
Обратите внимание, что этот код используется для создания подключения к базе данных MySQL в проекте PHP.
Шаг 3: Создайте страницу регистрации пользователя PHP
На этом шаге создайте php-файл регистрации пользователя с именем index.php и добавьте приведенный ниже код PHP и HTML в файл index.php.
Обратите внимание, что этот HTML-код показывает форму регистрации пользователя.
User Registration with Email Verification in PHP We'll never share your email with anyone else. Шаг 4: Сохранение регистрационных данных пользователя и отправка электронного письма
На этом шаге создайте новый файл PHP с именем store-registration-send-email.php. Этот файл будет хранить регистрационные данные пользователя в таблице БД. А также отправить пользователю ссылку для подтверждения по электронной почте и сохранить ее в базе данных MySQL.
Добавьте следующий php-код в файл store-registration-send-email.php:
Click and Verify Email"; require_once('phpmail/PHPMailerAutoload.php'); $mail = new PHPMailer(); $mail->CharSet = "utf-8"; $mail->IsSMTP(); // enable SMTP authentication $mail->SMTPAuth = true; // GMAIL username $mail->Username = "your_email_id@gmail.com"; // GMAIL password $mail->Password = "your_gmail_password"; $mail->SMTPSecure = "ssl"; // sets GMAIL as the SMTP server $mail->Host = "smtp.gmail.com"; // set the SMTP port for the GMAIL server $mail->Port = "465"; $mail->From='your_gmail_id@gmail.com'; $mail->FromName='your_name'; $mail->AddAddress('reciever_email_id', 'reciever_name'); $mail->Subject = 'Reset Password'; $mail->IsHTML(true); $mail->Body = 'Click On This Link to Verify Email '.$link.''; if($mail->Send()) < echo "Check Your Email box and Click on the email verification link."; >else < echo "Mail Error - >".$mail->ErrorInfo; > > else < echo "You have already registered with us. Check Your email box and verify email."; >> ?>
Обратите внимание, что: — Если вы отправляете почту с помощью Gmail, вы должны разрешить незащищенным приложениям доступ к Gmail, вы можете сделать это, перейдя в настройки Gmail здесь.
После включения безопасных приложений, вы можете использовать свой Gmail для отправки электронных писем.
Шаг 5: Создайте PHP-файл подтверждения электронной почты
На этом шаге создайте php-файл проверки электронной почты с именем verify-email.php. Этот код файла проверяет электронную почту регистрации пользователя из базы данных mysql.
Итак, добавьте следующий код php и html в файл verify-email.php:
0) < $row= mysqli_fetch_array($query); if($row['email_verified_at'] == NULL)< mysqli_query($conn,"UPDATE users set email_verified_at ='" . $d . "' WHERE email='" . $email . "'"); $msg = "Congratulations! Your email has been verified."; >else < $msg = "You have already verified your account with us"; >> else < $msg = "This email has been not registered with us"; >> else < $msg = "Danger! Your something goes to wrong."; >?> User Account Activation by Email Verification using PHP