Chat with us, powered by LiveChat

This website uses cookies

Our website, platform and/or any sub domains use cookies to understand how you use our services, and to improve both your experience and our marketing relevance.

PHP 7.3 Is Now Available On Cloudways. Try Now!

How to Create a PHP Contact Form With MySQL & HTML5 Validation

March 30, 2019

5 Min Read
php contact form
Reading Time: 5 minutes

A PHP contact form allows users to communicate with website administrators. It allows them to send queries to the site owners about relevant services or features. Using the contact form, web administrators are able to manage their business emails. Once there is an active contact form available, it can generate queries. It easily gets connected with the database, thus providing complete record and details about the users who are willing to contact and send their queries to website administrators.

Prerequisites

To create a simple PHP contact form with MySQL, I assume that you have a PHP application installed on a web server. My setup is:

  • PHP 7.1
  • MySQL
  • Jquery/Ajax

To make sure that that I don’t get side-tracked by server level issues, I decided to host PHP application on Cloudways managed servers because the platform offers a powerful PHP optimized environment. In addition, I don’t have to deal with server management hassles and thus focus on the core idea of this tutorial.

You can also try out Cloudways for free by signing up an account on the platform following this GIF:

Create the Contact Form HTML

Create the contact form HTML as shown below with validation and save it with .php extension. Value which will be written between the double quotes in attribute Name like name=”u_name” in input tags work as a variable name. These attributes will contain the data from the form that we will use to save in our database . There are two methods to send your form data to your PHP page: GET and POST. I will be using POST as it hides the user data and there is no limit to send data.

Give Your PHP Applications Optimum Web Performance

Host Your PHP Apps With Us & See The Blazing Web Performance Yourself!

Note: For styling you can use your own CSS and also use Bootstrap Classes for better styling.

!DOCTYPE html>
<html>
<head>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<style>

#loading-img{
display:none;
}

.response_msg{
margin-top:10px;
font-size:13px;
background:#E5D669;
color:#ffffff;
width:250px;
padding:3px;
display:none;
}

</style>
</head>
<body>

<div class="container">
<div class="row">

<div class="col-md-8">
<h1><img src="Inquiry.png" width="80px">Easy Contact Form With Ajax MySQL</h1>
<form name="contact-form" action="" method="post" id="contact-form">
<div class="form-group">
<label for="Name">Name</label>
<input type="text" class="form-control" name="your_name" placeholder="Name" required>
</div>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" name="your_email" placeholder="Email" required>
</div>
<div class="form-group">
<label for="Phone">Phone</label>
<input type="text" class="form-control" name="your_phone" placeholder="Phone" required>
</div>
<div class="form-group">
<label for="comments">Comments</label>
<textarea name="comments" class="form-control" rows="3" cols="28" rows="5" placeholder="Comments"></textarea> 
</div>

<button type="submit" class="btn btn-primary" name="submit" value="Submit" id="submit_form">Submit</button>
<img src="img/loading.gif" id="loading-img">
</form>

<div class="response_msg"></div>
</div>
</div>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#contact-form").on("submit",function(e){
e.preventDefault();
if($("#contact-form [name='your_name']").val() === '')
{
$("#contact-form [name='your_name']").css("border","1px solid red");
}
else if ($("#contact-form [name='your_email']").val() === '')
{
$("#contact-form [name='your_email']").css("border","1px solid red");
}
else
{
$("#loading-img").css("display","block");
var sendData = $( this ).serialize();
$.ajax({
type: "POST",
url: "get_response.php",
data: sendData,
success: function(data){
$("#loading-img").css("display","none");
$(".response_msg").text(data);
$(".response_msg").slideDown().fadeOut(3000);
$("#contact-form").find("input[type=text], input[type=email], textarea").val("");
}

});
}
});

$("#contact-form input").blur(function(){
var checkValue = $(this).val();
if(checkValue != '')
{
$(this).css("border","1px solid #eeeeee");
}
});
});
</script>
</body>
</html>

Configure the MySQL Database

The next step is to setup and configure the MySQL database. For this, fire up the Cloudways Database manager and create a table ‘contact_form_info’, with the fields  id , name , email , phone,comments.

Next, create config.php that will be used to set up the connection between the PHP app and the database. Once the file has been created, open it and paste the following code in it:

<?php
$host = "localhost";
$userName = "fyrhp";
$password = "RTDE";
$dbName = "fyrhp";

// Create database connection
$conn = new mysqli($host, $userName, $password, $dbName);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>

You might also like: How to Connect to a Remote MySQL Database

Create the PHP Contact Form Script

Now let’s create a file get_response.php and paste the following code in it:

<?php 
require_once("config.php");
if((isset($_POST['your_name'])&& $_POST['your_name'] !='') && (isset($_POST['your_email'])&& $_POST['your_email'] !=''))
{
 require_once("contact_mail.php

“);

$yourName = $conn->real_escape_string($_POST['your_name']);
$yourEmail = $conn->real_escape_string($_POST['your_email']);
$yourPhone = $conn->real_escape_string($_POST['your_phone']);
$comments = $conn->real_escape_string($_POST['comments']);

$sql="INSERT INTO contact_form_info (name, email, phone, comments) VALUES ('".$yourName."','".$yourEmail."', '".$yourPhone."', '".$comments."')";


if(!$result = $conn->query($sql)){
die('There was an error running the query [' . $conn->error . ']');
}
else
{
echo "Thank you! We will contact you soon";
}
}
else
{
echo "Please fill Name and Email";
}
?>

Since, I have used the POST method for submitting the form data to the server, I will use two global methods, $_REQUEST and $_POST to retrieve and save the data in the server local variable. The difference between these two is that $_REQUEST can retrieve data from both methods i.e. GET and POST. However, $_POST can only receive data from the POST method.

php hosting signup

Here is what the PHP contact form script looks in action:

 

Mail Method

I also create a file contact_mail.php for mail in which send your contact form data on your mail easily.

<?php
$toEmail = "pardeepkumargt@gmail.com";
$mailHeaders = "From: " . $_POST["your_name"] . "<". $_POST["your_email"] .">\r\n";
if(mail($toEmail, $_POST["comments"], $_POST["your_phone"], $mailHeaders)) {
echo"<p class='success'>Contact Mail Sent.</p>";
} else {
echo"<p class='Error'>Problem in Sending Mail.</p>";
}
?>

You might also like: How to Send Email in PHP

Form Captcha

You can use Captcha code in a form to ensure that the form is submitted with manual intervention without using any tools.

PHP Contact Form with Captcha

To develop contact form with captcha, let’s start with the following HTML code. In this code, I will put a PHP file link into the image tag with the name of captcha.php.

<div>

<label>Captcha</label>

<span id="captcha-info" class="info"></span><br/>

<input type="text" name="captcha" id="captcha" class="demoInputBox"><br>

</div>

<div>

<img id="captcha_code" src="captcha.php" />

<button name="submit" class="btnRefresh" onClick="refreshCaptcha();">Refresh Captcha</button>

</div>

Contact Form Captcha Validation

For Captcha field validation, you can paste the following code in <script> tag. Using this code, you can set jQuery validation for captcha form validation.

if(!$("#captcha").val()) {

$("#captcha-info").html("(required)");

$("#captcha").css('background-color','#FFFFDF');

valid = false;

}

Captcha Refresh

This simple jQuery script will refresh PHP captcha code, and recreate the image with the new code. This new image will be set as captcha image source.

function refreshCaptcha() {

$("#captcha_code").attr('src','captcha.php');

}

PHP Captcha Image

PHP uses a function called PHP rand() to generate a random number. Using md5(), you can encrypt the number and split it into 6-character captcha code. The code is not only added to the PHP session but also added as a source of captcha image using PHP GD function.

session_start();

$random_alpha = md5(rand());

$captcha_code = substr($random_alpha, 0, 6);

$_SESSION["captcha_code"] = $captcha_code;

$target_layer = imagecreatetruecolor(70,30);

$captcha_background = imagecolorallocate($target_layer, 255, 160, 119);

imagefill($target_layer,0,0,$captcha_background);

$captcha_text_color = imagecolorallocate($target_layer, 0, 0, 0);

imagestring($target_layer, 5, 5, 5, $captcha_code, $captcha_text_color);

header("Content-type: image/jpeg");

imagejpeg($target_layer);

Form Handler Library

You can also perform captcha and form validation by using Form Handler library. Check the following example:

use FormGuide\Handlx\FormHandler;

$demo = new FormHandler();

$validator = $demo->getValidator();

$validator->fields(['name','email'])->areRequired()->maxLength(50);

$validator->field('email')->isEmail();

$validator->field('message')->maxLength(6000)

$demo->requireCaptcha();

Final Words

In this tutorial, I demonstrated creating a PHP contact form using HTML, AJAX, jQuery and MySQL. Here is a live demo of the PHP contact form code in action. I’ve also given a brief overview about captcha form, and why you must use it in contact form. The article not only demonstrates how to setup captcha in a contact form, but also defines how to setup its validation using the script tag. Furthermore, you can also use Form Handler library to integrate captcha validation within the form.

Still, if you have some more questions regarding captcha integration in the contact form, or want to share some of your tips on the topic, feel free to write down your suggestions in the comments section below.

Share your opinion in the comment section. COMMENT NOW

Share This Article

Launch PHP websites without the worry of Server Management.

Pre-Installed Optimized Stack with Git, Composer & SSH

Ahmed Khan

Ahmed was a PHP community expert at Cloudways - A Managed PHP Hosting Cloud Platform. He is a software engineer with extensive knowledge in PHP and SEO. He loves watching Game of Thrones is his free time. Follow Ahmed on Twitter to stay updated with his works. You can email him at ahmed.khan@cloudways.com

Get Our Newsletter
Be the first to get the latest updates and tutorials.

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!