thinkphp驗證碼實現。

做爲我大天朝的程序員,若是不會點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

相關文章
相關標籤/搜索