PHP

How to Create Your Own CAPTCHA (Number Addition) with Form in PHP

Ravindra Kumar

CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) is a simple security mechanism used to prevent automated bots from submitting forms on your website. While there are third-party CAPTCHA services like Google reCAPTCHA, creating a basic number-based CAPTCHA using PHP can be an effective and lightweight solution for small projects.

In this article, we’ll walk you through the process of creating a simple addition-based CAPTCHA using PHP sessions and form handling.

Why Use a Simple CAPTCHA?

Bots can easily submit forms, spam your website, or overload your server. A simple CAPTCHA that asks the user to solve a basic math problem (like 3 + 7) ensures that a human is interacting with your site.

Step-by-Step Guide

1. Start a Session and Generate Random Numbers

To create a dynamic math problem, we’ll generate two random numbers between 1 and 10 using PHP. We’ll store the correct answer in the session to compare it when the user submits the form.

<?php
session_start();

$num1 = rand(1, 10);
$num2 = rand(1, 10);
$_SESSION['captcha_answer'] = $num1 + $num2;
?>

2. Create the Form with the CAPTCHA

Now, let’s build a simple HTML form that displays the math question and takes the user’s input.

<!DOCTYPE html>
<html>
<head>
<title>Simple CAPTCHA Form</title>
</head>
<body>
<h2>Contact Form with CAPTCHA</h2>
<form action="submit.php" method="post">
Name: <input type="text" name="name" required><br><br>
Email: <input type="email" name="email" required><br><br>
What is <?php echo $num1; ?> + <?php echo $num2; ?>?
<input type="text" name="captcha" required><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>

This form asks the user a simple math question like “What is 3 + 5?” and takes the answer as input.

3. Validate the CAPTCHA on Form Submission

On the submit.php file, we validate the user’s answer by comparing it with the stored value in the session.

<?php
session_start();

$name = $_POST['name'];
$email = $_POST['email'];
$user_answer = $_POST['captcha'];

if ($user_answer == $_SESSION['captcha_answer']) {
echo "✅ Hello, $name. Your form was submitted successfully!";
// You can proceed to save the data or send an email
} else {
echo "❌ CAPTCHA failed. Please go back and try again.";
}
?>

If the answer matches the expected result, the form is considered valid.

Advantages of This Approach

  • No external dependencies – no need to integrate third-party services.

  • Lightweight and fast – simple math validation.

  • Effective for basic protection – ideal for small websites, blogs, or internal tools.

Download Own CAPTCHA (Number Addition) with Form in PHP

Ravindra Kumar

Ravindra is a passionate full stack developer and dedicated blogger with a flair for crafting user-friendly web applications and insightful articles. With expertise spanning front-end and back-end technologies, Ravindra brings ideas to life through innovative coding solutions.

Suggested Reading

How to Create a Simple Login System in PHP

A login system is one of the most essential features of any website or web application. Whether it’s an e-commerce site, a blogging platform, or an internal company portal, user authentication ensures that only authorized users can access specific areas. In this article, we’ll walk through creating a simple login system in PHP using MySQL. […]

Clear Cache After Logout in PHP | Prevent going to back after logout in PHP

One of the most common issues developers face when building a login system in PHP is users being able to press the back button after logging out and still seeing the dashboard or other protected pages. This happens because browsers often cache pages, so even without an active session, the back button shows the previously […]

How to Create a PHP Registration Form with Gmail SMTP Email Confirmation

Building a secure and user-friendly registration system is one of the most common requirements in web development. In this tutorial, we’ll create a registration form in PHP that: Accepts username, email, and password Validates for unique username and email Stores passwords in a secure hashed format Sends a confirmation email using Gmail SMTP with PHPMailer […]

PHP Login Dashboard Template with Bootstrap Free Download

A secure and stylish login dashboard is one of the most essential components of any web application. Whether you’re building an admin panel, school management system, e-commerce backend, or a personal project, having a professional login system with a responsive dashboard can save you both time and effort. In this article, we’ll discuss how you […]

How to send emails by Gmail SMTP Emails in PHP

I’ll show you how to make this Bootstrap form send emails using SMTP. We’ll do this in PHP with PHPMailer, because: It’s reliable Supports SMTP authentication Works with Gmail, Outlook, and custom mail servers Install PHPMailer You can either: Via Composer (recommended) composer require phpmailer/phpmailer Or download from: PHPMailer GitHub and include it manually. HTML […]

How to increase phpmyadmin import file size in xampp localhost

To increase the PHPMyAdmin import file size in XAMPP on your localhost, follow these steps: Step 1: Modify php.ini Open XAMPP Control Panel. Click Config next to Apache and select PHP (php.ini). Find and update the following values: upload_max_filesize = 100M post_max_size = 100M memory_limit = 256M max_execution_time = 300 max_input_time = 300 (You can […]