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(); }
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");
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 :
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" >
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('verifyImg').src='-Article/verify/'+timenow; } </script>
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['verify'] != md5($_POST['verify'])) { $this->error('验证码错误!'); }
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 = '0123456789'; $Verify->imageW = 130; $Verify->imageH = 50; //$Verify->expire = 600; $Verify->entry(); }
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('Home/Index/verify_c',array())}" title="点击刷新"> </p>
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 = $('#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()); } });
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); }
b. code
// 检查验证码 $verify = I('param.verify',''); if(!check_verify($verify)){ $this->error("亲,验证码输错了哦!",$this->site_url,9); }
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.