php實現完整版驗證碼(數字+大小寫字母+干擾素)

Kevin Tang發表於2016-03-19
在上一次簡單的數字驗證碼之後,完善了驗證碼,使其更加具有使用價值,故將原始碼分享給大家,歡迎交流。
<?php 
//定義影象型別
header("Content-type:image/png");

//定義畫布大小,即驗證碼區域
$img=imagecreatetruecolor(80, 25);

//定義畫筆顏色
$red1=imagecolorallocate($img, 0xff, 0x00, 0x00);
$green1=imagecolorallocate($img, 0x00, 0xff, 0x00);
$blue1=imagecolorallocate($img, 0x00, 0x00, 0xff);

//定義畫布背景色
$bgcolor=imagecolorallocate($img, 0xff, 0xff, 0xff);

//將定義的顏色存入陣列,以便隨機換顏色
$col = array('0' =>$red1,'1'=>$green1,'2'=>$blue1 );

//填充畫布背景色
imagefill($img, 0, 0, $bgcolor);

//新增驗證碼內容
	//內容定義
	$content = "0123456789abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ;
	//隨機內容確定
	for($i=0;$i<4;$i++)
	{
		$code.='';
		$code=$code.$content[rand(0,62)];
	}
	//輸出驗證碼
	for($num=0;$num<4;$num++)
	{
		imagettftext($img, 15, rand(-30,30), 6+$num*18, 20, $col[rand(0,2)], "arial.ttf", $code[$num]);	
		//該函式原型:imagettftext(image, size, angle, x, y, color, fontfile, text);
	}

//新增干擾因素
	//新增干擾點
	for($i=0;$i<150;$i++)
	{
		imagesetpixel($img, rand(0,80), rand(0,40), $col[rand(0,2)]);
	}
	//新增干擾線
	for($i=0;$i<4;$i++)
	{
		imageline($img, rand(0,20), rand(0,20), rand(0,80), rand(0,30), $col[rand(0,2)]);
	}

//輸出影象

imagepng($img);

//釋放影象資源
imagedestroy($img);
?>

相關文章