captcha.php

<?php
#####################################################
#####################################################
##                                                 ##
##       Captcha script by Laurens A. Laman.       ##
##      This script Makes a Code and put it in     ##
##      the variable $_SESSION['security_code']    ##
##    The User must type the code of the picture   ##
##       You can put it in a <img src=> tag        ##
##                                                 ##
##           Script tested on PHP 4.4.1            ##
##                                                 ##
#####################################################
#####################################################

##################################################
##################################################
##                                              ##
##                How to use it?                ##
##                                              ##
## This is very simple: just upload this script ##
##  Then access it like <img src="captcha.php"> ##
##                                              ##
##################################################
##################################################


###################################################
###################################################
##                                               ##
##                 Let's START:                  ##
##                                               ##
###################################################
###################################################


###################################################
###################################################
##                                               ##
##               Modify Variables:               ##
##                                               ##
###################################################
###################################################
$aant       = "5";//this varable can be 2-40
$height     = "30";
$SQUARE     = "1";//this varable can be 1 = ON, 0 = OFF
$possible   = 'BCDFGHJKLMNPQRSTUVWXY23456789';//Characters used in code
$Background = "Auto"; // this varible can be AUTO, WHITE, RED, GREEN, BLUE
$LINES      = "1";//Draw lines?  this varable can be 1 = ON, 0 = OFF
$LINES_OVER = "1";//Draw lines Over text? this varable can be 1 = ON, 0 = OFF
###########################################################
###########################################################
##                                                       ##
## DO NOT MODIFY BENEATH UNLESS YOU KNOW WHAT YOUR DOING ##
##                                                       ##
###########################################################
###########################################################
//Start de sessie
session_start();

  function generateCode($characters,$possible) {
      
      $code = '';
      $i = 0;
      while ($i < $characters) { 
         $code[] = substr($possible, mt_rand(0, strlen($possible)-1), 1);
         $codestr.=substr($possible, mt_rand(0, strlen($possible)-1), 1);
         $i++;
      }
      return $code;
   }

// Maak 't plaatje
$width= $aant * 25;
$im = imagecreate($width, $height);

//Achtergrond kleur
$Background = strtoupper ($Background);
if ($Background=="AUTO"){
$bg = imagecolorallocate($im, rand(190,255), rand(190,255), rand(190,255));
}elseif($Background=="WHITE"){
$bg = imagecolorallocate($im, 255, 255, 255);
}elseif($Background=="RED"){
$bg = imagecolorallocate($im, 255 , 0, 0);
}elseif($Background=="GREEN"){
$bg = imagecolorallocate($im, 0, 255, 0);
}elseif($Background=="BLUE"){
$bg = imagecolorallocate($im, 0, 0, 255);
}else{
$bg = imagecolorallocate($im, 255, 255, 255);
}

// Genereer de code
$code= generateCode($aant,$possible);

if($LINES=="1" ){
// Teken variabele lijnen
$i=0;
while( $i<($width*$height)/150) {
	$noise_color = imagecolorallocate($im, rand(150,255), rand(150,255), rand(150,255));
	imageline($im, rand(0,$width), rand(0,$height), rand(0,$width), rand(0,$height), $noise_color);
          $i++;
}
}

if($SQUARE=="1" ){
// Teken een vierkand van 2 punten
$vierkand = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
imageline($im, 0, 0, $width, 0, $vierkand);
imageline($im, 0, 1, $width, 1, $vierkand);
imageline($im, $width-1, 0, $width-1, $height, $vierkand);
imageline($im, $width-2, 0, $width-2, $height, $vierkand);
imageline($im, $width-1, $height-1, 0, $height-1, $vierkand);
imageline($im, $width-1, $height-2, 0, $height-2, $vierkand);
imageline($im, 0, $height, 0, 0, $vierkand);
imageline($im, 1, $height, 1, 0, $vierkand);
}

$widthpercar= 25;
//zorg er voor dat de text niet over elkaar gaat staan
$i = 0;
      while ($i < $aant) { 
      	$min=($widthpercar*$i) - 1;
      	$max=$widthpercar*$i;
      	$textcolor = imagecolorallocate($im, rand(0,150), rand(0,150), rand(0,150));
if ($i == 0){
imagestring($im, 28, rand(0,$widthpercar), rand(0,$height-14), $code[$i], $textcolor);
}elseif ($i==$aant){
imagestring($im, 28, rand($min+8,$max), rand(0,$height-14), $code[$i], $textcolor);
}else{
imagestring($im, 28, rand($min+8,$max), rand(0,$height-14), $code[$i], $textcolor);
}
$codestr = $codestr . $code[$i];
$i++;
}


if($LINES_OVER=="1" ){
// teken voor de zekerheid nog ff 2 lijnen OVER de text
$i=0;
while( $i<2) {
	 $noise_color = imagecolorallocate($im, rand(230,255), rand(230,255), rand(230,255));
         imageline($im, rand(0,$width), rand(0,$height), rand(0,$width), rand(0,$height), $noise_color);
          $i++;
}
}

$_SESSION['security_code']=$codestr;
// Print het plaatje
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);

?>
een voorbeeld form met imagereload functie (javascript)
[code]

<html>
<head>
  <title>Captcha Test Form</title>
</head>

<body>
<script>
function refreshimage(){

document.getElementById('vertimg').src = document.getElementById('vertimg').src + '#';
document.form1.security_code.value="";
   }
</script>
<?php
 session_start();
if (!empty($_POST)) { 
   if(($_SESSION['security_code'] == $_POST['security_code']) && (!empty($_SESSION['security_code'])) ) {
      // Insert you code for processing the form here, e.g emailing the submission, entering it into a database. 
      $code = $_SESSION['security_code'];
      $mycode= $_POST['security_code'];
      echo"<font color=green>De code was corect <br>U vulde in: $mycode<br>gegenereerde code was: $code</font>";
      unset($_SESSION['security_code']);
   } else {
   	$code = $_SESSION['security_code'];
      $mycode= $_POST['security_code'];
      echo"<font color=red>De code was incorect <br>U vulde in: $mycode<br>gegenereerde code was: $code</font>";
      unset($_SESSION['security_code']);
   }
} 
?>
<form name="form1" method="POST">
<img src="captcha.php" Name="vertimg" id="vertimg"><br />
<a href="#" onclick="refreshimage()">Can't read</A><BR>
<input type="text" name="security_code"  /><br />


<input type="submit" value="Submit Form" />
</form>

</body>
</html>
[/code]