Skip to Content
PHPCODE
google recaptcha php example
php code / August 31, 2021

A website’s contact form is a must-have feature. By entering the form, the visitor can communicate with the site administrator. The contact request form is used for a variety of things, including submitting questions, recommendations, and requests. PHP makes it simple to create contact form functionality. In most cases, the admin receives the contact request data through email. PHP may be used to create a contact form with email capability.

The CAPTCHA feature is highly beneficial for preventing bots from filling out forms. To prevent spam submission, make sure the CAPTCHA validation is enabled on the contact form. The most successful solution for integrating CAPTCHA in the contact form is Google reCAPTCHA. This article will show you how to combine Google reCAPTCHA with PHP and construct a contact form.

Process of integrating a PHP contact form with Google reCAPTCHA:

Create reCAPTCHA API keys for Google.

To accept contact requests, create an HTML form.
Add a checkbox widget for reCAPTCHA to your contact form.

Use Google reCAPTCHA and PHP to validate form data.

PHP is used to send form data to an email address.

Create reCAPTCHA API keys for Google.

The Site key and Secret key are necessary to use the Google reCAPTCHA API before getting started. Get a site and secret keys by registering your site on the Google reCAPTCHA Admin panel. You may build a Google reCAPTCHA Site key and Secret key using a step-by-step approach.

Create a CAPTCHA-enabled HTML form
Create some HTML components that will receive user input. To submit a contact request, fill out the following HTML form’s input fields (Name, Email, Subject, and Message).

Add the reCAPTCHA widget from Google to your contact form:

Include the JavaScript library for reCAPTCHA.
To link the reCAPTCHA checkbox widget to the form, use the g-recaptcha tag element.
In the data-sitekey element, specify the reCAPTCHA API’s Site Key.

<!-- Google recaptcha API library -->
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<!-- Status message -->
<?php if(!empty($statusMsg)){ ?>
<div class="status-msg <?php echo $status; ?>"><?php echo $statusMsg; ?></div>
<?php } ?>
<!-- Contact form fields -->
<form action="" method="post" class="cnt-form">
<div class="form-input">
<label for="name">Name</label>
<input type="text" name="name" placeholder="Enter your name" value="<?php echo !empty($postData['name'])?$postData['name']:''; ?>" required="">
</div>
<div class="form-input">
<label for="email">Email</label>
<input type="email" name="email" placeholder="Enter your email" value="<?php echo !empty($postData['email'])?$postData['email']:''; ?>" required="">
</div>
<div class="form-input">
<label for="subject">Subject</label>
<input type="text" name="subject" placeholder="Enter subject" value="<?php echo !empty($postData['subject'])?$postData['subject']:''; ?>" required="">
</div>
<div class="form-input">
<label for="message">Message</label>
<textarea name="message" placeholder="Type your message here" required=""><?php echo !empty($postData['message'])?$postData['message']:''; ?></textarea>
</div>
<div class="form-input">
<!-- Google reCAPTCHA box -->
<div class="g-recaptcha" data-sitekey="<?php echo $siteKey; ?>"></div>
</div>
<input type="submit" name="submit" class="btn" value="Submit">
</form>

The contact request data is sent to a server-side script (submit.php) for processing after the form is submitted. Add the server-side form submission script at the top of the file where the contact form sits.

<?php // Include form submission script 
include_once 'submit.php'; 
?>

Submission of a contact form with reCAPTCHA verification (submit.php)
This file, submit.php, provides server-side code to handle form submission and contact request processing.

The PHP $_POST variable is used to retrieve data from form fields.
Check that the input fields are not empty and are filled.
The PHP FILTER VALIDATE EMAIL filter is used to validate email addresses.
Use the g-recaptcha-response POST parameter to validate the reCAPTCHA checkbox.
Verify reCAPTCHA response using PHP — Use the secret and response parameters to call the Google reCAPTCHA API.
secret – Enter the secret key here.
g-recaptcha-response-response-response-response-response-response-response-response-respon

The contact request will be considered genuine and will proceed if the reCAPTCHA API provides a success answer.
Using the PHP mail() function, send contact form data to the admin through email.
The user sees a notice about the status of the contact form submission.

<?php 
// Google reCAPTCHA API key configuration 
$siteKey = 'Insert_reCaptcha_Site_Key'; 
$secretKey = 'Insert_reCaptcha_Secret_Key'; 
// Email configuration 
$toEmail = 'admin@example.com'; 
$fromName = 'Sender Name'; 
$formEmail = 'sender@example.com'; 
$postData = $statusMsg = $valErr = ''; 
$status = 'error'; 
// If the form is submitted 
if(isset($_POST['submit'])){ 
// Get the submitted form data 
$postData = $_POST; 
$name = trim($_POST['name']); 
$email = trim($_POST['email']); 
$subject = trim($_POST['subject']); 
$message = trim($_POST['message']); 
// Validate form fields 
if(empty($name)){ 
$valErr .= 'Please enter your name.<br/>'; 
} 
if(empty($email) || filter_var($email, FILTER_VALIDATE_EMAIL) === false){ 
$valErr .= 'Please enter a valid email.<br/>'; 
} 
if(empty($subject)){ 
$valErr .= 'Please enter subject.<br/>'; 
} 
if(empty($message)){ 
$valErr .= 'Please enter your message.<br/>'; 
} 
if(empty($valErr)){ 
// Validate reCAPTCHA box 
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])){ 
// Verify the reCAPTCHA response 
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$_POST['g-recaptcha-response']); 
// Decode json data 
$responseData = json_decode($verifyResponse); 
// If reCAPTCHA response is valid 
if($responseData->success){ 
// Send email notification to the site admin 
$subject = 'New contact request submitted'; 
$htmlContent = " 
<h2>Contact Request Details</h2> 
<p><b>Name: </b>".$name."</p> 
<p><b>Email: </b>".$email."</p> 
<p><b>Subject: </b>".$subject."</p> 
<p><b>Message: </b>".$message."</p> 
"; 
// Always set content-type when sending HTML email 
$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 
// More headers 
$headers .= 'From:'.$fromName.' <'.$formEmail.'>' . "\r\n"; 
// Send email 
@mail($toEmail, $subject, $htmlContent, $headers); 
$status = 'success'; 
$statusMsg = 'Thank you! Your contact request has submitted successfully, we will get back to you soon.'; 
$postData = ''; 
}else{ 
$statusMsg = 'Robot verification failed, please try again.'; 
} 
}else{ 
$statusMsg = 'Please check on the reCAPTCHA box.'; 
} 
}else{ 
$statusMsg = '<p>Please fill all the mandatory fields:</p>'.trim($valErr, '<br/>'); 
} 
}
// Display status message 
echo $statusMsg;

Note

Using HTML and PHP, this example script creates a simple contact form with CAPTCHA and email functionality. It aids in the integration of contact form functionality into a webpage while also protecting against bots and spam. This PHP contact form script can be used on any website, including one that is mobile responsive. Using HTML and PHP, this example script creates a simple contact form with CAPTCHA and email capability. It aids in the integration of contact form functionality into a webpage while also protecting against bots and spam. This PHP contact form script can be used on any website, including one that is mobile-friendly.

PHPCODE © 2024