Comment définir le code de vérification de l'image en PHP : générez d'abord une chaîne aléatoire et enregistrez-la à l'aide de la session ; puis créez une image simple, définissez la couleur d'arrière-plan, la couleur du texte et ajoutez des lignes d'interférence, de l'interféron ; remplissez l'image avec la chaîne aléatoire générée ; effacez enfin le tampon de sortie, puis générez l'image du code de vérification.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3
PHP génère un code de vérification d'image (simple)
Je suis nouveau sur PHP et j'ai écrit une interface de connexion Web En plus du nom d'utilisateur et du mot de passe, j'ai pensé qu'il serait plus cool d'avoir un code de vérification, alors j'ai écrit une image. .php basé sur la brève introduction du livre de référence Générez un code de vérification d'image simple, qui est assez émouvant et j'aimerais le partager.
1. Étapes de génération du code de vérification d'image :
(1) Générez une chaîne aléatoire (en supposant que seulement 6 chiffres sont nécessaires) et enregistrez-la en utilisant la session pour la vérification
<? = ($i=;$i<;$i++= rand(,= $] = $str;
(2) Créez une image simple (80X20), définissez la couleur d'arrière-plan, la couleur du texte et ajoutez des lignes d'interférence et des interférons
$img_handle = Imagecreate(80, 20); //图片大小80X20 $back_color = ImageColorAllocate($img_handle, 255, 255, 255); //背景颜色(白色) $txt_color = ImageColorAllocate($img_handle, 0,0, 0); //文本颜色(黑色) //加入干扰线 for($i=0;$i<3;$i++) { $line = ImageColorAllocate($img_handle,rand(0,255),rand(0,255),rand(0,255)); Imageline($img_handle, rand(0,15), rand(0,15), rand(100,150),rand(10,50), $line); } //加入干扰象素 for($i=0;$i<200;$i++) { $randcolor = ImageColorallocate($img_handle,rand(0,255),rand(0,255),rand(0,255)); Imagesetpixel($img_handle, rand()%100 , rand()%50 , $randcolor); }
(3) Remplissez la couleur d'arrière-plan de l'image, puis ajoutez la couleur générée ; caractères aléatoires Image remplie de chaîne ;
Imagefill($img_handle, 0, 0, $back_color); //填充图片背景色 ImageString($img_handle, 28, 10, 0, $str, $txt_color);//水平填充一行字符串
(4) Effacez le tampon de sortie, générez l'image du code de vérification et affichez l'image.
ob_clean(); // ob_clean()清空输出缓存区 header("Content-type: image/png"); //生成验证码图片 Imagepng($img_handle);//显示图片?>
2. Référence du code de vérification de l'image [Apprentissage recommandé : "Tutoriel vidéo PHP"]
Ajoutez l'image du code de vérification dans le formulaire, src="image .php" est le php utilisé pour générer l'image du code de vérification selon les étapes ci-dessus. Afin d'augmenter l'effet, la fonction js rafraîchissant le code de vérification a été ajoutée, vous pouvez vous y référer.
<form id="form1" name="form1" method="post" action="post.php"> <input type="text" name="code" /> <img src="image.php" id = "refresh" title="刷新验证码" align="absmiddle" onclick="document.getElementById('refresh').src='image.php' "> <font color="#ffffff">点击图片刷新</font> <input type="submit" value="登录"/> </form>
3. Vérification du code de vérification
Dans post.php, utilisez la session pour enregistrer la chaîne dans la première étape afin qu'elle corresponde au code de vérification saisi par l'utilisateur.
<?php session_start(); if($_POST['code'] == $_SESSION['img_number']){ echo "验证码正确"; }else{ echo "验证码错误"; }?>
4. Affichage de l'effet :
Image du code de vérification généré :
Effet dans la boîte de connexion :
4. Discussion des problèmes restants
(1) Pourquoi devez-vous utiliser ob_clean() pour vider le tampon de sortie avant de générer une image de code de vérification et d'afficher l'image ? ?
Comme je ne connais pas très bien PHP, vous pouvez vous référer à : http://www.php.net/manual/zh/function.ob-clean.php
(2) Remplissez l'image. Existe-t-il un moyen de définir la taille de la police ? ?
La fonction ImageString utilise la police intégrée et ne peut être remplacée que par la fonction imagettftext(). Veuillez vous référer à : http://us3.php.net/manual/zh/function.imagettftext.php
Discutez de la bienvenue, veuillez vaporiser légèrement ~
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!