Cara Membuat Verifikasi Email saat Registrasi dengan PHP

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.

Alur Verifikasi Email
Alur Verifikasi Email

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 NULL setelah aktivasi.
  • Pengguna login sebelum verifikasi — jangan lupa cek is_verified saat 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).

Baca Juga

Ali Akbar

Software Developer yang fokus mengembangkan aplikasi berbasis Web dan Desktop. Senang mempelajari teknologi baru terutama di bidang web design dan web development.

View all posts by Ali Akbar →

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *