国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php框架 ThinkPHP thinkphp驗(yàn)證碼錯(cuò)誤不刷新怎么辦

thinkphp驗(yàn)證碼錯(cuò)誤不刷新怎么辦

Apr 17, 2023 am 09:49 AM

Thinkphp是一款基于MVC模式的開源Web應(yīng)用框架,它提供了諸多優(yōu)秀的功能和特性,讓開發(fā)者能夠更加高效地開發(fā)Web應(yīng)用。其中之一便是驗(yàn)證碼功能。驗(yàn)證碼,全稱為“圖形驗(yàn)證碼”,是一種用于防止惡意機(jī)器人注冊或登錄的技術(shù)手段。通常情況下,當(dāng)用戶輸入錯(cuò)誤的驗(yàn)證碼時(shí),網(wǎng)站會刷新或重新生成一張驗(yàn)證碼圖片。但是有一些用戶遇到了Thinkphp驗(yàn)證碼錯(cuò)誤卻不刷新的問題,這是怎么回事呢?

一、問題描述

Thinkphp中,驗(yàn)證碼的生成和校驗(yàn)使用的是Thinkphp自帶的驗(yàn)證碼類庫。在使用該類庫時(shí),用戶會發(fā)現(xiàn)出現(xiàn)了一種情況,即當(dāng)驗(yàn)證碼輸入錯(cuò)誤時(shí),網(wǎng)站不會立即刷新驗(yàn)證碼。如果用戶連續(xù)多次輸入錯(cuò)誤的驗(yàn)證碼,網(wǎng)站并沒有更新驗(yàn)證碼,這讓用戶感到非常不便。

二、問題分析

該問題的出現(xiàn)原因是因?yàn)樵赥hinkphp的驗(yàn)證碼類庫中,存在一個(gè)屬性$reset為false的方法。當(dāng)該屬性值為false時(shí),即不刷新驗(yàn)證碼,直至過期為止。所以當(dāng)用戶多次輸入錯(cuò)誤的驗(yàn)證碼時(shí),網(wǎng)站不會更新驗(yàn)證碼。

三、解決方法

針對該問題,解決方法也很簡單,只需要把$reset屬性值修改為true即可。修改方法如下:

在ThinkPHP/Library/Think/Verify.class.php中找到以下代碼:

???//是否畫混淆曲線
???public?$useCurve?????=?true;
???//是否添加雜點(diǎn)
???public?$useNoise?????=?true;
???//驗(yàn)證碼圖片寬度
???public?$imageW???????=?130;
???//驗(yàn)證碼圖片高度
???public?$imageH???????=?50;
???//驗(yàn)證碼位數(shù)
???public?$length???????=?4;
???//驗(yàn)證碼字體大小(px)
???public?$fontSize?????=?25;
???//是否畫顏色背景
???public?$useZh????????=?false;
???//驗(yàn)證碼種子
???protected?$seed?????=?'123456789QWERTYUIOPASDFGHJKLZXCVBNM';
???//生成驗(yàn)證碼
???public?function?entry(){
???????//驗(yàn)證碼字符
???????$this->code?=?$this->makeCode();
???????session($this->seKey,$this->code);//驗(yàn)證碼保存到SESSION中
???????$width???????=?($this->length*?$this->fontSize*0.9?+?$this->fontSize*1.5);
???????$height??????=?$this->fontSize*2;
???????if(?$this->useZh?){
???????????$width??=?230;
???????????$height?=?50;
???????}
???????//創(chuàng)建圖像
???????$this->image?=?imagecreate($width,$height);
???????//設(shè)置背景
???????if($this->useZh)
???????????imagecolorallocate($this->image,244,?220,?215);
???????else{
???????????$this->bkcolor?=?imagecolorallocate($this->image,?255,?255,?255);
???????????imagefill($this->image,0,0,$this->bkcolor);
???????}
???????//混淆曲線
???????if?($this->useCurve)?{
???????????$this->writeCurve();
???????}
???????//雜點(diǎn)
???????if?($this->useNoise)?{
???????????$this->writeNoise();
???????}
???????//驗(yàn)證碼
???????$this->writeCode();
???????header("Cache-Control:?max-age=1,?s-maxage=1,?no-cache,?must-revalidate");
???????header("Content-type:?image/png;charset=utf8");
???????imagepng($this->image);
???????imagedestroy($this->image);
???}

將其中的$reset屬性值修改為true,修改后的代碼如下:

???//是否畫混淆曲線
???public?$useCurve?????=?true;
???//是否添加雜點(diǎn)
???public?$useNoise?????=?true;
???//驗(yàn)證碼圖片寬度
???public?$imageW???????=?130;
???//驗(yàn)證碼圖片高度
???public?$imageH???????=?50;
???//驗(yàn)證碼位數(shù)
???public?$length???????=?4;
???//驗(yàn)證碼字體大小(px)
???public?$fontSize?????=?25;
???//是否畫顏色背景
???public?$useZh????????=?false;
???//驗(yàn)證碼種子
???protected?$seed?????=?'123456789QWERTYUIOPASDFGHJKLZXCVBNM';
???//生成驗(yàn)證碼
???public?function?entry(){
???????//驗(yàn)證碼字符
???????$this->code?=?$this->makeCode();
???????session($this->seKey,$this->code);//驗(yàn)證碼保存到SESSION中
???????$width???????=?($this->length*?$this->fontSize*0.9?+?$this->fontSize*1.5);
???????$height??????=?$this->fontSize*2;
???????if(?$this->useZh?){
???????????$width??=?230;
???????????$height?=?50;
???????}
???????//創(chuàng)建圖像
???????$this->image?=?imagecreate($width,$height);
???????//設(shè)置背景
???????if($this->useZh)
???????????imagecolorallocate($this->image,244,?220,?215);
???????else{
???????????$this->bkcolor?=?imagecolorallocate($this->image,?255,?255,?255);
???????????imagefill($this->image,0,0,$this->bkcolor);
???????}
???????//混淆曲線
???????if?($this->useCurve)?{
???????????$this->writeCurve();
???????}
???????//雜點(diǎn)
???????if?($this->useNoise)?{
???????????$this->writeNoise();
???????}
???????//驗(yàn)證碼
???????$this->writeCode();
???????//?以下為代碼修改
???????$this->reset?=?true;
???????header("Cache-Control:?max-age=1,?s-maxage=1,?no-cache,?must-revalidate");
???????header("Content-type:?image/png;charset=utf8");
???????imagepng($this->image);
???????imagedestroy($this->image);
???}

修改完后,保存并重新提交即可。

四、結(jié)論

本文介紹了Thinkphp驗(yàn)證碼錯(cuò)誤不刷新的問題出現(xiàn)原因和解決方法。只需修改一行代碼,即可解決該問題。實(shí)際上,在使用任何框架時(shí),出現(xiàn)問題的情況都是不可避免的。不過只要我們積極地去尋找解決方法,問題總會被解決。

以上是thinkphp驗(yàn)證碼錯(cuò)誤不刷新怎么辦的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276