Anda perlu membuat tabel di database yang disebut pengguna dan kolom yang paling penting adalah email dan reset_token. Mengirim email melalui localhost memerlukan akun Gmail dan Anda harus mengaktifkan aplikasi yang kurang aman untuk akun Anda. Anda dapat mengaktifkannya dari tautan di bawah ini
Aktifkan aplikasi yang kurang aman
Masukkan alamat email
Buat formulir sederhana untuk mendapatkan alamat email pengguna, tempat email pemulihan harus dikirim
<form method="POST" action="send-recovery-mail.php"> <input type="email" name="email"> <input type="submit" value="Send recovery email"> </form>
Kirim email pemulihan
Kami akan menggunakan perpustakaan PHPMailer, Anda dapat mengunduhnya dari tautan di bawah ini
Unduh PHPMailer.dll
Selanjutnya Anda perlu menyertakan perpustakaan dan membuat koneksi dengan database
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; $connection = mysqli_connect("localhost", "root", "", "classicmodels"); _
Pertama, Anda perlu memeriksa apakah pengguna email itu ada di database Anda
$email = $_POST["email"]; $sql = "SELECT * FROM users WHERE email = '$email'"; $result = mysqli_query($connection, $sql); if (mysqli_num_rows($result) > 0) { // } else { echo "Email does not exists"; }
Di dalam pernyataan jika, Anda perlu membuat token unik yang akan dikirim melalui email
if (mysqli_num_rows($result) > 0) { $reset_token = time() . md5($email); } else { echo "Email does not exists"; }
Setelah itu, Anda perlu menyimpan token ini ke catatan basis data pengguna tersebut
$sql = "UPDATE users SET reset_token='$reset_token' WHERE email='$email'"; mysqli_query($connection, $sql); _
Kemudian Anda membuat variabel bernama $message dan menulis semua teks yang ingin Anda kirim di email pemulihan
$message = "<p>Please click the link below to reset your password</p>"; $message .= "<a href='//localhost/tutorials/add-a-reset-password-option/reset-password.php?email=$email&reset_token=$reset_token'>"; $message .= "Reset password"; $message .= "</a>";
- Ganti URL web Anda dengan teks yang disorot
Sekarang, cukup kirim email melalui PHPMailer. Kami telah membuat fungsi terpisah untuk melakukan itu
function send_mail($to, $subject, $message) { $mail = new PHPMailer(true); try { //Server settings $mail->SMTPDebug = 0; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp.gmail.com;'; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'your_gmail_address'; // SMTP username $mail->Password = 'your_gmail_password'; // SMTP password $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 587; // TCP port to connect to $mail->setFrom('your_gmail_address', 'your_name'); //Recipients $mail->addAddress($to); // Content $mail->isHTML(true); // Set email format to HTML $mail->Subject = $subject; $mail->Body = $message; $mail->send(); echo 'Message has been sent'; } catch (Exception $e) { echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; } } _
Dan Anda dapat memanggil fungsi ini tepat setelah variabel $message
send_mail($email, "Reset password", $message);
Pada titik ini, saat Anda memasukkan email dan menekan kirim, Anda akan menerima email dengan tautan pemulihan. Saat mengklik, Anda akan dialihkan ke situs Anda di halaman reset-password. php
Masukan kata sandi baru
Sekarang Anda perlu membuat file bernama reset-password. php. Dalam file ini, pertama-tama Anda perlu memeriksa apakah itu berasal dari tautan email
<?php $email = $_GET["email"]; $reset_token = $_GET["reset_token"]; $connection = mysqli_connect("localhost", "root", "", "classicmodels"); $sql = "SELECT * FROM users WHERE email = '$email'"; $result = mysqli_query($connection, $sql); if (mysqli_num_rows($result) > 0) { // } else { echo "Email does not exists"; } _
Kedua, Anda perlu memeriksa apakah token tersebut tidak ditempa, sehingga Anda tidak dapat mengubah kata sandi orang lain
$user = mysqli_fetch_object($result); if ($user->reset_token == $reset_token) { // } else { echo "Recovery email has been expired"; } _
Ketiga, tampilkan formulir sederhana untuk memasukkan kata sandi baru. Email dan reset_token perlu disembunyikan di file ini sehingga Anda dapat memperbarui kata sandi hanya untuk pengguna tertentu
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; $connection = mysqli_connect("localhost", "root", "", "classicmodels"); _0
Atur ulang kata sandi
Sekarang Anda hanya perlu membuat file baru bernama new-password. php dan tempelkan kode berikut di dalamnya
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; $connection = mysqli_connect("localhost", "root", "", "classicmodels"); _1
Itulah cara mereset password menggunakan PHP dan MySQL. Pelajari juga bagaimana Anda bisa melakukan verifikasi email di website Anda