


Que faire si l'erreur du code de vérification thinkphp ne s'actualise pas
Thinkphp est un framework d'application Web open source basé sur le modèle MVC. Il fournit de nombreuses fonctions et fonctionnalités excellentes, permettant aux développeurs de développer des applications Web plus efficacement. L'une d'elles est la fonction captcha. Le code de vérification, nom complet de « code de vérification graphique », est un moyen technique utilisé pour empêcher les robots malveillants de s'enregistrer ou de se connecter. En règle générale, lorsqu'un utilisateur saisit un code de vérification incorrect, le site Web actualise ou régénère une image du code de vérification. Cependant, certains utilisateurs ont rencontré le problème que le code de vérification Thinkphp est erroné mais ne s'actualise pas. Que se passe-t-il ?
1. Description du problème
Dans Thinkphp, la génération et la vérification du code de vérification utilisent la propre bibliothèque de codes de vérification de Thinkphp. Lors de l'utilisation de cette bibliothèque de classes, les utilisateurs constateront que lorsque le code de vérification est saisi de manière incorrecte, le site Web n'actualisera pas immédiatement le code de vérification. Si l'utilisateur saisit le mauvais code de vérification plusieurs fois de suite, le site Web ne met pas à jour le code de vérification, ce qui gêne beaucoup l'utilisateur.
2. Analyse du problème
La raison de ce problème est que dans la bibliothèque de codes de vérification de Thinkphp, il existe une méthode avec l'attribut $reset défini sur false. Lorsque la valeur de cet attribut est fausse, le code de vérification ne sera actualisé qu'à son expiration. Ainsi, lorsque l’utilisateur saisit plusieurs fois le mauvais code de vérification, le site Web ne mettra pas à jour le code de vérification.
3. Solution
Pour ce problème, la solution est également très simple, il suffit de changer la valeur de l'attribut $reset sur true. La méthode de modification est la suivante :
Recherchez le code suivant dans ThinkPHP/Library/Think/Verify.class.php :
//是否画混淆曲线 public $useCurve = true; //是否添加杂点 public $useNoise = true; //验证码图片宽度 public $imageW = 130; //验证码图片高度 public $imageH = 50; //验证码位数 public $length = 4; //验证码字体大小(px) public $fontSize = 25; //是否画颜色背景 public $useZh = false; //验证码种子 protected $seed = '123456789QWERTYUIOPASDFGHJKLZXCVBNM'; //生成验证码 public function entry(){ //验证码字符 $this->code = $this->makeCode(); session($this->seKey,$this->code);//验证码保存到SESSION中 $width = ($this->length* $this->fontSize*0.9 + $this->fontSize*1.5); $height = $this->fontSize*2; if( $this->useZh ){ $width = 230; $height = 50; } //创建图像 $this->image = imagecreate($width,$height); //设置背景 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(); } //杂点 if ($this->useNoise) { $this->writeNoise(); } //验证码 $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); }
Modifiez la valeur de l'attribut $reset à true Le code modifié est le suivant :
//是否画混淆曲线 public $useCurve = true; //是否添加杂点 public $useNoise = true; //验证码图片宽度 public $imageW = 130; //验证码图片高度 public $imageH = 50; //验证码位数 public $length = 4; //验证码字体大小(px) public $fontSize = 25; //是否画颜色背景 public $useZh = false; //验证码种子 protected $seed = '123456789QWERTYUIOPASDFGHJKLZXCVBNM'; //生成验证码 public function entry(){ //验证码字符 $this->code = $this->makeCode(); session($this->seKey,$this->code);//验证码保存到SESSION中 $width = ($this->length* $this->fontSize*0.9 + $this->fontSize*1.5); $height = $this->fontSize*2; if( $this->useZh ){ $width = 230; $height = 50; } //创建图像 $this->image = imagecreate($width,$height); //设置背景 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(); } //杂点 if ($this->useNoise) { $this->writeNoise(); } //验证码 $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); }
Après modification. , Enregistrez simplement et soumettez à nouveau.
4. Conclusion
Cet article présente les causes et les solutions au problème de l'erreur de code de vérification Thinkphp qui ne s'actualise pas. Ce problème peut être résolu en modifiant une seule ligne de code. En fait, lors de l’utilisation d’un framework, les problèmes sont inévitables. Mais tant que nous recherchons activement des solutions, le problème sera toujours résolu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Cet article compare les lignes d'ordinateur portable de Thinkbook et ThinkPad de Lenovo. ThinkPads priorise la durabilité et les performances des professionnels, tandis que les thinkbooks offrent une option élégante et abordable pour un usage quotidien. Les principales différences résident dans la qualité de construction, P

Cet article explique comment prévenir l'injection SQL dans les applications ThinkPHP. Il met l'accent sur l'utilisation des requêtes paramétrées via le constructeur de requête de ThinkPhp, en évitant la concaténation directe de SQL et en implémentant une validation et une désinfection d'entrée robustes. Annonce

Cet article aborde les vulnérabilités ThinkPHP, mettant l'accent sur les correctifs, la prévention et la surveillance. Il détaille la gestion des vulnérabilités spécifiques via des mises à jour, des correctifs de sécurité et une correction de code. Des mesures proactives comme la configuration sécurisée, entrée

Cet article détaille l'installation du logiciel ThinkPHP, couvrant des étapes telles que le téléchargement, l'extraction, la configuration de la base de données et la vérification d'autorisation. Il répond aux exigences du système (version PHP, serveur Web, base de données, extensions), installation commune

Ce didacticiel traite des vulnérabilités courantes ThinkPHP. Il met l'accent sur les mises à jour régulières, les scanners de sécurité (RIPS, Sonarqube, SNYK), l'examen du code manuel et les tests de pénétration pour l'identification et l'assainissement. Les mesures préventives comprennent une sécurisation

Cet article présente ThinkPhp, un cadre PHP gratuit et open source. Il détaille l'architecture MVC de ThinkPhp, les fonctionnalités (routage, interaction de base de données), les avantages (développement rapide, facilité d'utilisation) et les inconvénients (surextraction potentielle, commun

Ce guide détaille la connexion de la base de données dans ThinkPhp, en se concentrant sur la configuration via Database.php. Il utilise l'OPD et permet une interaction ORM ou SQL directe. Le guide couvre le dépannage des erreurs de connexion communes, gérant plusieurs connexions, en

Cet article montre la création d'applications de ligne de commande (CLI) en utilisant les capacités CLI de ThinkPhp. Il met l'accent sur les meilleures pratiques telles que la conception modulaire, l'injection de dépendance et la gestion des erreurs robuste, tout en mettant en évidence les pièges communs tels que INSU
