Jump to content


Photo

Enter a random code to make sure I am human


  • Please log in to reply
1 reply to this topic

#1 kenwvs

kenwvs
  • Members
  • PipPipPip
  • Advanced Member
  • 194 posts

Posted 16 July 2006 - 08:01 AM

Sometimes when you complete a form you have to enter a random code of numbers and letters to make sure that you are human.... what is this called and is it done in PHP or some other language?

I have an online order form that we want to look at implementing this and am wondering if this is a complicated process?

thanks,

Ken

#2 Gast

Gast
  • Members
  • PipPipPip
  • Advanced Member
  • 131 posts
  • LocationSouth East England

Posted 16 July 2006 - 09:09 AM

Not really. It is called a captcha and can be used as long as you have the GD library extension installed with PHP (most installations do by default).

The code for this is below. In a file called "captcha.php" which you include where you want to display the actual image put this code:

<?php
$IMGVER_TempString = "";
for($i=1; $i<=4; $i++) {
	$IMGVER_TempString .= GetRandomChar();
}
	
$_SESSION["IMGVER_RndText"] = $IMGVER_TempString;

function GetRandomChar() {
	
	mt_srand((double)microtime()*1000000);
	
	$IMGVER_RandVal = mt_rand(1,3);
	
	switch ($IMGVER_RandVal) {
	
		case 1:
			$IMGVER_RandVal = mt_rand(97, 122); 
			break;
		case 2:
			$IMGVER_RandVal = mt_rand(48, 57);
			break;
		case 3:
			$IMGVER_RandVal = mt_rand(65, 90);
			break;
			
	}
	
	return chr($IMGVER_RandVal);

}

echo '<img src="img.php?'.SID.'" border="0" />';
?>

Then you will need another file called "img.php" which generates the random text on the image:

<?php
$IMGVER_IMAGE = imagecreate(110,40);

$IMGVER_COLOR_BLACK = imagecolorallocate($IMGVER_IMAGE, 0, 0, 0);
$IMGVER_COLOR_WHITE = imagecolorallocate($IMGVER_IMAGE, 255, 255, 255);

imagefill($IMGVER_IMAGE, 0, 0, $IMGVER_COLOR_BLACK);

session_start();
$IMGVER_RandomText = $_SESSION["IMGVER_RndText"];
 
imagechar($IMGVER_IMAGE, 4, 20, 13, $IMGVER_RandomText[0] ,$IMGVER_COLOR_WHITE);
imagechar($IMGVER_IMAGE, 5, 40, 13, $IMGVER_RandomText[1] ,$IMGVER_COLOR_WHITE);
imagechar($IMGVER_IMAGE, 3, 60, 13, $IMGVER_RandomText[2] ,$IMGVER_COLOR_WHITE);
imagechar($IMGVER_IMAGE, 4, 80, 13, $IMGVER_RandomText[3] ,$IMGVER_COLOR_WHITE);

header("Content-type: image/jpeg");
imagejpeg($IMGVER_IMAGE);
?>

Then on your form when you test if the form has been submitted also check the captcha matches a text field that you have placed next to it (in this case called "captchaTextField"):

<?php
if(isset($_POST['submitButton'])) {
	if($_POST['captchaTextField'] == $_SESSION['IMGVER_RndText']) {
		// Handle your form here...
	}
}
?>


OS and Internet Specs:
Windows XP (with SP2), 1680x1050, PHP 4, MySQL 3, Internet Explorer 6 &7 /FireFox 2.0/Opera 9.2

Tutorials:
Simple Introduction to AJAX and XMLHttpRequest
Creating Live Data with AJAX Making a Google Suggest like application




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users