Introduction
Email verification is a crucial step in web development to validate user registrations and prevent spam. Implementing email verification in PHP ensures that users provide genuine email addresses, improving security and user experience. In this guide, we’ll walk you through the process of validating and verifying emails in PHP with practical examples.
Why Email Verification is Important
 - Prevents Fake Registrations – Ensures only real users sign up. 
 
 - Enhances Security – Reduces spam and fraudulent activities. 
 
 - Improves Email Deliverability – Prevents bouncing emails. 
 
 - Builds Trust with Users – A verified email means authentic communication. 
 
Methods of Email Verification in PHP
There are multiple ways to verify email addresses in PHP. The most effective ones include:
 - Syntax Validation – Checking if the email format is correct. 
 
 - Domain Validation – Ensuring the domain exists. 
 
 - SMTP Verification – Confirming the email address exists on the server. 
 
 - Confirmation Email with Token – Sending a verification link to the user’s email. 
 
1. Syntax Validation Using PHP Filters
PHP provides a built-in function to check email format:
$email = "[email protected]";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Valid email format.";
} else {
    echo "Invalid email format.";
}This method only checks if the email follows the correct structure but doesn’t verify if the email actually exists.
2. Domain Validation Using DNS Check
To check if the email domain exists, use the checkdnsrr function:
$email = "[email protected]";
$domain = substr(strrchr($email, "@"), 1);
if (checkdnsrr($domain, "MX")) {
    echo "Domain exists.";
} else {
    echo "Invalid domain.";
}This ensures the email domain is active but doesn’t confirm if the user exists on that domain.
3. SMTP Verification
SMTP verification connects to the mail server to check if the email is deliverable. This requires an SMTP library like PHPMailer.
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
    $mail->SMTPDebug = 2;
    $mail->isSMTP();
    $mail->Host = 'smtp.example.com';
    $mail->SMTPAuth = true;
    $mail->Username = '[email protected]';
    $mail->Password = 'your_password';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;
    echo "SMTP connection successful.";
} catch (Exception $e) {
    echo "SMTP Error: " . $mail->ErrorInfo;
}This method provides accurate results but may require whitelisting and permission configurations.
4. Sending a Confirmation Email with a Verification Link
A more reliable method is sending a verification email with a unique token. Here’s how:
Step 1: Generate a Unique Token and Store It
$token = bin2hex(random_bytes(50));
$email = "[email protected]";
$expiry = time() + (60 * 60);
$sql = "INSERT INTO users (email, token, expiry) VALUES ('$email', '$token', '$expiry')";
mysqli_query($conn, $sql);Step 2: Send the Email
$verificationLink = "https://yourwebsite.com/verify.php?email=$email&token=$token";
$subject = "Email Verification";
$message = "Click on this link to verify your email: $verificationLink";
$headers = "From: [email protected]";
if(mail($email, $subject, $message, $headers)) {
    echo "Verification email sent.";
} else {
    echo "Email sending failed.";
}Step 3: Verify the Email
In verify.php, check the token:
$email = $_GET['email'];
$token = $_GET['token'];
$sql = "SELECT * FROM users WHERE email='$email' AND token='$token' AND expiry > " . time();
$result = mysqli_query($conn, $sql);
if(mysqli_num_rows($result) > 0) {
    echo "Email verified successfully.";
    mysqli_query($conn, "UPDATE users SET verified=1 WHERE email='$email'");
} else {
    echo "Invalid or expired token.";
}Best Practices for Email Verification
 - Always use a double opt-in verification process. 
 
 - Encrypt stored tokens to enhance security. 
 
 - Set token expiry times to avoid misuse. 
 
 - Use reliable SMTP servers to prevent emails from being marked as spam. 
 
Conclusion
Implementing email verification in PHP is essential for maintaining security and authenticity in user registrations. By using syntax validation, domain verification, SMTP checks, and confirmation emails, you can ensure reliable email verification. Following best practices will further strengthen the process, keeping your website safe from fake registrations and spam.
Comments