Scripts

Captcha met strepen

Weer een Captcha(Completely Automated Public Turingtest to tell Computers and Humans Apart) alsof er niet genoeg van zijn... maar deze maakt gebruik van imagestring() veel dingen kun je instellen hij werkt met sessies bekijk 'm maar en zeg maar wat je d'r van vind... 'k moet 'm nog ff omzetten neer engels..

captcha-met-strepen
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]

Reacties

0
Nog geen reacties.