Maison > développement back-end > Problème PHP > Comment définir le code de vérification d'image en php

Comment définir le code de vérification d'image en php

藏色散人
Libérer: 2023-03-08 09:42:01
original
3390 Les gens l'ont consulté

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.

Comment définir le code de vérification d'image en php

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;
Copier après la connexion

(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);
    }
Copier après la connexion

(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);//水平填充一行字符串
Copier après la connexion

(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);//显示图片?>
Copier après la connexion

  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(&#39;refresh&#39;).src=&#39;image.php&#39; ">
    <font color="#ffffff">点击图片刷新</font>
    <input type="submit" value="登录"/>
</form>
Copier après la connexion

  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[&#39;code&#39;] == $_SESSION[&#39;img_number&#39;]){
        echo "验证码正确";
    }else{
        echo "验证码错误";
    }?>
Copier après la connexion

 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!

Étiquettes associées:
php
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