其實(shí)里面沒(méi)必要封裝函數(shù),只是當(dāng)時(shí)覺(jué)得視覺(jué)上好看而已,結(jié)構(gòu)清晰點(diǎn)

創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)的成都網(wǎng)站建設(shè)公司,我們專(zhuān)注成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷(xiāo)、企業(yè)網(wǎng)站建設(shè),
賣(mài)友情鏈接,
廣告投放為企業(yè)客戶(hù)提供一站式建站解決方案,能帶給客戶(hù)新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶(hù)體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。<?php
class captcha{
//驗(yàn)證碼-字符串
private $codes;
//圖片長(zhǎng)度
private $img_length = 150;
//圖片高度
private $img_height = 30;
//字符列表,用以生成隨機(jī)驗(yàn)證碼
private $charlist = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
//隨機(jī)碼的個(gè)數(shù)
private $code_num = 4;
//字體大小--初始化時(shí)算出的
private $font_size ;
//干擾線數(shù)目
private $line_num = 5;
//干擾雪花數(shù)目
private $sterisk_num = 50;
//驗(yàn)證碼--圖片
private $img;
//字體文件路徑
private $ttf = './instance/font/Elephant.ttf';
public function __construct(){
//字體大小通過(guò)圖片寬高動(dòng)態(tài)生成的,但感覺(jué)不太完美
$this->font_size = ($this->img_height*2/5 > $this->img_height*4/5 ? $this->img_height*4/5 : $this->img_height*2/5);
}
public function run(){
//創(chuàng)建圖片資源
$this->createImage();
//往圖片中添加雪花
$this->addaSterisk();
//往圖片中添加字符
$this->addfont();
//往圖片中添加線條
$this->addLine();
//將圖片輸出至瀏覽器
$this->outputImg();
}
//返回驗(yàn)證碼字符串
public function getCode(){
return $this->codes;
}
//創(chuàng)建圖片資源
private function createImage(){
//創(chuàng)建圖片資源
$this->img = p_w_picpathcreatetruecolor($this->img_length,$this->img_height);
//創(chuàng)建顏色
$color_bg = p_w_picpathcolorallocate($this->img, mt_rand(210, 255), mt_rand(210, 255), mt_rand(210, 255));
//設(shè)置圖片背景色
p_w_picpathfill($this->img, 0, 0, $color_bg);
}
//往圖片中添加線條
private function addLine(){
//添加指定數(shù)量的線條
for ($i = 0; $i < $this->line_num; $i++) {
//創(chuàng)建隨機(jī)顏色--參數(shù)(圖片資源,R,B,G)
$color_line = p_w_picpathcolorallocate($this->img, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));
//添加線條,位置隨機(jī)--參數(shù)(圖片資源,起點(diǎn)-x,起點(diǎn)-y,終點(diǎn)-x,終點(diǎn)-y,顏色)
//不可調(diào)整
//p_w_picpathline($this->img, mt_rand(0, $this->img_length), mt_rand(0, $this->img_height), mt_rand(0, $this->img_length), mt_rand(0, $this->img_height), $color_line);
//可以調(diào)整線條的粗細(xì)
$src_x = mt_rand(0, $this->img_length);
$src_y = mt_rand(0, $this->img_height);
$dest_x = mt_rand(0, $this->img_length);
$dest_y = mt_rand(0, $this->img_height);
for ($j = 0; $j < 1; $j++) {
p_w_picpathline($this->img, $src_x+$j, $src_y+$j, $dest_x+$j,$dest_y+$j, $color_line);
}
}
}
//往圖片中添加雪花
private function addaSterisk(){
//添加指定數(shù)量的雪花
for ($i = 0; $i < $this->sterisk_num; $i++) {
//創(chuàng)建隨機(jī)顏色--參數(shù)(圖片資源,R,B,G)
$color_Ster = p_w_picpathcolorallocate($this->img, mt_rand(220, 255), mt_rand(220, 255), mt_rand(220, 255));
//添加雪花,位置隨機(jī)--參數(shù)(圖片資源,傾斜角度,左下角-x,左下角-y,顏色,字符串)
p_w_picpathstring($this->img,mt_rand(0,360),mt_rand(0,$this->img_length),mt_rand(0,$this->img_height),'*',$color_Ster);
}
}
private function addfont(){
for ($i = 0; $i < $this->code_num; $i++) {
//隨機(jī)從字符列表中取一個(gè)字符
$code = substr(str_shuffle($this->charlist),-1);
//記錄到驗(yàn)證碼字符串中
$this->codes .= $code;
//創(chuàng)建隨機(jī)顏色--參數(shù)(圖片資源,R,B,G)
$color_font = p_w_picpathcolorallocate($this->img, mt_rand(10, 180), mt_rand(10, 180), mt_rand(10, 180));
//添加雪花,位置隨機(jī)--參數(shù)(圖片資源,字體大小,傾斜角度,左下角-x,左下角-y,字體顏色,字體,字符串)
// 左下角-y,字體的基準(zhǔn)高度是估計(jì)的,由于字體大小使用磅,不同字符的長(zhǎng)寬像素相差甚大
p_w_picpathttftext($this->img, $this->font_size, mt_rand(-30, 30), ($this->img_length/$this->code_num)*$i+mt_rand(1,$this->font_size*0.2), $this->img_height*0.7+mt_rand(-$this->img_height*0.2, $this->img_height*0.2), $color_font, $this->ttf, $code);
}
}
//輸出圖片至瀏覽器
private function outputImg(){
//通知瀏覽器是png格式
header('Content-type:p_w_picpath/png');
//以png格式輸出
p_w_picpathpng($this->img);
//銷(xiāo)毀內(nèi)存中的圖片資源
p_w_picpathdestroy($this->img);
}
public function __set($key,$value){
}
public function __get($value){
}
}
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱(chēng):PHP碎碼——自己寫(xiě)的驗(yàn)證碼-創(chuàng)新互聯(lián)
分享鏈接:http://www.chinadenli.net/article48/djopep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、虛擬主機(jī)、網(wǎng)站設(shè)計(jì)公司、全網(wǎng)營(yíng)銷(xiāo)推廣、響應(yīng)式網(wǎng)站
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)