日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

thinkphp验证码功能

發(fā)布時(shí)間:2024/4/17 php 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 thinkphp验证码功能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Think\Verify類可以支持驗(yàn)證碼的生成和驗(yàn)證功能。

為了顯示這個(gè)驗(yàn)證碼功能,第一要有控制器,再就是有方法,然后是顯示的頁面。

一、最簡(jiǎn)單的方式生成驗(yàn)證碼

(1)我們還是繼續(xù)在那個(gè)控制器編寫方法

這個(gè)方法顯示這個(gè)驗(yàn)證碼的頁面

public function xianshi() {$this->show(); } public function shengcheng() {//造驗(yàn)證碼的對(duì)象$v = new \Think\Verify();//生成驗(yàn)證碼$v->entry(); }

(2)顯示驗(yàn)證碼的頁面,還是放在中,命名為

<img src="__CONTROLLER__/shengcheng" />

運(yùn)行一下看下結(jié)果~~

(3)我們還可以給他設(shè)置大小,每刷新一次頁面,驗(yàn)證碼都會(huì)改變

只要給他個(gè)屬性就可以了,例如

<img src="__CONTROLLER__/shengcheng" width="300" height="100" />

寬和高都變大

二、文本框輸入驗(yàn)證碼(讓文本框輸入的驗(yàn)證碼和顯示的驗(yàn)證碼是否匹配)

(1)先要在顯示頁面做一個(gè)文本框,來顯示用戶看到的內(nèi)容

<img src="__CONTROLLER__/shengcheng" width="300" height="100" /> <div>請(qǐng)輸入驗(yàn)證碼:<input type="text" name="yzm" /></div>

我們也要做一個(gè)提示的行:用來顯示提示信息

<span id="tishi"></span>  

(2)用ajax來做這個(gè)事件

失去焦點(diǎn)時(shí)觸發(fā)事件

<script type="text/javascript">$("#yzm").blur(function(){var yzm = $(this).val(); //找到這個(gè)文本框中的值$.ajax({url:"__ACTION__", //發(fā)送給他自己data:{yzm:yzm}, //將文本框中的值傳過去type:"POST", //傳輸方式dataType:"TEXT", success: function(data){
                  //返回成功后的操作}})}) </script>

(3)在控制器中顯示xianshi方法中的判斷驗(yàn)證碼是不是正確

public function xianshi() {if(empty($_POST)){$this->show(); //顯示頁面}else{//驗(yàn)證驗(yàn)證碼是否正確,可以用Think\Verify類的check方法檢測(cè)驗(yàn)證碼的輸入是否正確$yzm = $_POST["yzm"]; //接收傳過來的文本框的值$v = new \Think\Verify();if($v->check($yzm)) //驗(yàn)證完是有返回值的,所以我們可以用if判斷一下{$this->ajaxReturn("ok","eval"); //輸入正確返回ok}else{$this->ajaxReturn("no","eval"); //輸入錯(cuò)誤返回no } } }

(4)ajax中返回成功地方的書寫

success: function(data){if(data.trim()=="ok"){//返回成功過就輸出提示信息$("#tishi").html("驗(yàn)證通過!"); $("#tishi").css("color","green");}else{//否則就返回錯(cuò)誤的提示信息$("#tishi").html("驗(yàn)證碼輸入錯(cuò)誤!"); $("#tishi").css("color","red"); } }

下面就是運(yùn)行的實(shí)驗(yàn)了:

首先是輸入正確的驗(yàn)證碼,提示正確的信息

輸入錯(cuò)誤或是沒有輸入時(shí),就會(huì)提示錯(cuò)誤信息

三、如果一個(gè)頁面有兩個(gè)驗(yàn)證碼

(1)這樣顯示的頁面要有一個(gè)驗(yàn)證碼顯示的地方,里面的方法我們是shengcheng1

<img src="__CONTROLLER__/shengcheng1" width="300" height="100" />

(2)控制器的方法也要寫個(gè)shengcheng1

public function shengcheng1() {//造驗(yàn)證碼的對(duì)象$v = new \Think\Verify();//生成驗(yàn)證碼,標(biāo)識(shí)是2$v->entry(2); }  

注意:如果有兩個(gè)驗(yàn)證碼,就要進(jìn)行標(biāo)識(shí),讓他們知道是誰的驗(yàn)證碼

這樣第一個(gè)方法也要加標(biāo)識(shí)

public function shengcheng() {//造驗(yàn)證碼的對(duì)象$v = new \Think\Verify();//生成驗(yàn)證碼,標(biāo)識(shí)是1$v->entry(1); }

然后在check方法中寫入一個(gè)標(biāo)識(shí),就是要驗(yàn)證哪一個(gè)的標(biāo)識(shí),這里我們要驗(yàn)證第二個(gè)吧

if($v->check($yzm,2)) //check的參數(shù),一個(gè)是文本框中的值,第二個(gè)參數(shù)就是那個(gè)標(biāo)識(shí) {$this->ajaxReturn("ok","eval"); //輸入正確返回ok } else {$this->ajaxReturn("no","eval"); //輸入錯(cuò)誤返回no }

看下結(jié)果,輸入第二個(gè)驗(yàn)證碼

四、驗(yàn)證碼的變換

想要變換驗(yàn)證碼的圖片,其實(shí)就是重新請(qǐng)求那個(gè)生成驗(yàn)證碼的方法就可以了

(1)先要把調(diào)換驗(yàn)證碼的圖片起個(gè)名字,如下

<img src="__CONTROLLER__/shengcheng1" width="300" height="100" id="img2" />

(2)然后就是給這個(gè)圖片添加點(diǎn)擊事件,修改屬性就可以了

$("#img2").click(function(){//修改一些屬性就可以了,修改src的屬性$(this).attr("src","__CONTROLLER__/shengcheng1"); })

運(yùn)行看下結(jié)果,點(diǎn)擊一次就會(huì)變圖片

注意:有時(shí)候?yàn)g覽器不同也會(huì)有bug,所以我們要加一個(gè)東西,讓它適應(yīng)任何的瀏覽器,可以這樣寫

$("#img2").click(function(){var sj = Math.random(); //生成隨機(jī)數(shù)var sz = sj.toFixed(2); //取小數(shù)點(diǎn)后兩位//修改一些屬性就可以了,修改src的屬性$(this).attr("src","__CONTROLLER__/shengcheng1/a"+sz); //拼接上截取后的隨機(jī)數(shù) })

這樣IE瀏覽器也是可以換圖的了

五、其他的關(guān)于驗(yàn)證碼的參數(shù)

這些參數(shù)都可以給驗(yàn)證碼有些變換

注意:參數(shù)的設(shè)置有兩種方法

一是實(shí)例化傳入?yún)?shù):

$config = array( 'fontSize' => 30, // 驗(yàn)證碼字體大小 'length' => 3, // 驗(yàn)證碼位數(shù) 'useNoise' => false, // 關(guān)閉驗(yàn)證碼雜點(diǎn) ); $Verify = new \Think\Verify($config); $Verify->entry();

二是動(dòng)態(tài)設(shè)置:

$Verify = new \Think\Verify(); $Verify->fontSize = 30; $Verify->length = 3; $Verify->useNoise = false; $Verify->entry();

六、驗(yàn)證碼是中文

注意:要是用中文的,要在一個(gè)文件夾中加入字體(這個(gè)文件夾默認(rèn)是空的)

電腦自帶的字體是在如圖文件夾中

注意放置中文字體的路徑:ThinkPHP/Library/Think/Verify/zhttfs/ 目錄下面

加入字體后,可以設(shè)置出現(xiàn)中文的驗(yàn)證碼了:

public function shengcheng1() {//造驗(yàn)證碼的對(duì)象$v = new \Think\Verify();$v->fontSize = 50;$v->length = 2;//$v->fontttf = "6.ttf"; //使用定義好的字體$v->useZh = true; //使用中文字體//生成驗(yàn)證碼,標(biāo)識(shí)是2$v->entry(2);}

轉(zhuǎn)載于:https://www.cnblogs.com/du892294464/p/7146658.html

總結(jié)

以上是生活随笔為你收集整理的thinkphp验证码功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。