<?php
session_start();
if
(isset($_POST['submit_x']) && isset($_POST['submit_y'])) { if(!empty($_POST['name']) && !empty($_POST['message'])) { $data = base64_decode($_SESSION['captcha_image_code']); $captcha_image = imagecreatefromstring($data); $x = $_POST['submit_x']; $y = $_POST['submit_y']; $rgb = imagecolorat($captcha_image, $x, $y); $color_tran = imagecolorsforindex($captcha_image, $rgb); $captcha_ok = ($color_tran['red'] == 255 && $color_tran['green'] == 0 && $color_tran['blue'] == 0 && $color_tran['alpha'] == 0) ; if($captcha_ok) { $result = "Thanks for submitting your comment.";}
}
else { $result = "Please fill out the form.";}
}
?>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><
html xmlns="http://www.w3.org/1999/xhtml"><
head><
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><
title>Captcha</title></
head><
body><?php
if(!empty($result)) echo "<div style='color:#990000; margin-bottom: 20px;'>" . $result . "</div>"; ?><
form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> <p>Name<br/><input type="text" name="name" /></p> <p>Message<br/><textarea name="message"></textarea></p> <p>Click the captcha to get another security code:
<br/> <input type='image' name='submit' src='captcha.php' alt='Captcha Security Image' /> </p></
form></
body></
html>This page is saved as index.php
captcha.php
<?php
session_start();
class
CaptchaSecurityImages { var $font = 'C:/WINNT/Fonts/arial.ttf'; function generateCode($characters) { $possible = '23456789bcdfghjkmnpqrstvwxyz'; $code = ''; $i = 0; while ($i < $characters) { $code .= substr($possible, mt_rand(0, strlen($possible)-1), 1); $i++;}
return $code;}
function CaptchaSecurityImages($width='320',$height='40',$characters='6') { $code = $this->generateCode($characters); $font_size = $height * 0.75; $image = imagecreate($width, $height) or die('Cannot initialize new GD image stream'); $background_color = imagecolorallocate($image, 255, 255, 255); $text_color = imagecolorallocate($image, 20, 40, 100); $noise_color = imagecolorallocate($image, 100, 120, 180); for( $i=0; $i<($width*$height)/3; $i++ ) {imagefilledellipse(
$image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);}
for( $i=0; $i<($width*$height)/150; $i++ ) {imageline(
$image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);}
$textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function'); $x = ($width - $textbox[4])/2; $y = ($height - $textbox[5])/2;imagettftext(
$image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');header(
'Content-Type: image/jpeg');imagejpeg(
$image);imagedestroy(
$image); $_SESSION['security_code'] = $code;}
}
$width
= isset($_GET['width']) && $_GET['width'] < 600 ? $_GET['width'] : '120';$height
= isset($_GET['height']) && $_GET['height'] < 200 ? $_GET['height'] : '40';$characters
= isset($_GET['characters']) && $_GET['characters'] > 2 ? $_GET['characters'] : '6';$captcha
= new CaptchaSecurityImages($width,$height,$characters);?>
After running the program you will get the following output
If you are facing any programming issue, such as compilation errors or not able to find the code you are looking for.
Ask your questions, our development team will try to give answers to your questions.