php驗證碼製作是對php基本功的考核,php驗證碼製作必需開啟gd庫,因為要用到gd庫裡面的不少函數
推薦學習PHP開發驗證碼教程
1.建立驗證碼底圖
<?php$image = imagecreatetruecolor(100,30);$bgcolor = imagecolorallocate($image,000,255,255);//#FFFFFFFFFFFFimagefill($image,0,0,$bgcolor);header('content-type: image/png');imagepng($image);//銷毀imagedestroy($image);?>
課程連結:http://www.php.cn/code/3872.html
2.實現數字驗證碼
<?php$image = imagecreatetruecolor(100,30);$bgcolor = imagecolorallocate($image,255,255,255);//#FFFFFFFFFFFFimagefill($image,0,0,$bgcolor);for ($i=0;$i<4;$i++){ $fontsize = 6; $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $fontcontent = rand(0,9); $x = ($i * 100/4)+rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);}header('content-type: image/png');imagepng($image);//銷毀imagedestroy($image);?>
課程連結:http://www.php.cn/code/3874.html
3.增加幹擾元素
<?php$image = imagecreatetruecolor(100,30);$bgcolor = imagecolorallocate($image,255,255,255);//#FFFFFFFFFFFFimagefill($image,0,0,$bgcolor);for ($i=0;$i<4;$i++){ $fontsize = 6; $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $fontcontent = rand(0,9); $x = ($i * 100/4)+rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);}for($i=0;$i<200;$i++){ $pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200)); imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);}header('content-type: image/png');imagepng($image);//銷毀imagedestroy($image);?>
課程連結:http://www.php.cn/code/3875.html
4.字母和數字混合驗證碼
<?php$image = imagecreatetruecolor(100,30);$bgcolor = imagecolorallocate($image,255,255,255);//#FFFFFFFFFFFFimagefill($image,0,0,$bgcolor);for ($i=0;$i<4;$i++){ $fontsize = 6; $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $data='abcdefghijklmnopqrstuvwxyz1234567890'; $fontcontent=substr($data,rand(0,strlen($data)),1); $x = ($i * 100/4)+rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);}for($i=0;$i<200;$i++){ $pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200)); imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);}for($i=0;$i<8;$i++){ $linecolor = imagecolorallocate($image,rand(60,220),rand(60,220),rand(60,220)); imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);}header('content-type: image/png');imagepng($image);//銷毀imagedestroy($image);?>
課程連結:http://www.php.cn/code/3878.html
5.使用session儲存驗證資訊
<?phpsession_start();$image = imagecreatetruecolor(100,30);$bgcolor = imagecolorallocate($image,255,255,255);//#FFFFFFFFFFFFimagefill($image,0,0,$bgcolor);$captch_code="";for ($i=0;$i<4;$i++){ $fontsize = 6; $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $data='abcdefghijklmnopqrstuvwxyz1234567890'; $fontcontent=substr($data,rand(0,strlen($data)),1); $captch_code.="$fontcontent"; $x = ($i * 100/4)+rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);}$_SESSION['code']=$captch_code;for($i=0;$i<200;$i++){ $pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200)); imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);}for($i=0;$i<8;$i++){ $linecolor = imagecolorallocate($image,rand(60,220),rand(60,220),rand(60,220)); imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);}header('content-type: image/png');imagepng($image);//銷毀imagedestroy($image);?>
課程連結:http://www.php.cn/code/3879.html
6.驗證碼的使用
<?phpsession_start();$image = imagecreatetruecolor(100,30);$bgcolor = imagecolorallocate($image,255,255,255);//#FFFFFFFFFFFFimagefill($image,0,0,$bgcolor);$captch_code="";for ($i=0;$i<4;$i++){ $fontsize = 6; $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $data='abcdefghijklmnopqrstuvwxyz1234567890'; $fontcontent=substr($data,rand(0,strlen($data)),1); $captch_code.="$fontcontent"; $x = ($i * 100/4)+rand(5,10); $y = rand(5,10); imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);}$_SESSION['code']=$captch_code;for($i=0;$i<200;$i++){ $pointcolor = imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200)); imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);}for($i=0;$i<5;$i++){ $linecolor = imagecolorallocate($image,rand(60,220),rand(60,220),rand(60,220)); imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$linecolor);}header('content-type: image/png');imagepng($image);//銷毀imagedestroy($image);?>
課程連結:http://www.php.cn/code/4832.html