PHP學習--驗證碼
阿新 • • 發佈:2018-10-31
在正式製作驗證碼之前要先補充點知識,PHP使用GD2函式庫實現對各種圖形影象的處理,所以我們製作驗證碼主要要使用到一些GD2函式庫裡的一些函式:
imagecreatetruecolor($width,$height)函式,主要用於建立畫布,有2個引數width和height是必選的,代表你所要建立的畫布的長和寬;
imagecolorallocate($image, $red, $green, $blue)函式,主要用於填充影象,第1個引數是你所建立的影象的識別符號,後面3個引數是顏色的RGB設定;
imagefill($image, $x, $y, $color)函式,第一個函式是你建立的影象識別符號,第2、3個引數$x、$y是左上角座標,最後一個引數是你要填充顏色;
imagestring($image, $font, $x, $y, $string, $color)函式設定文字,且imagestring()函式如果直接繪製中文字串會出現亂碼,如果要繪製中文字串可以使用imagettftext()函式;
imagepng($image[,$filename])函式以phg格式將影象輸出到瀏覽器或者儲存為檔案,第1個引數為你建立的影象標識號,第2個引數為可選引數,你要儲存檔案的檔名;
imagesetpixel($image, $x, $y, $color)函式畫單個畫素點;
imageline($image, $x1, $y1, $x2, $y2, $color)
程式碼主要如下:
<?php //建立畫布 $img = imagecreatetruecolor(100, 50); //建立顏色 $black = imagecolorallocate($img, 0x00, 0x00, 0x00); $green = imagecolorallocate($img, 0x00, 0xFF, 0x00); $white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF); //畫布填充顏色 imagefill($img, 0, 0, $white);//背景為白色 //生成隨機驗證碼 $code = make(5); //設定文字 imagestring($img, 5, 10, 10, $code, $black);//黑字 //加入噪點干擾 for ($i = 0; $i <300; $i++){ imagesetpixel($img, rand(0, 100), rand(0, 100), $black); imagesetpixel($img, rand(0, 100), rand(0, 100), $green); } //加入線段干擾 for ($n = 0; $n <=1; $n++){ imageline($img, 0, rand(0, 40), 100, rand(0, 40), $black); imageline($img, 0, rand(0, 40), 100, rand(0, 40), $white); } //輸出驗證碼 header("content-type: image/png");//告訴瀏覽器這個檔案是一個png圖片 imagepng($img); //銷燬圖片,釋放記憶體 imagedestroy($img); //生成隨機驗證碼的函式 function make($length){ $code = 'abcdefghijklmnopqrsruvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; //str_shuffle()函式用於打亂字串 return substr(str_shuffle($code), 0, $length); } ?>
實現效果如下圖: