CREATE OWN CAPTCHA FOR YOUR WEBSITE

Hi Geeks,
I am sharing you a program for creating a captcha script using php and javascript. Following are the simple steps to create captcha in php

Step 1: Create a php script named ‘captcha.php’ with following code that generate and return a captcha image.

<?php session_start();
if(isset($_SESSION['custom_captcha']))
{
unset($_SESSION['custom_captcha']); // destroy the session if already there
}
$string1="abcdefghijklmnopqrstuvwxyz";
$string2="1234567890";
$string=$string1.$string2;
$string= str_shuffle($string);
$random_text= substr($string,0,8); // change the number to change number of chars
$_SESSION['custom_captcha']=$random_text;
$im = @ImageCreate (80, 20)
or die ("Cannot Initialize new GD image stream");
$background_color = ImageColorAllocate ($im, 204, 204, 204); // Assign background color
$text_color = ImageColorAllocate ($im, 51, 51, 255); // text color is given 
ImageString($im,5,5,2,$_SESSION['custom_captcha'],$text_color); // Random string from session added 
ImagePng ($im); // image displayed
imagedestroy($im); // Memory allocation for the image is removed. 
?>

Step 2: Now create a captcha.js file and put following code in the file.

function reload()
{
img = document.getElementById("capt");
img.src="captcha.php";
}

$(document).ready(function(){

var htm='<p><img src="captcha.php" id="capt">&nbsp;<input width="30" height="30" type="image" src="reload.png" onClick="reload();"  ></p><p><input type="text" name="g-recaptcha-response"  > ';

$('#custom_captcha').html(htm);//set the captcha data in element having id > custom_captcha . you can change as your div/Element id



});

Step 3: Now we need to create a Placeholder Element inside the form as following:

<!--inside the form tag-->
<!--this custom_captcha id is used in js file,you can change in js and html both-->
<div id="custom_captcha"></div>
<!--inside the form tag-->

Step 4: Now after submitting you from validate the captcha was right or not. So in your form submit action use following code.

<?php

if(!isset($_REQUEST['g-recaptcha-response']) || empty($_POST['g-recaptcha-response']) )
{
	
	$error = "Please fill the captcha.";
	//you can use this error var later to show error message on your page
}
else
{
 	
 
	$cresponse = urlencode($_REQUEST['g-recaptcha-response']);
 
	if($cresponse!=$_SESSION['custom_captcha'])
	{
	 $error = "INVALID CAPTCHA";
	 //you can use this var to show error invalid captcha
	}
	
}

//Now if no error then do your further process//
if($errors=="")
{
  //go ahed with form submission or data manipulation
}

?>

Note 1: In which page/form you are using the capcha , there should be session start in top of the file as following:

<?php @session_start(); ?>

and also include the js file in your php page head section. jquery should be available before the captcha.js inclusion as following:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src='captcha.js'></script>

Note 2: PHP GD LIBRARY SHOULD BE INSTALLED ON YOUR SERVER.