thinkphp驗證碼實現。


作為我大天朝的程序員,如果不會點thinkphp框架確實有點說不過去了(雖然作為菜鳥的我才入坑沒幾個月)。不過不會也沒關系,很簡單的一個php框架。今天為大家介紹的是thinkphp如何實現驗證碼的功能。

thinkphp自帶驗證碼功能,我們直接調用就行了。發展到現在thinkphp已經有好幾個正式版本了,最新的版本是thinkphp5.0。今天我將給大家介紹一下5的版本和3的版本。

thinkphp3的版本:

第一步:在我們相對應的控制器創建一個輸出驗證碼方法

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();
}

第二步:在頁面輸出我們的驗證碼

<img src="{:U('Admin/verify')}" class="verifyCode" name="admin_verify" title="點擊刷新驗證碼">

完成以上的操作即可。接下來,我們開始實現附加功能。

第一個點擊驗證碼實現刷新(其實就是使用一個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下面,可定義在項目的公共目錄也可在模塊的功能目錄),在再我們接受用戶信息提交的地方做驗證並將錯誤信息反饋給用戶。

// 公共的驗證函數(建議放在項目的公共目錄中,便於多個模塊調用)
// 公共函數在系統中可以直接使用
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是一個歷史性的變革,這里就不單獨為大家介紹了。直接放大招了。

第一步:在我們的配置文件(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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM