You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.7 KiB
PHP
40 lines
1.7 KiB
PHP
<?php
|
|
session_start();
|
|
// Generate random 6 character string
|
|
$captcha_code = substr(str_shuffle('01234567890123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz'), 0, 6);
|
|
// Update the session variable
|
|
$_SESSION['captcha'] = $captcha_code;
|
|
// Create the image canvas - width: 150px; height: 50px;
|
|
$final_image = imagecreate(150, 50);
|
|
// Background color (RGBA)
|
|
$rgba = [241, 245, 248, 0];
|
|
// Set the background color
|
|
$image_bg_color = imagecolorallocatealpha($final_image, 241, 245, 248, 0);
|
|
// Convert the captcha text to an array
|
|
$captcha_code_chars = str_split($captcha_code);
|
|
// Iterate the above array
|
|
for($i = 0; $i < count($captcha_code_chars); $i++) {
|
|
// Create the character image canvas
|
|
$char_small = imagecreate(130, 16);
|
|
$char_large = imagecreate(130, 16);
|
|
// Character background color
|
|
$char_bg_color = imagecolorallocate($char_small, 241, 245, 248);
|
|
// Character color
|
|
$char_color = imagecolorallocate($char_small, rand(80,180), rand(80,180), rand(80, 180));
|
|
// Draw the character on the canvas
|
|
imagestring($char_small, 1, 1, 0, $captcha_code_chars[$i], $char_color);
|
|
// Copy the image and enlarge it
|
|
imagecopyresampled($char_large, $char_small, 0, 0, 0, 0, rand(250, 400), 16, 84, 8);
|
|
// Rotate the character image
|
|
$char_large = imagerotate($char_large, rand(-6,6), 0);
|
|
// Add the character image to the main canvas
|
|
imagecopymerge($final_image, $char_large, 20 + (20 * $i), 15, 0, 0, imagesx($char_large), imagesy($char_large), 70);
|
|
// Destroy temporary canvases
|
|
imagedestroy($char_small);
|
|
imagedestroy($char_large);
|
|
}
|
|
// Output the created image
|
|
header('Content-type: image/png');
|
|
imagepng($final_image);
|
|
imagedestroy($final_image);
|
|
?>
|