成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? 詳解ThinkPHP3.2.3驗證碼顯示、刷新、校驗
全站頭部文字 我要出現在這里
詳解ThinkPHP3.2.3驗證碼顯示、刷新、校驗 737 2024-01-18   

ThinkPHP3.2.3驗證碼顯示、刷新、校驗 ,具體如下:

顯示驗證碼

首先在Home/Controller下創建一個公共控制器PublicController

<?php
namespace HomeController;

use ThinkController;
use ThinkVerify;

class PublicController extends Controller
{

  /* 生成驗證碼 */
  public function verify()
  {
    $config = [
      'fontSize' => 19, // 驗證碼字體大小
      'length' => 4, // 驗證碼位數
      'imageH' => 34
    ];
    $Verify = new Verify($config);
    $Verify->entry();
  }

  /* 驗證碼校驗 */
  public function check_verify($code, $id = '')
  {
    $verify = new ThinkVerify();
    $res = $verify->check($code, $id);
    $this->ajaxReturn($res, 'json');
  }
}

verify函數用于生成驗證碼,config是用來配置顯示驗證碼的屬性。該屬性有哪些可配置項,可以查看Thinkphp/Library/Think/Verify.class.php文件,此處不再贅述。

check_verify函數用于校驗驗證碼的正確性。模板post用戶填寫的驗證碼到該函數,返回$res==true驗證通過false驗證失敗。
前臺模板頁建立index.html

 <div class="">
 <label for="j_verify" class="t">驗證碼:</label> <input id="j_verify"
 name="j_verify" type="text" class="form-control x in">
 <img id="verify_img" alt="點擊更換" title="點擊更換"
 src="http://www.gimoo.net/t/1807/{:U('public/verify',array())}" class="m">
 </div>

使用Thinkphp的U方法形成生成驗證碼的圖片。

點擊刷新驗證碼

從上面產生驗證碼的鏈接我們可以看出,域名/public/verify即可產生驗證碼。Thinkphp的驗證碼生成機制是,如若我們需要產生新的驗證碼,在該鏈接后加入一個變量值即可。

我們可以考慮實現public/verify/變量值的形式URL。

$("#verify_img").click(function() {
  var verifyURL = "public/verify";
  var time = new Date().getTime();
  $("#verify_img").attr({
   "src" : verifyURL + "/" + time
  });
});

利用JS獲取當前時間戳加入到URL之后即可。

到此我們即可實現驗證碼的點擊刷新功能。具體表現形式,自己隨意哈。

異步校驗驗證碼

大家一定見過在某些網站,我們輸入驗證碼的時候,輸入的過程中文本框后面一直顯示錯誤,直到我們輸入爭取的時候會先提示驗證碼正確的形式。下面代碼就可以實現:

$("#j_verify").keyup(function() {
  $.post("public/check_verify", {
    code : $("#j_verify").val()
    }, function(data) {
    if (data == true) {
      //驗證碼輸入正確
    } else {
      //驗證碼輸入錯誤
    }
  });
});

利用onekeyup。原理就不需要多講了吧!

這樣我們就可以實現在提交用戶名密碼之前先進行一次驗證碼校驗,之后表單提交之后再進行一次校驗,提升用戶體驗啦!

還沒結束:

當我們采取以上形式實現驗證碼兩次校驗的時候,肯定會出現第一次異步校驗成功,但是提交表單卻提示驗證碼錯誤的情況!其實原因還是出在Thinkphp的Verify.class.php上:

以下是該類初始的config配置:

protected $config =  array(
    'seKey'   => 'ThinkPHP.CN',  // 驗證碼加密密鑰
    'codeSet'  => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',       // 驗證碼字符集合
    'expire'  => 1800,      // 驗證碼過期時間(s)
    'useZh'   => false,      // 使用中文驗證碼 
    'zhSet'   => '……此處不粘貼了,太多了!',       // 中文驗證碼字符串
    'useImgBg' => false,      // 使用背景圖片 
    'fontSize' => 25,       // 驗證碼字體大小(px)
    'useCurve' => false,      // 是否畫混淆曲線
    'useNoise' => false,      // 是否添加雜點  
    'imageH'  => 0,        // 驗證碼圖片高度
    'imageW'  => 0,        // 驗證碼圖片寬度
    'length'  => 5,        // 驗證碼位數
    'fontttf'  => '',       // 驗證碼字體,不設置隨機獲取
    'bg'    => array(243, 251, 254), // 背景顏色
    'reset'   => true,      // 驗證成功后是否重置
    );

請大家注意最后一個屬性reset 表示的是驗證成功后是否重置驗證碼。相信大家都明白了吧,我們進行第一次校驗通過之后,其實該驗證碼已經失效了,只不過因為我們采取的是異步校驗,頁面并沒有刷新,導致了第二次申請校驗的時候和系統產生的已經是不相同的了。所以如果大家喜歡這種兩次校驗的風格,可以考慮將reset配置為false即可。

好了,基于Thinkphp3.2.3的驗證碼問題今天就總結到這了。只是大概說了一下實現方法,具體內容還請大家參考TP官方手冊。如有錯誤之處,歡迎大家指出。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持綠夏網。


PHP

主站蜘蛛池模板: 给我| 老司机avhd101高清| 日韩在线日韩| 50000蛋币兑换码2025年有效| 女生宿舍2在线| 娄际成| 749局啥时候上映| 阿尔罕布拉宫的回忆吉他谱| 苏捷斯卡战役 电影| 叶玉卿电影| 红髅| cctv6电影节目表| 黄姓的研究报告| 魏蔓| 哈尔的移动城堡电影| cctv5+体育赛事直播时间| 工伤赔偿协议书| 按摩私处| 爱在一起麻辣烫| 电影双面情人| 说木叶原文| 日韩电影免费观看高清完整版在线| 白上之黑电影| 浙江卫视节目表(全部)| 烽火硝烟里的青春演员表| la ciociara| 张柏芝惊艳照片| 最爱电影完整版在线观看免费高清| 眼光娘娘治眼病口诀| mhdd| angelababy婚礼大作战| cctv体育频道5| 王春宇| a级毛片免费全部播放| jixxzz| 转身离开| 叶子楣作品| 少女秩序| 小学道德与法治课程标准2023版| 达斯汀·克莱尔| 少年班校花和富二代是什么情况|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103