多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php框架 > ThinkPHP > ThinkPHP3.1快速入門(20)驗證碼

ThinkPHP3.1快速入門(20)驗證碼

來源:程序員人生   發(fā)布時間:2013-11-30 19:39:42 閱讀次數(shù):3516次
在這個網(wǎng)絡(luò)安全漫天飛的年代,驗證碼功能起碼能算是一個值得信賴的好衛(wèi)兵了。本篇我們就來講下如何在ThinkPHP中使用驗證碼功能。

獲取擴(kuò)展類庫

ThinkPHP的擴(kuò)展中由圖像處理類Image以及用于生成隨機(jī)驗證碼的字符處理類String共同完成驗證碼功能,可以在在http://www.thinkphp.cn/extend/225.html下載圖像處理類以及http://www.thinkphp.cn/extend/266.html下載字符處理類,或者下載官方的完整擴(kuò)展包(http://www.thinkphp.cn/down/253.html)里面也已經(jīng)包含以上擴(kuò)展類了。如果是單獨(dú)下載的擴(kuò)展類庫,把解壓后的Image.class.php和String.class.php 一起放入ThinkPHP/Extend/Library/ORG/Util/(如果沒有請手動創(chuàng)建)目錄下面。由于驗證碼顯示采用了GD庫支持,所以需要環(huán)境支持GD庫。

生成驗證碼

生成驗證碼其實很簡單,只需要在你的Action中添加操作方法,一般為了避免受權(quán)限控制的影響,我們通常把這個方法放到公共Action或者無需授權(quán)就能訪問的控制器(例如PublicAction)中,下面我們以放到PublicAction控制器類中為例,代碼如下:
class PublicAction extends Action{
    Public function verify(){
        import('ORG.Util.Image');
        Image::buildImageVerify();
    }
}
定義后,我們可以在任何需要驗證碼的模塊中調(diào)用Public模塊的verify方法來顯示驗證碼,需要做的僅僅是在需要的模板中添加如下調(diào)用代碼:
<img src='!-APP-!/Public/verify/' />
這樣,我們訪問該頁面后就能看到默認(rèn)的驗證碼圖像顯示,如下所示:

如果你的驗證碼不能正常顯示,請檢查:
  1. 是否已經(jīng)安裝GD庫支持并正常開啟;
  2. Image類庫以及String類庫是否在正確的位置以及是否正確導(dǎo)入;
  3. 驗證碼輸出之前是否有任何的其他輸出(尤其是UTF8的BOM頭信息輸出);
很多開發(fā)人員驗證碼無法顯示的情況多數(shù)是由于文件中有輸出或者BOM頭的情況,關(guān)于UTF8的BOM頭檢測有工具可以檢測,很多編輯器也支持去掉BOM保存(這個不清楚的話可以百度下)。這里要另外強(qiáng)調(diào)下很多開發(fā)人員在書寫代碼的時候不夠規(guī)范,例如經(jīng)常會有下面的情形發(fā)生:
在文件的開頭有空行

在文件的尾部有空行

以上兩種情況都會導(dǎo)致頁面的其他輸出,從而導(dǎo)致驗證碼出錯。

驗證碼顯示設(shè)置

默認(rèn)情況下,驗證碼采用隨機(jī)的4位數(shù)字顯示,我們可以通過參數(shù)來設(shè)置不同的顯示方式,Image類的buildImageVerify方法用法如下:
buildImageVerify 生成圖像驗證碼
用法 buildImageVerify($length,$mode,$type,$width,$height,$verifyName)
參數(shù) length 驗證碼的長度,默認(rèn)為4位數(shù)
model 驗證字符串的類型,默認(rèn)為數(shù)字,其他支持類型有0 字母 1 數(shù)字 2 大寫字母 3 小寫字母 4中文 5混合
type 驗證碼的圖片類型,默認(rèn)為png
width 驗證碼的寬度,默認(rèn)會自動根據(jù)驗證碼長度自動計算
height 驗證碼的高度,默認(rèn)為22
verifyName 驗證碼的SESSION記錄名稱,默認(rèn)為verify

驗證輸入

每次生成驗證碼的時候,就會通過SESSION記錄本次的驗證碼的md5后的字符串信息,所以,要檢查驗證碼是否正確,我們只需要在Action中使用下面的代碼判斷就行了:
if(session('verify') != md5($_POST['verify'])) {
   $this->error('驗證碼錯誤!');
}
建議使用session方法來獲取SESSION值,因為驗證碼生成方法里面也是采用的session方法保存的,可以避免受session前綴的影響而出錯。這里的verify名稱取決于你的驗證碼的verifyName參數(shù)的值。
如果你的session功能不正常,可能會導(dǎo)致驗證碼檢測報錯的情況發(fā)生。

中文驗證碼

BuildImageVerify方法不支持中文驗證碼的顯示,如果需要顯示中文驗證碼,請使用GBVerify方法,用法示例:
Public function verify(){
    import("ORG.Util.Image");
    Image::GBVerify();
}
顯示效果如下:

如果能夠顯示圖片,但是看不到圖片中的中文字符,請檢查是否有拷貝字體文件到圖像類庫所在目錄。默認(rèn)使用的字體文件是simhei.ttf(該文件可以從window的Fonts目錄下面找到)。
GBVerify方法也有不同的參數(shù)用于設(shè)置驗證碼,具體用法如下:
GBVerify生成中文驗證碼
用法 GBVerify ($length,$type,$width,$height,$fontface,$verifyName)
參數(shù) length:驗證碼的長度,默認(rèn)為4位數(shù)
type:驗證碼的圖片類型,默認(rèn)為png
width:驗證碼的寬度,默認(rèn)會自動根據(jù)驗證碼長度自動計算
height:驗證碼的高度,默認(rèn)為50
fontface:使用的字體文件,使用完整文件名或者放到圖像類所在的目錄下面,默認(rèn)使用的字體文件是simhei.ttf(該文件可以從window的Fonts目錄下面找到
verifyName:驗證碼的SESSION記錄名稱,默認(rèn)為verify

驗證碼刷新

如果隨機(jī)生成的驗證碼看不清楚,就需要添加驗證碼刷新功能來重新生成,這個其實只是修改前端代碼,后臺的驗證碼生成方法無需修改。
一般我們是用js方法來控制驗證碼的刷新,例如下面可以實現(xiàn)點擊驗證碼圖片刷新驗證碼:
<script language="JavaScript">
function fleshVerify(){ 
    //重載驗證碼
    var time = new Date().getTime();
        document.getElementById('verifyImg').src= '!-APP-!/Public/verify/'+time;
}
</script>
<img id="verifyImg" src='!-APP-!/Public/verify/' onclick="fleshVerify()" />
當(dāng)然,熟悉Jquery的開發(fā)人員,可以用Jquery代碼來簡化驗證碼刷新的js方法,這個就不再多說了。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 一区二区中文字幕亚洲精品 | 日本不卡视频网站 | 欧美最猛性xxxxx图片 | 亚洲福利片 | 欧美性猛交xxxx | 忘忧草wyc.apk | 在线欧美日韩精品一区二区 | 校园春色中文字幕 | 久久久日本精品一区二区三区 | 国产精品二区高清在线 | 国产在线a不卡免费视频 | 成人国产日本亚洲精品 | 亚欧中文字幕 | 中文字幕亚洲一区二区三区 | 亚洲国产一区二区三区在线观看 | 三级天堂 | 日韩欧美专区 | 久久福利影院 | 噜噜影院在线视频在线观看 | 在线观看h网站 | 成人午夜精品网站在线观看 | 亚洲性综合 | 尤物视频免费 | 国产精品一区二区综合 | 亚洲国产精品看片在线观看 | 呦视频在线一区二区三区 | 无码精品一区二区三区免费视频 | 欧美91精品久久久久网免费 | 日本午夜大片a在线观看 | 男女性高清爱潮视频免费观看 | 亚洲精品在线不卡 | 国产精品美乳免费看 | 日韩一区二区三区视频 | 中文字幕亚洲欧美一区 | 欧美日韩中文亚洲另类春色 | 亚洲天堂视频在线播放 | 网友偷自拍原创区 | 成人免费淫片95视频观看网站 | 日本一级免费 | 中文字幕欧美日韩高清 | 亚洲图片自拍偷拍 |