驗證碼是我們開發的時候經常用到的功能,所以在此本人包裝了乙個驗證碼類,應該可以作為php的類外掛程式用,在此分享給各位的讀友。
實現的原理也是很簡單,就是利用畫布的幾個函式,再加上一些字串的獲取,東湊西湊就構成了,呵呵。
這裡大概寫一下思路吧,其實這個類已經注釋的非常清楚了,不過,個人還是在行文前囉嗦一下。
首先是關於一些函式的解釋,這裡的解釋純屬個人體會,有什麼錯誤的地方,還請讀者指正。
1、建立畫布函式:imagecreatetruecolor(w,h);
說明:用於建立乙個畫布。
w 畫布的寬
h 畫布的高
此函式的返回值資源類(gd)
2、為畫布建立一種顏色:imagecolorallocate(img,red,green,blue)
說明:img畫布資源
red,green,blue 是0~255的範圍
3、為畫布新增背景色
imagefill(img,x,y,color);
說明:在image
影象的座標x
,y
(影象左上角為 0, 0)
4、畫邊框
imagerectangle($img,x1,y1,x2,y2,color);
說明:其左上角座標為 x1, y1,右下角座標為 x2, y2。影象的左上角座標為 0, 0。
3、繪製內容(字元
)imagestring(img ,size,x,y,string,color);
說明:img畫布
size是字大小 1至
5x,y是起始點
string是所要畫的內容
color是顏色
4、告訴瀏覽器格式
header("content-type:image/png");可為image/gif等等
5、輸出
(或儲存
),也可以使用第2個引數實現儲存
imagepng(img【
,filename】)
imagejpeg(img【
,filename】)
imagegif(img【
,filename】)
6、新增干擾線,本質就是直線
imageline(img,x1,y1,x2,y2,color);
說明:img 畫布
x1,y1 起點
x2,y2 終點
color 顏色
7、imagettftext( img,size, angle, x, y, color, fontfile,text )
說明:img 畫布
size 字型大小,預設單位畫素
angle 角度
x,y 座標點
color 顏色
fontfile 字型檔案,必須是中文字型
text 內容
特別說明:這裡的color引數都是imagecolorallocate()函式建立的顏色
下面是思路:
這裡最先生成畫布,之後就是為畫布新增字串,直線,噪點,邊框,來生成驗證碼的,最後類返回的兩個公用介面是:可供外面呼叫的生成驗證碼的畫布和驗證碼的字串構成,為的是給外界輸出驗證碼畫布,以及儲存字串,作為驗證用
下面是**:
<?phpnamespace captcha;
/**驗證碼類
*verify方法生成驗證碼字串
*entry方法生成驗證碼
*有的地方對中文的字型要求比較高,所以,有的地方不支援中文驗證碼
*/class
captcha
//建立驗證碼
private
function
captchaimage()
$this->verifycode = $this->code($img,$this->config['charset'],$this->config['chinese']);
//存在則新增干擾線
if($this->config['lines'])
//存在則新增干擾點
if($this->config['dots'])
return
$img
; }
private
function codelines($img
) }
private
function codedots($img
) }
/*畫布邊框
*/private
function tangle($img
)
/*生成驗證碼,預設英文,$ch為true則為中文
*/private
function code($img,$ch=false,$set='')
//每次繪製乙個字元
for($i=1;$i
<=$this->config['length'];$i++)
}else
}//每次繪製乙個字元
for($i=1;$i
<=$this->config['length'];$i++)
}return
$str
; }
//獲取驗證碼
public
function
verify()
//生成驗證碼
public
function
entry()
}$ob = new
captcha;
$ob->entry();
最後,為了不誤人子弟,還是再強調一遍:這裡必須先用entry生成驗證碼,再用verify生成驗證碼的字串,也就是必須先呼叫entry,然後才能夠呼叫verify生成驗證碼的字串,原因**已經說明問題了,因為驗證碼的字串是在entry方法的方法captchaimage中生成的,所以必須先呼叫它才行 有的地方對中文的字型要求比較高,所以,有的地方不支援中文驗證碼
要是覺得對你有幫助,可以掃一掃右邊的打賞功能,打賞一下作者呢
乙個漂亮的php驗證碼類 分享
下面小灰灰就為大家分享乙個漂亮的php驗證碼類。需要的朋友可以過來參考下。效果圖 直接上 驗證碼類 class validatecode 生成隨機碼 private function createcode 生成背景 private function createbg 生成文字 private fun...
乙個漂亮的php驗證碼類 分享
驗證碼類 class validatecode 生成隨機碼 private function createcode 生成背景 private function createbg 生成文字 private function createfont 生成線條 雪花 private function cre...
分享乙個漂亮的php驗證碼類
驗證碼類 class validatecode 生成隨機碼 private function createcode 生成背景 private function createbg 生成文字 private function createfont 生成線條 雪花 private function cre...