做爲我大天朝的程序員,若是不會點thinkphp框架確實有點說不過去了(雖然做爲菜鳥的我才入坑沒幾個月)。不過不會也不要緊,很簡單的一個php框架。今天爲你們介紹的是thinkphp如何實現驗證碼的功能。php
thinkphp自帶驗證碼功能,咱們直接調用就好了。發展到如今thinkphp已經有好幾個正式版本了,最新的版本是thinkphp5.0。今天我將給你們介紹一下5的版本和3的版本。html
thinkphp3的版本:程序員
第一步:在咱們相對應的控制器建立一個輸出驗證碼方法ajax
public function verify() { $Verify = new \Think\Controller\Verify(); $Verify->fontSize = 20; // 字體大小 $Verify->length = 6; // 多少個字符 $Verify->useNoise = false; // 是否添加雜點 $Verify->imageW = 233; // 驗證碼寬度 $Verify->imageH = 50; // 驗證碼高度 $Verify->entry(); }
第二步:在頁面輸出咱們的驗證碼thinkphp
<img src="{:U('Admin/verify')}" class="verifyCode" name="admin_verify" title="點擊刷新驗證碼">
完成以上的操做便可。接下來,咱們開始實現附加功能。php框架
第一個點擊驗證碼實現刷新(其實就是使用一個ajax方法再去從新加載一次圖片輸出而已):在咱們的js中寫入以下方法。框架
var verifyImg = $(".verifyCode"); var verifyPath = verifyImg.attr("src"); verifyImg.click(function () { if (verifyPath.indexOf("?")>0) { $(this).attr("src", verifyPath+'&random='+Math.random()); }else{ $(this).attr("src", verifyPath.replace(/\?.*$/,' ')+'?'+Math.random()); } )})
// 或者直接不單獨寫js方法,直接給圖片添加一個點擊事件
<img src="{:U('Admin/verify')}" class="verifyCode" name="admin_verify" title="點擊刷新驗證碼" onclick="this.src=\'' .{:U('Admin/verify')}. '?id=\'+Math.random();">
第二個就是後臺驗證咱們的驗證碼正確性:先建立一個公共的驗證函數(公共的配置函數文件是在common下面,可定義在項目的公共目錄也可在模塊的功能目錄),在再咱們接受用戶信息提交的地方作驗證並將錯誤信息反饋給用戶。dom
// 公共的驗證函數(建議放在項目的公共目錄中,便於多個模塊調用)
// 公共函數在系統中能夠直接使用
function check_verify($code, $id = ""){ $verify = new \Think\Verify(); return $verify->check($code, $id); }
// 接收頁面傳入的填寫的驗證碼值 $data['admin_verify'] = I('post.admin_verify'); if (check_verify($data['admin_verify'])) { $this->error("驗證碼不正確", U("login"), 3); }
thinkphp5的版本:函數
thinkphp5是一個歷史性的變革,這裏就不單獨爲你們介紹了。直接放大招了。thinkphp5
第一步:在咱們的配置文件(config.php)中直接配置以下內容
/** *須要開啓url路由:'url_route_on' => true, */ 'captcha' => [ // 驗證碼字符集合 'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY', // 驗證碼字體大小(px) 'fontSize' => 25, // 是否畫混淆曲線 'useCurve' => true, // 驗證碼圖片高度 'imageH' => 30, // 驗證碼圖片寬度 'imageW' => 100, // 驗證碼位數 'length' => 5, // 驗證成功後是否重置 'reset' => true ],
第二步:在咱們的模板文件中輸出便可
// 方式一(建議採用該方式) <img src="{:captcha_src()}" alt="captcha" /> // 方式二 {:captcha_img()}
對比thinkphp3的版本,咱們一樣實現其餘附加的功能。
第一個點擊刷新:這裏和thinkphp3的版本一致,就不單獨介紹了。
第二個就是驗證碼驗證:這裏能夠使用咱們tp5內置的驗證(建議),也可採用自定義驗證。
// 內置驗證
$this->validate($data,[ 'captcha|驗證碼'=>'require|captcha' ]);
// 自定義驗證
if(!captcha_check($captcha)){ //驗證失敗 };
自此thinkphp經常使用的版本在驗證碼的功能上已經介紹完了,不知道你還有什麼問題沒?若是有什麼問題能夠即時反饋本郵箱(18228937997@163.com),能夠在文章下方留言。隨時歡迎你們的騷擾。
下面的連接是本人在使用thinkphp碰見的問題,但願對你有所幫助。http://www.cnblogs.com/qqblog/p/6639653.html