Skip to content
PHP Intermediate Updated 7h ago

Newsletter Signup with Double Opt-In

Newsletter signup with double opt-in flow using tokens and confirmation emails.

PHP
Download
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["email"])) {
  $email = filter_var($_POST["email"], FILTER_VALIDATE_EMAIL);
  if (!$email) { die("Invalid email"); }
  $token = bin2hex(random_bytes(16));
  // Store: INSERT INTO subscribers (email, token, status) VALUES (?, ?, "pending")
  $confirmLink = "https://yoursite.com/confirm?token=" . $token;
  mail($email, "Confirm your subscription", "Click to confirm: " . $confirmLink);
  echo "Check your email to confirm!";
}
if (isset($_GET["token"])) {
  $token = $_GET["token"];
  // UPDATE subscribers SET status = "active" WHERE token = ? AND status = "pending"
  echo "Subscription confirmed!";
}
?>
<form method="POST">
  <input type="email" name="email" placeholder="Enter your email" required>
  <button type="submit">Subscribe</button>
</form>

Technical Breakdown

Double opt-in newsletter signup with token generation and confirmation email.

Pitfalls & Solutions

1. Not using tokens. 2. Token expiration. 3. No duplicate check.