The simple verification code is actually outputting a few characters in the image, which can be achieved through the imagestring function.
But in terms of processing, in order to make the verification code more secure and prevent other programs from automatically recognizing it, it is often necessary to perform some interference processing on the verification code. Usually, some noise points are drawn, interference line segments are drawn, and the output characters are tilted and distorted, etc. operate.
You can use imagesetpixel to draw points to achieve noise interference, but drawing only one point is of little use, so loops are often used to draw randomly.
<br>例子:
$img = imagecreatetruecolor(100, 40);
$black = imagecolorallocate($img, 0x00, 0x00, 0x00);
$green = imagecolorallocate($img, 0x00, 0xFF, 0x00);
$ white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
imagefill($img,0,0,$white);
//Generate a random verification code
$code = '';
for($i = 0 ; $i < 4; $i++) { //4-digit verification code
$code .= rand(0, 9);
}
imagestring($img, 5, 10, 10, $code, $black );
//Add noise interference
for($i=0;$i<50;$i++) {
imagesetpixel($img, rand(0, 100) , rand(0, 100) , $black); //imagesetpixel — draw a single pixel, syntax: bool imagesetpixel ( resource $image , int $x , int $y , int $color )
imagesetpixel($img, rand(0, 100) , rand(0, 100) , $green);
}
//Output verification code
header("content-type: image/png");
imagepng($img); //In PNG format Output the image to the browser or file
imagedestroy($img); //After the image processing is completed, use the imagedestroy() instruction to destroy the image resource to release memory. Although this function is not necessary, it is a good habit to use it.
?>
<br><br><br>