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 и добавьте в него следующий код:
<?php
$servername='localhost';
$username='root';
$password='';
$dbname = "my_db";
$conn=mysqli_connect($servername,$username,$password,"$dbname");
if(!$conn){
die('Could not Connect MySql Server:' .mysql_error());
}
?>
Обратите внимание, что этот код используется для создания подключения к базе данных MySQL в проекте PHP.
Шаг 3: Создайте страницу регистрации пользователя PHP
На этом шаге создайте php-файл регистрации пользователя с именем index.php и добавьте приведенный ниже код PHP и HTML в файл index.php.
Обратите внимание, что этот HTML-код показывает форму регистрации пользователя.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>User Registration with Email Verification in PHP</title>
<!-- CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-5">
<div class="card">
<div class="card-header text-center">
User Registration with Email Verification in PHP
</div>
<div class="card-body">
<form action="store-registration-send-email.php" method="post">
<div class="form-group">
<label for="exampleInputEmail1">Name</label>
<input type="text" name="name" class="form-control" id="name" required="">
</div>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" name="email" class="form-control" id="email" aria-describedby="emailHelp" required="">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="exampleInputEmail1">Password</label>
<input type="password" name="password" class="form-control" id="password" required="">
</div>
<div class="form-group">
<label for="exampleInputEmail1">Confirm Password</label>
<input type="password" name="cpassword" class="form-control" id="cpassword" required="">
</div>
<input type="submit" name="password-reset-token" class="btn btn-primary">
</form>
</div>
</div>
</div>
</body>
</html>
Шаг 4: Сохранение регистрационных данных пользователя и отправка электронного письма
На этом шаге создайте новый файл PHP с именем store-registration-send-email.php. Этот файл будет хранить регистрационные данные пользователя в таблице БД. А также отправить пользователю ссылку для подтверждения по электронной почте и сохранить ее в базе данных MySQL.
Добавьте следующий php-код в файл store-registration-send-email.php:
<?php
if(isset($_POST['password-reset-token']) && $_POST['email'])
{
include "db.php";
$result = mysqli_query($conn,"SELECT * FROM users WHERE email='" . $_POST['email'] . "'");
$row= mysqli_num_rows($result);
if($row < 0)
{
$token = md5($_POST['email']).rand(10,9999);
mysqli_query($conn, "INSERT INTO users(name, email, email_verification_link ,password) VALUES('" . $_POST['name'] . "', '" . $_POST['email'] . "', '" . $token . "', '" . md5($_POST['password']) . "')");
$link = "<a href='localhost/email-verification/verify-email.php?key=".$_POST['email']."&token=".$token."'>Click and Verify Email</a>";
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:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>User Account Activation by Email Verification using PHP</title>
<!-- CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<?php
if($_GET['key'] && $_GET['token'])
{
include "db.php";
$email = $_GET['key'];
$token = $_GET['token'];
$query = mysqli_query($conn,
"SELECT * FROM `users` WHERE `email_verification_link`='".$token."' and `email`='".$email."';"
);
$d = date('Y-m-d H:i:s');
if (mysqli_num_rows($query) > 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.";
}
?>
<div class="container mt-3">
<div class="card">
<div class="card-header text-center">
User Account Activation by Email Verification using PHP
</div>
<div class="card-body">
<p><?php echo $msg; ?></p>
</div>
</div>
</div>
</body>
</html>
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.