一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - thinkphp3.2點擊刷新生成驗證碼

thinkphp3.2點擊刷新生成驗證碼

2020-12-21 15:45PHP教程網 PHP教程

這篇文章主要介紹了thinkphp3.2點擊刷新生成驗證碼的相關資料,需要的朋友可以參考下

再介紹thinkphp3.2驗證碼的使用方法之前,先為大家詳細介紹ThinkPHP 驗證碼,具體內容如下

ThinkPHP 內置了驗證碼的支持,可以直接使用。要使用驗證碼,需要導入擴展類庫中的 ORG.Util.Image 類庫和 ORG.Util.String 類庫。
驗證碼方法
我們通過在在模塊類中增加一個 verify 方法來用于顯示驗證碼,最簡單的例子:

?
1
2
3
4
5
Public function verify(){
  // 導入Image類庫
  import("ORG.Util.Image");
  Image::buildImageVerify();
}

import 方法是 ThinkPHP 內置的類庫和文件導入方法,上例導入的文件為 ThinkPHP 系統目錄下 Lib/ORG/Util/Image.class.php 文件。如果已經將 Image 類庫拷貝到了當前項目下,如 Lib/ORG 下,則可以以:

?
1
import("@.Util.Image");

import 方法是 ThinkPHP 內置的類庫和文件導入方法,上例導入的文件為 ThinkPHP 系統目錄下 Lib/ORG/Util/Image.class.php 文件。
訪問驗證碼
可以直接在瀏覽器里訪問該驗證碼方法以確定驗證碼是否能正常顯示:
http://127.0.0.1/index.php/Public/verify
如果一切正常,顯示驗證碼如下所示:

thinkphp3.2點擊刷新生成驗證碼

表單中使用驗證碼
在表單頁面中使用驗證碼,是以 html img標簽 來調用:

?
1
2
<input type="text" name="verify">
<img id="verifyImg" src="-Article-verify" onClick="changeVerify()" title="點擊刷新驗證碼" />

src 屬性值即為驗證碼方法訪問地址,視實際情況不同而不同。
驗證碼刷新
當點擊驗證碼圖片時,觸發 JavaScript changeVerify() 函數重新讀取驗證碼,從而實現驗證碼刷新。該函數參考如下:

?
1
2
3
4
5
6
<script language="JavaScript">
function changeVerify(){
 var timenow = new Date().getTime();
 document.getElementById('verifyImg').src='-Article/verify/'+timenow;
}
</script>

驗證碼驗證
在調用驗證碼 verify 的時候,buildImageVerify 會記錄本次驗證碼的 MD5 信息。在表單驗證操作里,以如下方法來檢查驗證碼是否正確:

?
1
2
3
if($_SESSION['verify'] != md5($_POST['verify'])) {
  $this->error('驗證碼錯誤!');
}

其中 $_SESSION['verify'] 中的 verify 名稱為 buildImageVerify 方法默認 SESSION 注冊名稱,具體見 buildImageVerify 語法。
上面例子演示了最簡單的 ThinkPHP 驗證碼的使用方法。上面的例子驗證碼是 4 位數字,如果想使用更多風格的驗證碼以及中文驗證碼,參見本節其余部分內容:《ThinkPHP 使用不同風格及中文的驗證碼》。
驗證碼不顯示原因
如下發現無法顯示驗證碼,可能的原因如下:
1、PHP 是否已經安裝 GD 庫支持。
2、輸出之前是否有任何的輸出(尤其是 UTF8 的 BOM 頭信息輸出)。
3、Image 類庫是否正確導入。
4、如果是表單頁面,請查看是否正確調用了驗證碼顯示方法。

下面就為大家介紹 thinkphp3.2 驗證碼生成和點擊刷新驗證碼的實現方法,具體內容如下

一、實例化生成驗證碼的類(該方法放到IndexController里面便于訪問)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
 *
 * 驗證碼生成
 */
public function verify_c(){
  $Verify = new \Think\Verify();
  $Verify->fontSize = 18;
  $Verify->length  = 4;
  $Verify->useNoise = false;
  $Verify->codeSet = '0123456789';
  $Verify->imageW = 130;
  $Verify->imageH = 50;
  //$Verify->expire = 600;
  $Verify->entry();
}

二、前臺需要生成驗證碼的圖片src屬性指向

?
1
2
3
4
<p class="top15 captcha" id="captcha-container">
 <input name="verify" width="50%" height="50" class="captcha-text" placeholder="驗證碼" type="text">        
 <img width="30%" class="left15" height="50" alt="驗證碼" src="{:U('Home/Index/verify_c',array())}" title="點擊刷新">
</p>

三、寫完上面的后,頁面初始化的驗證碼就可以出現了,下面要寫的就是點擊驗證碼圖片后,刷新出新的驗證碼圖片(通過jquery修改圖片的src屬性來完成,請求的處理函數一樣,只是在請求后加一個隨機數,區別上一張圖片的請求)

?
1
2
3
4
5
6
7
8
9
10
11
// 驗證碼生成
var captcha_img = $('#captcha-container').find('img')
var verifyimg = captcha_img.attr("src");
captcha_img.attr('title', '點擊刷新');
captcha_img.click(function(){
  if( verifyimg.indexOf('?')>0){
    $(this).attr("src", verifyimg+'&random='+Math.random());
  }else{
    $(this).attr("src", verifyimg.replace(/\?.*$/,'')+'?'+Math.random());
  }
});

四、校驗驗證碼輸入是否正確
a.在common目錄下的function.php里加入全局函數

?
1
2
3
4
5
6
7
/**
 * 驗證碼檢查
 */
function check_verify($code, $id = ""){
  $verify = new \Think\Verify();
  return $verify->check($code, $id);
}

b.在表單提交的controller對應的處理方法里添加檢查代碼

?
1
2
3
4
5
// 檢查驗證碼
$verify = I('param.verify','');
if(!check_verify($verify)){
  $this->error("親,驗證碼輸錯了哦!",$this->site_url,9);
}

到此tp3.2驗證碼的使用就可以了。
補充:我在寫的時候將四的b步驟放到一個ajax里驗證,返回一次檢驗結果。然后再依據返回結果確定是否要提交表單,但是在驗證碼通過第一次的校驗后,第二次的就不可以了,目前還沒想明白原因。

這就是本文的全部內容,文章最后還有一個小小的疑問,希望大家可以想出解決辦法,也希望本文對大家的學習有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本剧情片在线播放中文版 | 国内视频一区二区 | 特黄特黄一级片 | 天天欲色成人综合网站 | 小早川怜子亚洲综合中文字幕 | 日韩影院在线 | 激情五色月 | 欧美成人tv在线观看免费 | 亚洲av欧美在我 | 动漫女性扒开尿口羞羞漫画 | 欧美一级xxx | 72张让男人一看就硬的图片 | 久久精品视频在线看 | 亚洲成人一区在线 | 国产美女做爰免费视频软件 | 成人网免费视频 | 扒开女人下面使劲桶屁股动漫 | 久久国产综合精品欧美 | 欧美日韩一区二区三区在线视频 | 色综合亚洲天天综合网站 | 好大好硬好深好爽gif图 | 万域之王动漫在线观看全集免费播放 | 人皮高跟鞋在线观看 | 华人亚洲欧美精品国产 | 国产亚洲精品aaa大片 | 扒开双腿疯狂进出爽爽动态图 | 亚洲天堂2013 | 丝袜性爱 | 成人在线视频在线观看 | 亚洲 欧美 国产 综合久久 | 高清视频在线观看+免费 | 欧美一级视频免费观看 | 久久91精品国产91 | 菠萝视频在线完整版 | 欧美一级级a在线观看 | 日日爽| 亚洲 综合 自拍 精品 在线 | 希岛爱理aⅴ在线中文字幕 午夜综合网 | 俄罗斯烧性春三级k8播放 | 成人网址大全 | 粉嫩国产14xxxxx0000 |