Re: Which CAPTCHA is the besta?

From: Date: Fri, 17 Aug 2007 12:27:24 +0000
Subject: Re: Which CAPTCHA is the besta?
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-260958@lists.php.net to get a copy of this message
Here's a simple one you can hack to fit your needs. This a file for generating the captcha image. <?php /** * Makes graphical image of supplied number argument */ session_start(); $num_str= $_SESSION['scode_show']; if(isset($_GET['scode'])) $num_str= $_GET['scode']; header ("Content-type: image/jpeg"); // $width = 60; //Box size, adjust as required // $height = 34; // $font= 'gogobig.gdf'; //pick one $font= 'addlg10.gdf'; // $font= 'automatic.gdf'; // $font= 5; //default $font = imageloadfont($font); $height= imagefontheight($font) + 6; $width= imagefontwidth($font)*strlen($num_str)+6; $src = @imagecreate($width, $height) or die("Cannot Initialize new GD image stream"); $background_color = imagecolorallocate($src, 200, 200, 200); $text_color = imagecolorallocate($src, 20, 20, 255); imagestring($src, $font, 3, 3, $num_str, $text_color); imagejpeg($src); imagedestroy($src); ?> This is the code snippet for your client page: /** * This is a typical use of the catcha code * * */ //**** Security Code ***********/ $sid= session_id(); //See if session handler exists if(empty($sid)) session_start(); //This also places a session cookie, if enabled by client's browser $scode= rand(100, 999); //pick the range as you like. 100 to 999 is probably sufficent $_SESSION['scode']; $prev_scode= $_SESSION['scode_show']; //This is the scode the user saw previously and was to enter $_SESSION['scode_show']= $scode; //Set an new scode; this is used by make_scode_img.php for the label graphic generation $scode_passed= (isset($_SESSION['scode_passed']))? TRUE:FALSE; //print_r($_SESSION); if(!$scode_passed && isset($_POST['scode']) && $_POST['scode']== $prev_scode) $scode_passed= TRUE; //If not set, see if passed $scode_txt= NULL; //So can be used without a if() test if(!$scode_passed){ $len= strlen($scode)+2; $scode_txt .= <<<txt <form enctype="multipart/form-data" action="{$_SESSION['PHP_SELF']}" name="interview" method="post"> <p>To prevent SPAM, we need you to enter this security number in the box on the right and key Submit. <img style="margin-right:2em; border:blue 2px solid" src="make_scode_img.php" alt="missing img file"> <input style="margin-right:2em; font-size:10pt" type="text" maxlength= "$len" size="$len" name="scode", value=""> <input style="font-size:11pt" type="submit" name="scode_submit" value="Submit"> </p> </form> </body> </html> txt; } /** * Note, put this code in the html where you want the log-in to be rendered. Notice, it has an exit; You don't need the if() you don't * need the exit. $code_txt is NULL unless the $scode_passed is TRUE. * <?php * if(!$scode_passed) { * echo "<p>$scode_txt</p>\n\n"; * exit; //This ends the page * } * ?> */ if($scode_passed){ Tony Di Croce wrote:
I need a CAPTCHA script.... Which one is the best? (I dont mind if its somewhat difficult).


« previous php.general (#260958) next »