I have a html form and i have written the necessary code.
html in main code:
<p id="formele" style="height:125px;"> <img src="captcha_code_file.php?rand=<?php echo rand(); ?>" style="width:200px;height:50px;"id='captchaimg' ><br> <label for='message'>Enter captcha here :</label><br> <input id="6_letters_code" style="background-color:lightblue; height : 25px;" name="6_letters_code" type="text" required /><br> </p>
php in main code:
if(empty($_SESSION['6_letters_code'] ) || strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code']) != 0) { //Note: the captcha code is compared case insensitively. //if you want case sensitive match, update the check above to $err=1; echo "<p style='color:red;'>nCaptcha code <em> DOES NOT MATCH</em>!! Press backspace and re-enter captcha</p>"; echo "<p style='color:blue;'>Please re-enter password also(because password will be erased).<hr>"; }
And my captcha_code_file.php code(downloaded):
<?php session_start(); //Settings: You can customize the captcha here $image_width = 200; $image_height = 50; $characters_on_image = 6; $font = './monofont.ttf'; //The characters that can be used in the CAPTCHA code. //avoid confusing characters (l 1 and i for example) $possible_letters = '23456789bcdfghjkmnpqrstvwxyz'; $random_dots = 0; $random_lines = 20; $captcha_text_color="0x142864"; $captcha_noice_color = "0x142864"; $code = ''; $i = 0; while ($i < $characters_on_image) { $code .= substr($possible_letters, mt_rand(0, strlen($possible_letters)-1), 1); $i++; } $font_size = $image_height * 0.75; $image = @imagecreate($image_width, $image_height); /* setting the background, text and noise colours here */ $background_color = imagecolorallocate($image, 255, 255, 255); $arr_text_color = hexrgb($captcha_text_color); $text_color = imagecolorallocate($image, $arr_text_color['red'], $arr_text_color['green'], $arr_text_color['blue']); $arr_noice_color = hexrgb($captcha_noice_color); $image_noise_color = imagecolorallocate($image, $arr_noice_color['red'], $arr_noice_color['green'], $arr_noice_color['blue']); /* generating the dots randomly in background */ for( $i=0; $i<$random_dots; $i++ ) { imagefilledellipse($image, mt_rand(0,$image_width), mt_rand(0,$image_height), 2, 3, $image_noise_color); } /* generating lines randomly in background of image */ for( $i=0; $i<$random_lines; $i++ ) { imageline($image, mt_rand(0,$image_width), mt_rand(0,$image_height), mt_rand(0,$image_width), mt_rand(0,$image_height), $image_noise_color); } /* create a text box and add 6 letters code in it */ $textbox = imagettfbbox($font_size, 0, $font, $code); $x = ($image_width - $textbox[4])/2; $y = ($image_height - $textbox[5])/2; imagettftext($image, $font_size, 0, $x, $y, $text_color, $font , $code); /* Show captcha image in the page html page */ header('Content-Type: image/jpeg');// defining the image type to be shown in browser widow imagejpeg($image);//showing the image imagedestroy($image);//destroying the image instance $_SESSION['6_letters_code'] = $code; function hexrgb ($hexstr) { $int = hexdec($hexstr); return array("red" => 0xFF & ($int >> 0x10), "green" => 0xFF & ($int >> 0x8), "blue" => 0xFF & $int); } ?>
The catcha image is not appearing in my web page. How can i fix this? I’m pretty sure there is no problem with the downloaded code.
Advertisement
Answer
I simply use already tested and working scripts which when dealing with captcha in php, you can refer links below, it will serve basic purpose of captcha.