Monday, December 7, 2009

Creating security image using PHP

Creating security image using PHP

Hi ... all coding freak, in this PHP tutorial I will explain how to create a Security Code - Security Image - or Captcha using PHP.

What is Security Image / Security Code?

Security image is a form of protection against a form of SPAM attacks.

For example Have you completing the registration form to get an email account on yahoo??

See the bottom of the submit button above, there is a security code that appears ... and you need to fill the security code

How It Works?


Form will show that in the security code generated by PHP scripts, if the page is in the security code refresh will in turn generate more so that this codenya very useful for countering spam attacks.


After the submit, php script will validate your data and a security pin code you have entered a security code if not equal, then the process will be canceled if the same security code, then the process will continue.

The following files will be used:

1. script form.html

2. script action.php

3. script captchasecurityimages.php

4. file font

Feel free to download the completed scripts with the font here

Just place it on your document root and run the form.html script.



remember this is only an example, you can develop your own script


1. script form.htm

<form action="action.php" method="post">

Pesan: <input type="text" name="message" /><br />

<img src="/captchasecurityimages.php?width=100&height=40&character=5" />

<br />

Security Code: <input id="security_code" name="security_code" type="text" />

<br />

<input type="submit" name="submit" value="Submit" />


2. script action.php


if( isset($_POST['submit'])) {
if(($_SESSION['security_code'] == $_POST['security_code']) &&

(!empty($_SESSION['security_code'])) ) {
// enter the script if validation is correct
echo 'Thank you, your message is : "'.$_POST['message'].'"';
} else {
// enter the script if validation is incorrect
echo 'Sorry, wrong security code<br />';
include "form.htm";
} else {

include "form.htm";

3. script captchasecurityimages.php



class CaptchaSecurityImages {

var $font = 'monofont.ttf';

function generateCode($characters) {

/* list all possible characters, similar looking characters and vowels have been removed */

$possible = '23456789bcdfghjkmnpqrstvwxyz';

$code = '';

$i = 0;

while ($i < $characters) {

$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);



return $code;


function CaptchaSecurityImages($width='120',$height='40',$characters='6')


$code = $this->generateCode($characters);

/* font size will be 75% of the image height */

$font_size = $height * 0.75;

$image = @imagecreate($width, $height) or die

('Cannot Initialize new GD image stream');

/* set the colors */

$background_color = imagecolorallocate($image, 255, 255, 255);

$text_color = imagecolorallocate($image, 20, 40, 100);

$noise_color = imagecolorallocate($image, 100, 120, 180);

/* generate random dots in background */

for( $i=0; $i<($width*$height)/3; $i++ ) {

imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height),

1, 1, $noise_color);


/* generate random lines in background */

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);


/* create textbox and add text */

$textbox = imagettfbbox($font_size, 0, $this->font, $code);

$x = ($width - $textbox[4])/2;

$y = ($height - $textbox[5])/2;

imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code);

/* output captcha image to browser */



$_SESSION['security_code'] = $code;



$width = isset($_GET['width']) ? $_GET['width'] : '120';

$height = isset($_GET['height']) ? $_GET['height'] : '40';

$characters = isset($_GET['characters']) ? $_GET['characters'] : '6';

header('Content-Type: image/jpeg');

$captcha = new captchasecurityimages($width,$height,$characters);


4. file font

Use font: monofont.ttf <Download here>
You should upload the font file it also, as an example I used the font "monofont.ttf", font files are the smallest size suitable for the website, all the above files should be in place in the same folder.

Related Posts by Categories


Post a Comment

Maybe this is what you looking for


Subscribe Now


IT Skill is not enough... Copyright © 2009 Designed by Bie Blogger Template