Jump to content

Captcha Help (Image broken)


Shizzell

Recommended Posts

Alright I'm trying to impliment this captcha:

 

http://dirpg.co.nr/ecaptcha.zip

 

and I get this when trying to impliment it:

http://dirpg.co.nr/page.php

 

I'm seriuosly out in the dark right now.

 

Am I missing a apache module that I need?

 

I say this because I tried implimenting a different captcha, and I get:

http://dirpg.co.nr/captcha/form.php

 

(A broken link to the image)

 

Thanks a lot,

 

Jake

Link to comment
Share on other sites

Page.php (This is where it should display the image)

 

<script language='JavaScript'>
   <!--
     function setFocus() {
     document.verifica.key.focus();
     }
    
   -->
   </script>


<?
session_start();

$key=$_POST['key'];
?>

<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <title></title>
  </head>
  <body onLoad="setFocus()">


<img src='c:\www\milrpg\image.php'>

<form action="page.php" method="post" name="verifica" onsubmit="setFocus();">

<input type="text" name="key" size=17 maxlength=15 ><br>
<input type="submit" value=" Test Code ">
</form>

  </body>
</html>

<?

//print $stronzo;
if($key)
{if($key==$code){?>
<script language="javascript">
<!--
alert("Exact Code!!!"); 

//-->
</script>
<?} else 

{?>
<script language="javascript">
<!--
alert("Sorry...Wrong Code!!! Exact code was <?print $code;?>. Try again."); 

//-->
</script>
<?}

	 }




?>

 

image.php (Both are in the same directory-> C:\www\milrpg)

 

<?php


/* Set thick colored lines in background.
   0  no linear background.
   1  linear background.  
   */
$LinearBackgroud = 0;

/* Set granular noise.
   0  no granular noise.
   1  granular noise.  
   */
$GranularNoise = 0;


/* Set linear noise.
   0  no square noise.
   1  square noise.  
   */
$LinearNoise = 0;


/* Set square noise .
   0  no square noise.
   1  square noise.  
   */
$SquareNoise = 0;

/* Horizontal Character distortion.
   0  no distortion.
   1  distortion.  
   */
$distortion_hor = 0;


/* Vertical Character distortion.
   0  no distortion.
   1  distortion.  
   */
$distortion_ver = 0;


/* Character color select.
   0  All characters are black.
   1  random color.  
   */
$CharacterColorMode = 0;


/* subset of Security Code 
   0  User has to type the whole code.
   1  User has to type a subset of Code: only red characters 
   
   NOTE - This option is obviously not compatible with random color of characters 
   */
$subset = 0;


/* Character Phase Shift
   0  no staggering.
   1  staggering.  
   */
$staggering = 0;


/* Character size select. 
   0.5   character size randomizes from 50 to 100%.
   0.6   character size randomizes from 60 to 100%.
   etc
   1     fixed size. 
   */
$CharacterSizeMode = 1;



/* Character rotation angle. The script will randomize the rotation of the
   characters between this angle in degrees, positive and negative. Set to
   zero for no rotation.  
   0  no rotation
   20 rotation of 20°
   */
$CharacterRotationMode = 0;

/*  Default font. You can change it. Font must be in same directory of script 
   */
$font = 'sans.ttf';


/*  Type of fonts used. Fonts must be in same directory of script 
   0 no random font. Default font is always loaded
   1 random fonts
   */
$randomfont = 1;
$fontlist = array ("sans.ttf","box.ttf","ball.ttf","shades.ttf","outlined.ttf","sp.ttf","dayplanner.ttf");


/* number and type of characters in the security code. 
   */
$Codelength = 6;
$Characters = "23456789abcdefghkmnpqrstuvwxyz";


/* Set image height  (width is automatically set) 
   */
$height = 60;


/* Set Backgroud color mode
    0 White
    1 Grey
    2 random shading background
   */
$BackgroudColorMode = 1;

# Don't change anything below here unless you know what you're doing

############################################################




// Create Securitycode
  for ($i = 0; $i < $Codelength; $i++) {
    $SecurityCode[$i] = substr($Characters,mt_rand(0,strlen($Characters) - 1),1);
    $pass=$pass.$SecurityCode[$i];
    $rand = mt_rand(0,1);
    If ($i == 1) {$rand = 1;}
    if ($rand > 0) 
    {$pass2=$pass2.$SecurityCode[$i]; 
     $select[$i] = $i;
     
     
    } 
    else
    { 
     $select[$i] = -1;
    }
    
    }

if ($randomfont > 0) {$font = $fontlist[mt_rand(0,6)];}



// Set  font size
$fontsize = $height * 0.6;	


// Set Width and Create image
$textbox2 = imagettfbbox($fontsize, 0, $font, $pass) or die('Error in imagettfbbox function');
$width = (abs($textbox2[4] - $textbox2[0]))*1.25;
$im = imagecreatetruecolor($width, $height);


// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 238, 238, 238);
$black = imagecolorallocate($im, 0, 0, 0);
$red = imagecolorallocate($im, 255, 0, 0);

// Create backgroud

ImageFill($im, 0, 0, $grey);

if ($BackgroudColorMode < 1) {ImageFill($im, 0, 0, $white);}

if ($BackgroudColorMode > 1) {

// colors to fade
$red_start   = mt_rand(0,255);
$red_end     = mt_rand($red_start,255);

$green_start = mt_rand(0,255);
$green_end   = mt_rand($green_start,255);

$blue_start  = mt_rand(0,255);
$blue_end    = mt_rand($blue_start,255);

function dif ($start,$end)
{
if ($start >= $end)
	$dif = $start - $end;
else
	$dif = $end - $start;

return $dif;
}


function draw($start,$end,$pos,$step_width)
{
if ($start > $end)	
	$color = $start - $step_width * $pos;
else
	$color = $start + $step_width * $pos;

return $color;
}	

$dif_red = dif($red_start,$red_end);
$dif_green = dif($green_start,$green_end);
$dif_blue = dif($blue_start,$blue_end);

$step_red = $dif_red / $width;
$step_green = $dif_green / $width;
$step_blue = $dif_blue / $width;

$height = $height-1;


for ($pos=0; $pos<=$width; $pos++)
{
$color = ImageColorAllocate($im,draw($red_start,$red_end,$pos,$step_red),
					   			draw($green_start,$green_end,$pos,$step_green),
					   			draw($blue_start,$blue_end,$pos,$step_blue));	

imageline($im,$pos,"0",$pos,$height,$color);

}


$height = $height+1;

}


/* generate colored thick random lines in background */

if ($LinearBackgroud > 0) {
	 imagesetthickness($im, $height/10);
	for( $i=0; $i<$width*$height/200; $i++ ) {
	$Color = imagecolorallocate($im, mt_rand(100,250), mt_rand(100,250), mt_rand(100,250));
   
		imageline($im, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $Color);
	}
}


// staggering
$x = $width/18;
for ($i = 0; $i < $Codelength; $i++) {
$Color = $black;
if ($CharacterColorMode > 0)  $Color = imagecolorallocate($im, mt_rand(0,250), mt_rand(0,250), mt_rand(0,250));

$textbox = imagettfbbox($fontsize, 0, $font, $SecurityCode[$i]) or die('Error in imagettfbbox function');
$y = ($height - $textbox[5])/2;
$w = abs($textbox[4] - $textbox[0]);

$Size = mt_rand($fontsize*$CharacterSizeMode,$fontsize);
$Angle = mt_rand(-$CharacterRotationMode,$CharacterRotationMode);
if ($staggering > 0) { 
  $x = $x + rand($w-$w/18 , $w+$w/18);
$y = rand($y-($height/6) ,$y+($height/6));  

if ($subset < 1) {ImageTtfText($im,$Size,$Angle,$x-$w,$y,$Color,$font,$SecurityCode[$i]); } 
else {

if ($select[$i] > -1) {ImageTtfText($im,$Size,$Angle,$x-$w,$y,$red,$font,$SecurityCode[$i]); }
              else {ImageTtfText($im,$Size,$Angle,$x-$w,$y,$Color,$font,$SecurityCode[$i]);}

}
} 
else {

$y = $height - $height/4;
$x = $x + $w*1.1;
  



if ($subset < 1) {ImageTtfText($im,$Size,$Angle,$x-$w,$y,$Color,$font,$SecurityCode[$i]); } 
else {

if ($select[$i] > -1) {ImageTtfText($im,$Size,$Angle,$x-$w,$y,$red,$font,$SecurityCode[$i]); }
              else {ImageTtfText($im,$Size,$Angle,$x-$w,$y,$Color,$font,$SecurityCode[$i]);}

}

}
}


//Vertical distortion amplitude and frequency, 
// good values $ampl_y = 5 $freq_y = 10; 0 for no vertical distorsion
$ampl_y = 5; 
$freq_y = 10;

//Horizontal distorsion amplitude and frequency, 
// good values $ampl_x = 5 $freq_x = 5; 0 for no vertical distorsion
$ampl_x = 5; 
$freq_x = 10; 


if ($distortion_ver > 0) {
//Apply vertical distortion
for ($i=0;$i<$width;$i+=2){
            imagecopy($im,$im,
                $xx+$i-2,$yy+sin($i/$freq_y)*$ampl_y,     //dest
                $xx+$i,$yy,             //src
                2,$height);
        }
}  
if ($distortion_hor > 0) {      
//Apply horizontal distortion
for ($i=0;$i<$height;$i+=1){
            imagecopy($im,$im,
                $xx+sin($i/$freq_x)*$ampl_x,$yy+$i-1,     //dest
                $xx,$yy+$i,             //src
                $width,1);
        }
}


// Apply square noise
if ($SquareNoise > 0) {
imagesetthickness($im, 1);
for($i = 0; $i <= $width; $i += $height/5) {
        @ImageLine($im, $i, 0, $i, $height, $black);
      }
      for($i = 0; $i <= $height; $i += $height/5) {
        @ImageLine($im, 0, $i, $width, $i, $black);
      }
}



// Apply linear noise
if ($LinearNoise > 0) {
imagesetthickness($im, 1);
	for( $i=0; $i<$height; $i++ ) {
		imageline($im, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $black);
	}
}

// Apply granular noise
if ($GranularNoise > 0) {
for ($i=1;$i<($width*$width/10);$i++)
            {
                $cor_x = mt_rand(1,$width);
                $cor_y = mt_rand(1,$height);
                imagesetpixel($im,$cor_x,$cor_y,$black);
            }
}

// make image 
header('Content-Type: image/jpeg');
	imagejpeg($im);
	imagedestroy($im);

//store code to verify

if ($subset > 0) {$pass = $pass2;}



session_start();
$_SESSION['code'] = $pass


?> 

 

Thanks

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.