CAPTCHA is an acronym for "Completely Automated Public Turing test to tell Computers and Humans Apart". It is a type of challenge–response test used to determine whether a user is a human or a computer. CAPTCHAs are commonly used in online forms and websites to prevent bots and other automated programs from accessing or using the services.
In this tutorial, we will learn how to integrate or add google captcha in PHP HTML forms(registration, login, contact form). And using the captcha with PHP html forms, you can easily validate your contact, registration, login and other form data in PHP.
To add Google Captcha to the PHP registration form, follow these steps.
First of all, open your phpmyadmin and run the following sql query. To create table into your selected database:
CREATE TABLE `users1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`email` varchar(100) NOT NULL,
`password` varchar(250) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
In this step, create a file name db.php and add the following code into db.php file:
<?php
$servername='localhost';
$username='root';
$password='';
$dbname = "my_db";
$conn=mysqli_connect($servername,$username,$password,"$dbname");
if(!$conn){
die('Could not Connect MySql Server:' .mysql_error());
}
?>
To add google recaptcha to your website you need to register your website here https://www.google.com/recaptcha/admin. Then get your site key and secret key.about:blank
In this step, create user registration form that named registration.php and add google captcha validation.
So, open registration.php and add the following code into it:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>How to Add Captcha in PHP Registration Form</title>
<!-- CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<div class="container mt-5">
<div class="card">
<div class="card-header text-center">
Add Google Captcha in PHP Registration Form
</div>
<div class="card-body">
<form action="validate-captcha.php" method="post">
<div class="form-group">
<label for="exampleInputEmail1">Name</label>
<input type="text" name="name" class="form-control" id="name" required="">
</div>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" name="email" class="form-control" id="email" aria-describedby="emailHelp" required="">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="exampleInputEmail1">Password</label>
<input type="password" name="password" class="form-control" id="password" required="">
</div>
<div class="form-group">
<label for="exampleInputEmail1">Confirm Password</label>
<input type="password" name="cpassword" class="form-control" id="cpassword" required="">
</div>
<div class="g-recaptcha" data-sitekey="Your Site Key"></div>
<input type="submit" name="password-reset-token" class="btn btn-primary">
</form>
</div>
</div>
</div>
</body>
</html>
Now, create validate-captcha.php file and add the following code into your validate-captcha.php file.
<?php
if(isset($_POST['submit']) && $_POST['g-recaptcha-response']!="")
{
include "db.php";
$secret = 'You Site Key';
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
$responseData = json_decode($verifyResponse);
if($responseData->success)
{
$name = $_POST['name'];
$email = $_POST['email'];
$pass = $_POST['password'];
mysqli_query($conn, "INSERT INTO users(name, email ,password) VALUES('" . $_POST['name'] . "', '" . $_POST['email'] . "', '" . md5($_POST['password']) . "')");
echo "User registration form with captcha validation has been successfully saved";
}
}
The validate-captcha.php file code will validate your captach and then store user registration data into database table.
Note:
In this tutorial you learned how to create a user registration form with google reCAPTCHA using PHP and MySQL.
#mysql #php