簡單的驗證碼其實就是在圖片中輸出了幾個字符,透過imagestring函數就能實現。
但是在處理上,為了使驗證碼更加的安全,防止其他程式自動識別,因此常常需要對驗證碼進行一些幹擾處理,通常會採用繪製一些噪點,幹擾線段,對輸出的字元進行傾斜、扭曲等操作。
可以使用imagesetpixel繪製點來實現雜訊幹擾,但是只繪製一個點的作用不大,因此這裡常常會使用循環進行隨機繪製。
<br>例子:
$img = imagecreatetruecolor(100, 40);
$black = imagecolorallocate($img, 0x00, 0x00, 0x00);
$green = imagecolor. = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
imagefill($img,0,0,$white);
//產生隨機的驗證碼
$code = '';
for($i = 0; $i < 4; $i++) { //4位數的驗證碼
$code .= rand(0, 9);
}
imagestring($img, 5, 10, 10, $code, $black);
//加入雜訊幹擾
for($i=0;$i<50;$i++) {
imagesetpixel($img, rand(0, 100) , rand(0, 100) , $rand ); (0, 100) , $green);}
//輸出驗證碼header("content-type: image/png");imagepng($img); //以PNG 格式將映像輸出到瀏覽器或檔案
imagedestroy($img); //影像處理完成後,使用imagedestroy() 指令銷毀影像資源以釋放內存,雖然該函數不是必須的,但使用它是一個好習慣。
?>
<br><br><br>