Verifikasi email memastikan pengguna memasukkan email yang benar dan miliknya sendiri, mengurangi akun palsu/spam. Artikel ini membahas cara membuat verifikasi email saat registrasi dengan PHP.

Konsep Verifikasi Email
Saat mendaftar, akun dibuat dengan status “belum aktif” dan sebuah token aktivasi. Token dikirim ke email sebagai tautan. Ketika pengguna mengkliknya, akun diaktifkan.
Langkah 1: Kolom di Tabel Users
ALTER TABLE users ADD COLUMN is_verified TINYINT DEFAULT 0, ADD COLUMN token_verifikasi VARCHAR(64);
Langkah 2: Saat Registrasi — Buat & Kirim Token
<?php
require "koneksi.php";
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$email = trim($_POST["email"]);
$password = password_hash($_POST["password"], PASSWORD_DEFAULT);
$token = bin2hex(random_bytes(32));
$stmt = $koneksi->prepare("INSERT INTO users (email, password, token_verifikasi) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $email, $password, $token);
$stmt->execute();
$link = "https://situsanda.com/verify.php?token=$token";
mail($email, "Aktivasi Akun", "Klik untuk mengaktifkan akun: $link");
echo "Registrasi berhasil! Cek email Anda untuk aktivasi.";
}
?>
Langkah 3: Halaman Aktivasi (verify.php)
<?php
require "koneksi.php";
$token = $_GET["token"] ?? "";
$stmt = $koneksi->prepare("SELECT id FROM users WHERE token_verifikasi = ? AND is_verified = 0");
$stmt->bind_param("s", $token);
$stmt->execute();
$user = $stmt->get_result()->fetch_assoc();
if ($user) {
// aktifkan akun & hapus token
$koneksi->query("UPDATE users SET is_verified = 1, token_verifikasi = NULL WHERE id = " . (int)$user["id"]);
echo "Akun berhasil diaktifkan! Silakan login.";
} else {
echo "Tautan tidak valid atau akun sudah aktif.";
}
?>
Langkah 4: Cegah Login Sebelum Verifikasi
Di proses login, tolak akun yang belum diverifikasi:
<?php
if (!$user["is_verified"]) {
die("Akun belum diaktivasi. Silakan cek email Anda.");
}
?>
Kesalahan Umum
- Email masuk spam — gunakan PHPMailer via SMTP resmi (Gmail/Brevo), bukan
mail()bawaan. - Token bisa dipakai ulang — set
NULLsetelah aktivasi. - Pengguna login sebelum verifikasi — jangan lupa cek
is_verifiedsaat login.
Kesimpulan
Anda telah membuat verifikasi email PHP yang membuat akun aktif hanya setelah pengguna mengklik tautan di emailnya. Ini meningkatkan kualitas data pengguna dan mengurangi spam. Kombinasikan dengan fitur reset password untuk sistem autentikasi yang lengkap.
Referensi: untuk pendalaman, kunjungi dokumentasi resmi PHP (php.net).

