thinkphp3.2 cliquez sur Actualiser pour générer le code de vérification

高洛峰
Libérer: 2023-03-05 11:32:01
original
1556 Les gens l'ont consulté

Avant de présenter comment utiliser le code de vérification thinkphp3.2, je vais d'abord présenter le code de vérification ThinkPHP en détail. Le contenu spécifique est le suivant

ThinkPHP a une prise en charge intégrée du code de vérification et peut être. utilisé directement. Pour utiliser le code de vérification, vous devez importer la bibliothèque de classes ORG.Util.Image et la bibliothèque de classes ORG.Util.String dans la bibliothèque de classes étendue.
Méthode du code de vérification
Nous ajoutons une méthode de vérification à la classe du module pour afficher le code de vérification :

Public function verify(){
  // 导入Image类库
  import("ORG.Util.Image");
  Image::buildImageVerify();
}
Copier après la connexion

la méthode d'importation est la méthode d'importation intégrée de ThinkPHP. bibliothèque de classes et méthode d'importation de fichiers Le fichier importé dans l'exemple ci-dessus est le fichier Lib/ORG/Util/Image.class.php dans le répertoire système ThinkPHP. Si la bibliothèque de classes Image a été copiée dans le projet actuel, tel que Lib/ORG, vous pouvez utiliser :

import("@.Util.Image");
Copier après la connexion

La méthode d'importation est la bibliothèque de classes et le fichier intégrés de ThinkPHP méthode d'importation. Le fichier importé dans l'exemple ci-dessus est le fichier Lib/ORG/Util/Image.class.php dans le répertoire système ThinkPHP.
Accès au code de vérification
Vous pouvez accéder à la méthode du code de vérification directement dans le navigateur pour déterminer si le code de vérification peut être affiché normalement :
http://127.0.0.1/index.php/Public/verify
Si tout est normal, le code de vérification s'affiche comme suit :

thinkphp3.2 cliquez sur Actualiser pour générer le code de vérification

Utiliser le code de vérification dans le formulaire
Pour utiliser le code de vérification dans la page du formulaire, il est appelé avec la balise html img :

<input type="text" name="verify">
<img  id="verifyImg" src="-Article-verify" onClick="changeVerify()" title="点击刷新验证码" / alt="thinkphp3.2 cliquez sur Actualiser pour générer le code de vérification" >
Copier après la connexion

La valeur de l'attribut src est l'adresse d'accès à la méthode du code de vérification, qui varie en fonction de la situation réelle.
Actualisation du code de vérification
Lorsque l'utilisateur clique sur l'image du code de vérification, la fonction JavaScript changeVerify() est déclenchée pour relire le code de vérification, actualisant ainsi le code de vérification. La référence de cette fonction est la suivante :

<script language="JavaScript">
function changeVerify(){
 var timenow = new Date().getTime();
 document.getElementById(&#39;verifyImg&#39;).src=&#39;-Article/verify/&#39;+timenow;
}
</script>
Copier après la connexion

Vérification du code de vérification
Lors de l'appel du code de vérification verify, buildImageVerify enregistrera les informations MD5 de ce code de vérification. Dans l'opération de vérification du formulaire, utilisez la méthode suivante pour vérifier si le code de vérification est correct :

if($_SESSION[&#39;verify&#39;] != md5($_POST[&#39;verify&#39;])) {
  $this->error(&#39;验证码错误!&#39;);
}
Copier après la connexion

Le nom de vérification dans $_SESSION['verify'] est l'enregistrement par défaut de la SESSION. nom de la méthode buildImageVerify, voir la syntaxe buildImageVerify pour plus de détails.
L'exemple ci-dessus montre la manière la plus simple d'utiliser le code de vérification ThinkPHP. Le code de vérification dans l'exemple ci-dessus est composé de 4 chiffres. Si vous souhaitez utiliser plus de styles de codes de vérification et de codes de vérification chinois, consultez le reste de cette section : « ThinkPHP utilise différents styles et codes de vérification chinois ».
La raison pour laquelle le code de vérification ne s'affiche pas
Il s'avère que le code de vérification ne peut pas être affiché. Les raisons possibles sont les suivantes :
1. Si PHP a installé le support de la bibliothèque GD.
2. Y a-t-il une sortie avant la sortie (en particulier la sortie des informations d'en-tête de nomenclature UTF8).
3. Si la bibliothèque de classes Image est importée correctement.
4. S'il s'agit d'une page de formulaire, veuillez vérifier si la méthode d'affichage du code de vérification est correctement appelée.

Ce qui suit vous présentera la méthode d'implémentation de génération de code de vérification thinkphp3.2 et cliquez sur Actualiser le code de vérification. Le contenu spécifique est le suivant

1 Instanciez la classe qui génère le code de vérification. (cette méthode est placée dans IndexController Elle est facile d'accès à l'intérieur)

/**
 *
 * 验证码生成
 */
public function verify_c(){
  $Verify = new \Think\Verify();
  $Verify->fontSize = 18;
  $Verify->length  = 4;
  $Verify->useNoise = false;
  $Verify->codeSet = &#39;0123456789&#39;;
  $Verify->imageW = 130;
  $Verify->imageH = 50;
  //$Verify->expire = 600;
  $Verify->entry();
}
Copier après la connexion

2. L'attribut src de l'image qui doit être générée à la réception pointe vers la vérification code

<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"    style="max-width:90%" alt="验证码" src="{:U(&#39;Home/Index/verify_c&#39;,array())}" title="点击刷新">
</p>
Copier après la connexion

3. Terminer l'écriture Après ce qui précède, le code de vérification pour l'initialisation de la page peut apparaître. Ce qui est écrit ci-dessous est d'actualiser une nouvelle image de code de vérification après avoir cliqué sur la vérification. image de code (cela se fait en modifiant l'attribut src de l'image avec jquery. La fonction de traitement des requêtes est la même, mais ajoutez un nombre aléatoire après la requête pour distinguer la requête de l'image précédente)

// 验证码生成
var captcha_img = $(&#39;#captcha-container&#39;).find(&#39;img&#39;)
var verifyimg = captcha_img.attr("src");
captcha_img.attr(&#39;title&#39;, &#39;点击刷新&#39;);
captcha_img.click(function(){
  if( verifyimg.indexOf(&#39;?&#39;)>0){
    $(this).attr("src", verifyimg+&#39;&random=&#39;+Math.random());
  }else{
    $(this).attr("src", verifyimg.replace(/\?.*$/,&#39;&#39;)+&#39;?&#39;+Math.random());
  }
});
Copier après la connexion

4. Vérifiez que le code de vérification est correctement saisi
a Dans le répertoire commun Ajoutez la fonction globale

/**
 * 验证码检查
 */
function check_verify($code, $id = ""){
  $verify = new \Think\Verify();
  return $verify->check($code, $id);
}
Copier après la connexion

b. code

// 检查验证码
$verify = I(&#39;param.verify&#39;,&#39;&#39;);
if(!check_verify($verify)){
  $this->error("亲,验证码输错了哦!",$this->site_url,9);
}
Copier après la connexion

Vous pouvez désormais utiliser le code de vérification tp3.2.

Supplément : lorsque j'écrivais, j'ai mis la quatrième étape b dans un ajax pour vérification et j'ai renvoyé un résultat de test. Ensuite, il est déterminé s'il faut soumettre le formulaire en fonction des résultats renvoyés. Cependant, une fois que le code de vérification a réussi la première vérification, la deuxième fois ne fonctionnera pas.

Voici l'intégralité du contenu de cet article. Il y a une petite question à la fin de l'article. J'espère que vous pourrez trouver une solution. J'espère également que cet article sera utile à votre étude.

Pour plus d'articles liés à thinkphp3.2, cliquez sur Actualiser pour générer le code de vérification, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal