initial commit
This commit is contained in:
121
app/webroot/captcha.php
Normal file
121
app/webroot/captcha.php
Normal file
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
session_start();
|
||||
//You can customize your captcha settings here
|
||||
|
||||
$captcha_code = '';
|
||||
$captcha_image_height = 50;
|
||||
$captcha_image_width = 120;
|
||||
$total_characters_on_image = 4;
|
||||
|
||||
//The characters that can be used in the CAPTCHA code.
|
||||
//avoid all confusing characters and numbers (For example: l, 1 and i)
|
||||
$possible_captcha_letters = 'bcdfghjkmnpqrstvwxyz23456789';
|
||||
$captcha_font = __DIR__ . '/fonts/arial.ttf';//'monofont.ttf';
|
||||
|
||||
$random_captcha_dots = 50;
|
||||
$random_captcha_lines = 25;
|
||||
$captcha_text_color = "0x142864";
|
||||
$captcha_noise_color = "0x142864";
|
||||
|
||||
|
||||
$count = 0;
|
||||
while ($count < $total_characters_on_image) {
|
||||
$captcha_code .= substr(
|
||||
$possible_captcha_letters,
|
||||
mt_rand(0, strlen($possible_captcha_letters)-1),
|
||||
1);
|
||||
$count++;
|
||||
}
|
||||
|
||||
$captcha_font_size = $captcha_image_height * 0.65;
|
||||
$captcha_image = @imagecreate(
|
||||
$captcha_image_width,
|
||||
$captcha_image_height
|
||||
);
|
||||
|
||||
/* setting the background, text and noise colours here */
|
||||
$background_color = imagecolorallocate(
|
||||
$captcha_image,
|
||||
255,
|
||||
155,
|
||||
255
|
||||
);
|
||||
|
||||
$array_text_color = hextorgb($captcha_text_color);
|
||||
$captcha_text_color = imagecolorallocate(
|
||||
$captcha_image,
|
||||
$array_text_color['red'],
|
||||
$array_text_color['green'],
|
||||
$array_text_color['blue']
|
||||
);
|
||||
|
||||
$array_noise_color = hextorgb($captcha_noise_color);
|
||||
$image_noise_color = imagecolorallocate(
|
||||
$captcha_image,
|
||||
$array_noise_color['red'],
|
||||
$array_noise_color['green'],
|
||||
$array_noise_color['blue']
|
||||
);
|
||||
|
||||
/* Generate random dots in background of the captcha image */
|
||||
for( $count=0; $count<$random_captcha_dots; $count++ ) {
|
||||
imagefilledellipse(
|
||||
$captcha_image,
|
||||
mt_rand(0,$captcha_image_width),
|
||||
mt_rand(0,$captcha_image_height),
|
||||
2,
|
||||
3,
|
||||
$image_noise_color
|
||||
);
|
||||
}
|
||||
|
||||
/* Generate random lines in background of the captcha image */
|
||||
for( $count=0; $count<$random_captcha_lines; $count++ ) {
|
||||
imageline(
|
||||
$captcha_image,
|
||||
mt_rand(0,$captcha_image_width),
|
||||
mt_rand(0,$captcha_image_height),
|
||||
mt_rand(0,$captcha_image_width),
|
||||
mt_rand(0,$captcha_image_height),
|
||||
$image_noise_color
|
||||
);
|
||||
}
|
||||
|
||||
/* Create a text box and add 6 captcha letters code in it */
|
||||
$text_box = imagettfbbox(
|
||||
$captcha_font_size,
|
||||
0,
|
||||
$captcha_font,
|
||||
$captcha_code
|
||||
);
|
||||
$x = ($captcha_image_width - $text_box[4])/2;
|
||||
$y = ($captcha_image_height - $text_box[5])/2;
|
||||
imagettftext(
|
||||
$captcha_image,
|
||||
$captcha_font_size,
|
||||
0,
|
||||
$x,
|
||||
$y,
|
||||
$captcha_text_color,
|
||||
$captcha_font,
|
||||
$captcha_code
|
||||
);
|
||||
|
||||
/* Show captcha image in the html page */
|
||||
// defining the image type to be shown in browser widow
|
||||
$_SESSION['captcha'] = $captcha_code;
|
||||
$cookie_name = "ecc";
|
||||
$cookie_value = $captcha_code;
|
||||
setcookie($cookie_name, $cookie_value, time() + (60 * 5), "/"); // 86400 = 1 day
|
||||
|
||||
header('Content-Type: image/jpeg');
|
||||
imagejpeg($captcha_image); //showing the image
|
||||
imagedestroy($captcha_image); //destroying the image instance
|
||||
|
||||
function hextorgb ($hexstring){
|
||||
$integar = hexdec($hexstring);
|
||||
return array("red" => 0xFF & ($integar >> 0x10),
|
||||
"green" => 0xFF & ($integar >> 0x8),
|
||||
"blue" => 0xFF & $integar);
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user