1. 程式人生 > >PHP學習--驗證碼

PHP學習--驗證碼

在正式製作驗證碼之前要先補充點知識,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)

函式畫一條線段,$x1、$y1是線段是左上角座標,$x2、$y2是線段的右下角座標。

程式碼主要如下:

<?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);
	}
?>

實現效果如下圖: