Home Tutorial Php Phpgd PHP GD Captcha Refersh

 
 

Share on Google+Share on Google+
PHP GD Captcha Refersh
Posted on: November 16, 2009 at 12:00 AM
Advertisement
In this example we will see how to refresh captcha image in php gd.
index.php

<?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

Advertisement

Related Tags for PHP GD Captcha Refersh:


Follow us on Twitter, or add us on Facebook or Google Plus to keep you updated with the recent trends of Java and other open source platforms.

Posted on: November 16, 2009

Recommend the tutorial

Advertisements Advertisements
 

 

 

DMCA.com