• <ul id="k82ei"></ul>
    <th id="k82ei"><menu id="k82ei"></menu></th>
    <strike id="k82ei"></strike>
    <ul id="k82ei"><tbody id="k82ei"></tbody></ul>
    <strike id="k82ei"><s id="k82ei"></s></strike>
  • <th id="k82ei"></th>
     style=\"background-color:#ddd; <\/span>\"<\/span><\/span>><\/span>\n<\/span>\n    <\/span>    create_image();\n<\/span><\/span>    display();\n<\/span><\/span>    \/***** definition of functions *****\/\n<\/span><\/span>    function display()\n<\/span><\/span>    {\n<\/span><\/span>        ?><\/span>\n<\/span>\n         style=\"text-align:center;<\/span>\"<\/span><\/span>><\/span>\n<\/span>            ><\/span>TYPE THE TEXT YOU SEE IN THE IMAGE<\/h3<\/span>><\/span>\n<\/span>            ><\/span>This is just to check if you are a robot<\/b<\/span>><\/span>\n<\/span>\n             style=\"display:block;margin-bottom:20px;margin-top:20px;<\/span>\"<\/span><\/span>><\/span>\n<\/span>                 src=\"image.png\"<\/span>><\/span>\n<\/span>            <\/div<\/span>><\/span>\n<\/span>            \/\/div1 ends\n        <\/div<\/span>><\/span>                          \/\/div2 ends\n<\/span>\n    <\/span>    }\n<\/span><\/span>\n<\/span>    function  create_image()\n<\/span><\/span>    {\n<\/span><\/span>        $image = imagecreatetruecolor(200, 50);\n<\/span><\/span>        imagepng($image, \"image.png\");\n<\/span><\/span>    }\n<\/span><\/span>\n<\/span>    ?><\/span>\n<\/span>    <\/body<\/span>><\/span>\n<\/span><\/span>?><\/span><\/span><\/pre>\n

    La première ligne indique le début de la session de l'utilisateur sur notre page. <\/p>\n

    La fonction affiche () n'a rien d'autre qu'un code HTML normal qui affiche une image dans le navigateur. En dehors de cela, seul le style est effectué pour que la sortie soit présentable. <\/p>\n

    à l'intérieur de la fonction create_image (), une variable est utilisée pour référer l'image renvoyée par la fonction ImageCreateTrueColor () qui prend la largeur et la longueur de l'image comme arguments. ImagePng () crée une image PNG du nom et du chemin spécifié (dans le même répertoire). <\/p>\n

    Une image noire sera la sortie après notre première étape. <\/p>\n

    \"Captchas <\/p>\n

    Notez que la fonction ImagePng () sera la dernière ligne de notre fonction et toutes les étapes suivantes doivent être insérées dans la fonction create_image () avant cet appel de fonction, sinon ils ne prendraient pas effet. <\/p>\n

    Créer une forme <\/h3>\n

    Toute forme peut être choisie pour le captcha. Nous choisirons un rectangle en utilisant la fonction ImageFildRectangle (). Il faut cinq arguments - référence d'image, démarrage X-POS, démarrer Y-POS, terminer X-POS, terminer Y-POS et la couleur d'arrière-plan. Vous pouvez utiliser la fonction correspondante pour une ellipse pour générer un captcha elliptique. <\/p>\n

    La fonction ImageColorAllocate () alloue une couleur à une variable car elle prend la combinaison RVB de la couleur comme arguments. Le code suivant doit être ajouté dans la fonction Create (). <\/p>\n

    <\/span>session_start();\n<\/span><\/span>?><\/span>\n<\/span>\n    ><\/span>demo.php<\/title<\/span>><\/span>\n<\/span>    
    

    国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

    style=\"background-color:#ddd; <\/span>\"<\/span><\/span>><\/span>\n<\/span>\n <\/span> create_image();\n<\/span><\/span> display();\n<\/span><\/span> \/***** definition of functions *****\/\n<\/span><\/span> function display()\n<\/span><\/span> {\n<\/span><\/span> ?><\/span>\n<\/span>\n style=\"text-align:center;<\/span>\"<\/span><\/span>><\/span>\n<\/span> ><\/span>TYPE THE TEXT YOU SEE IN THE IMAGE<\/h3<\/span>><\/span>\n<\/span> ><\/span>This is just to check if you are a robot<\/b<\/span>><\/span>\n<\/span>\n style=\"display:block;margin-bottom:20px;margin-top:20px;<\/span>\"<\/span><\/span>><\/span>\n<\/span> src=\"image.png\"<\/span>><\/span>\n<\/span> <\/div<\/span>><\/span>\n<\/span> \/\/div1 ends\n <\/div<\/span>><\/span> \/\/div2 ends\n<\/span>\n <\/span> }\n<\/span><\/span>\n<\/span> function create_image()\n<\/span><\/span> {\n<\/span><\/span> $image = imagecreatetruecolor(200, 50);\n<\/span><\/span> imagepng($image, \"image.png\");\n<\/span><\/span> }\n<\/span><\/span>\n<\/span> ?><\/span>\n<\/span> <\/body<\/span>><\/span>\n<\/span><\/span>?><\/span><\/span><\/pre>\n

    L'image précédente sera blanche après cette étape. <\/p>\n

    \"Captchas <\/p>\n

    générer des lignes aléatoires. <\/h3>\n

    Maintenant, nous commen?ons par faire la partie de la distorsion du captcha. En PHP, les lignes sont générées à partir du point de départ (x1, y1) au point final (x2, y2). Maintenant, comme nous voulons que nos lignes touchent les deux extrémités de la bo?te, nous garderons les coordonnées comme c'est-à-dire la largeur complète de notre bo?te. Les coordonnées seront générées au hasard. Cela ne créera qu'une seule ligne aléatoire. Nous générerons plusieurs lignes en mettant cette fonctionnalité à l'intérieur d'une boucle pour une boucle. <\/y1><\/x1><\/p>\n

    $background_color = imagecolorallocate($image, 255, 255, 255);  \n<\/span>imagefilledrectangle($image,0,0,200,50,$background_color);<\/span><\/pre>\n

    La fonction Imageline () prend les coordonnées X1, X2, Y1, Y2 comme arguments dans cet ordre en dehors de la référence d'image et de la couleur de la ligne. La couleur de la ligne a été allouée juste au moment où la couleur d'arrière-plan avait été allouée à l'étape précédente. <\/p>\n

    La coordonnée y est donnée comme rand () * p car c'est la hauteur de notre bo?te et renvoie toujours une valeur inférieure à 50. Vous pouvez également utiliser Rand (0,50). Ils produiront la même plage de sortie. <\/p>\n

    \"Captchas <\/p>\n\n

    générer des points aléatoires. <\/h3>\n

    Des points aléatoires seront générés de la même manière que les lignes aléatoires. La fonction utilisée est imagessetPixel (). Cette fonction prend la valeur des coordonnées où le point sera placé dans la bo?te. <\/p>\n

    $line_color = imagecolorallocate($image, 64,64,64); \n<\/span>for($i=0;$i<10;$i++) {\n<\/span>    imageline($image,0,rand()%50,200,rand()%50,$line_color);\n<\/span>}<\/span><\/pre>\n

    La coordonnée x est générée de manière aléatoire en utilisant Rand () * 0 car il s'agit de la largeur de notre bo?te et cela renverra toujours une valeur inférieure à 200. Vous pouvez également utiliser Rand (0 200). Ils produiront la même plage de sortie. La coordonnée y est générée comme dans l'étape des lignes. <\/p>\n

    \"Captchas <\/p>\n

    générer du texte aléatoire <\/h3>\n

    Nous pointerons au hasard vers une position dans la cha?ne (qui contient l'alphabet en bas et en haut) et l'attribuer à la variable $ Letter <\/p>\n

    <\/span>session_start();\n<\/span><\/span>?><\/span>\n<\/span>\n    ><\/span>demo.php<\/title<\/span>><\/span>\n<\/span>     style=\"background-color:#ddd; <\/span>\"<\/span><\/span>><\/span>\n<\/span>\n    <\/span>    create_image();\n<\/span><\/span>    display();\n<\/span><\/span>    \/***** definition of functions *****\/\n<\/span><\/span>    function display()\n<\/span><\/span>    {\n<\/span><\/span>        ?><\/span>\n<\/span>\n         style=\"text-align:center;<\/span>\"<\/span><\/span>><\/span>\n<\/span>            ><\/span>TYPE THE TEXT YOU SEE IN THE IMAGE<\/h3<\/span>><\/span>\n<\/span>            ><\/span>This is just to check if you are a robot<\/b<\/span>><\/span>\n<\/span>\n             style=\"display:block;margin-bottom:20px;margin-top:20px;<\/span>\"<\/span><\/span>><\/span>\n<\/span>                 src=\"image.png\"<\/span>><\/span>\n<\/span>            <\/div<\/span>><\/span>\n<\/span>            \/\/div1 ends\n        <\/div<\/span>><\/span>                          \/\/div2 ends\n<\/span>\n    <\/span>    }\n<\/span><\/span>\n<\/span>    function  create_image()\n<\/span><\/span>    {\n<\/span><\/span>        $image = imagecreatetruecolor(200, 50);\n<\/span><\/span>        imagepng($image, \"image.png\");\n<\/span><\/span>    }\n<\/span><\/span>\n<\/span>    ?><\/span>\n<\/span>    <\/body<\/span>><\/span>\n<\/span><\/span>?><\/span><\/span><\/pre>\n

    Lorsqu'il est mis à l'intérieur d'une boucle, il ressemble à ceci- <\/p>\n

    $background_color = imagecolorallocate($image, 255, 255, 255);  \n<\/span>imagefilledrectangle($image,0,0,200,50,$background_color);<\/span><\/pre>\n

    Nous expliquerons les lignes <\/p>\n

    $line_color = imagecolorallocate($image, 64,64,64); \n<\/span>for($i=0;$i<10;$i++) {\n<\/span>    imageline($image,0,rand()%50,200,rand()%50,$line_color);\n<\/span>}<\/span><\/pre>\n

    dans la section suivante. <\/p>\n

    La fonction ImageString () écrit le texte dans notre image. Il a 6 arguments: <\/p>\n

      \n
    1. Référence d'image. <\/li>\n
    2. taille de police du texte (il peut être 5 au maximum). <\/li>\n
    3. x-coordonnée (changeant proportionnellement pour chaque alphabet). <\/li>\n
    4. y-coordonnée (a gardé la même, bien que nous puissions aussi changer cela au hasard). <\/li>\n
    5. cha?ne réelle à écrire. <\/li>\n
    6. Font-Color du texte. <\/li>\n<\/ol>\n

      Vous pouvez également utiliser la fonction ImageTtFText () si vous souhaitez avoir une police plus grande et un style de police différent. Il faut 2 arguments supplémentaires pour le style d'angle et de police du texte. <\/p>\n

      Le calcul de la coordonnée x est effectué par inspection. En gros, les lettres sont espacées d'environ 35 pixels (5 ($ i * 30)) où $ i = 0,1,2,3,4,5,6. En effet, si nous avions gardé cette valeur autour de 15 à 20 pix, il y aurait eu une possibilité que deux lettres se chevauchent. Si la valeur avait été supérieure à 40px, les lettres n'auraient pas intégré à la bo?te. <\/p>\n

      Cela générera un texte CAPTCHA à 6 alphabet. Nous pouvons toujours créer plus d'aléatoire en modifiant les aspects qui ont été maintenus constants en raison de la simplicité, comme la couleur, les coordonnées y, etc. <\/p>\n

      Le captcha final ressemblera à ceci <\/p>\n

      \"Captchas <\/p>\n

      Le texte écrit dans le captcha changera chaque fois que vous actualisez la page.
      \nPlus d'aléatoire peut être réalisé en créant des conceptions avec les pixels ou en modifiant la couleur ou la taille. <\/p>\n

      valider <\/h2>\n

      C'est ici que la réponse de l'utilisateur est prise et après l'avoir traitée, il \/ elle re?oit une réponse. Au début, un formulaire simple est fabriqué avec une zone de texte d'entrée et un bouton de soumission. Il peut y avoir de nombreuses fa?ons de traiter un captcha conformément aux exigences des applications Web complexes. Mais en gardant les choses simples pour cet exemple, nous le traiterons sur la même page. <\/p>\n

      Les deux lignes laissées inexpliquées dans les extraits de code précédents entrent en jeu maintenant: <\/p>\n

        \n
      1. $ word. = $ Lettre; - L'opérateur de concaténation. est utilisé pour ajouter toutes les lettres individuelles les unes après les autres, générant le mot de 6 lettres. <\/li>\n
      2. $ _ session ['captcha_string'] = $ word; Notre cha?ne CAPTCHA est stockée dans une variable de session qui sera utilisée à des fins de validation. <\/li>\n<\/ol>\n

        Nous allons modifier la définition de l'affichage () pour ajouter une structure de forme. <\/p>\n

        Deux boutons de soumission seront utilisés, l'un pour soumettre la cha?ne et une autre pour actualiser la page. <\/p>\n

        Les lignes suivantes seront ajoutées entre les deux balises div de cl?ture (voir les commentaires dans la fonction d'affichage () précédente) <\/p>\n

        <\/span>session_start();\n<\/span><\/span>?><\/span>\n<\/span>\n    ><\/span>demo.php<\/title<\/span>><\/span>\n<\/span>     style=\"background-color:#ddd; <\/span>\"<\/span><\/span>><\/span>\n<\/span>\n    <\/span>    create_image();\n<\/span><\/span>    display();\n<\/span><\/span>    \/***** definition of functions *****\/\n<\/span><\/span>    function display()\n<\/span><\/span>    {\n<\/span><\/span>        ?><\/span>\n<\/span>\n         style=\"text-align:center;<\/span>\"<\/span><\/span>><\/span>\n<\/span>            ><\/span>TYPE THE TEXT YOU SEE IN THE IMAGE<\/h3<\/span>><\/span>\n<\/span>            ><\/span>This is just to check if you are a robot<\/b<\/span>><\/span>\n<\/span>\n             style=\"display:block;margin-bottom:20px;margin-top:20px;<\/span>\"<\/span><\/span>><\/span>\n<\/span>                 src=\"image.png\"<\/span>><\/span>\n<\/span>            <\/div<\/span>><\/span>\n<\/span>            \/\/div1 ends\n        <\/div<\/span>><\/span>                          \/\/div2 ends\n<\/span>\n    <\/span>    }\n<\/span><\/span>\n<\/span>    function  create_image()\n<\/span><\/span>    {\n<\/span><\/span>        $image = imagecreatetruecolor(200, 50);\n<\/span><\/span>        imagepng($image, \"image.png\");\n<\/span><\/span>    }\n<\/span><\/span>\n<\/span>    ?><\/span>\n<\/span>    <\/body<\/span>><\/span>\n<\/span><\/span>?><\/span><\/span><\/pre>\n

        Avant de nous déplacer plus loin, nous devons savoir quand afficher et quand ne pas afficher la zone d'entrée. Il ne sera affiché que <\/p>\n

          \n
        1. Si la page vient de se charger. <\/li>\n
        2. Si la réponse de l'utilisateur était incorrecte. <\/li>\n<\/ol>\n\n

          La première condition est remplie en utilisant un drapeau $ qui est défini sur ?1? chaque fois que le bouton Soumettre est cliqué. Initialement, il a été défini sur toute autre valeur. La deuxième condition est obtenue en vérifiant si la valeur stockée dans notre variable de session est la même que l'entrée utilisateur (voir le code ci-dessous). <\/p>\n

          Pour y parvenir, nous remplacerons les lignes suivantes de notre étape de départ au début de l'article: <\/p>\n

          $background_color = imagecolorallocate($image, 255, 255, 255);  \n<\/span>imagefilledrectangle($image,0,0,200,50,$background_color);<\/span><\/pre>\n

          avec: <\/p>\n

          $line_color = imagecolorallocate($image, 64,64,64); \n<\/span>for($i=0;$i<10;$i++) {\n<\/span>    imageline($image,0,rand()%50,200,rand()%50,$line_color);\n<\/span>}<\/span><\/pre>\n

          Notez que les fonctions create_image () et affiche () sont appelées uniquement selon les 2 conditions discutées ci-dessus. <\/p>\n

          Nous aurons besoin de la variable de session de la page précédente, de sorte que la session n'est pas détruite ici. La session sera automatiquement détruite une fois la fenêtre du navigateur fermé. <\/p>\n

          le captcha ressemblera à ceci- <\/p>\n

          \"Captchas <\/p>\n

          Si l'entrée est incorrecte, seulement alors l'utilisateur sera à nouveau invité. <\/p>\n

          \"Captchas <\/p>\n

          Si l'entrée est correcte, l'utilisateur sera affiché un message. <\/p>\n

          \"Captchas <\/p>\n

          Il y a une mise en garde mineure - lorsque l'utilisateur appuie sur le bouton arrière, toute image déjà présente dans le cache du navigateur ne rechargera pas, tandis que la page le fait. Dans une demande postale, le bouton de retour du navigateur affichera une page \"Document Expired\", mais lorsque la demande est obtenue, l'image ne se régénère pas. <\/p>\n

          La solution est simple - créant des noms uniques d'images à chaque fois, de sorte que le navigateur ne les trouve pas en cache. Nous allons ajouter une cha?ne unique renvoyée par la fonction time () intégrée au nom de l'image lors de la création et de l'écart dans le navigateur. <\/p>\n

          Ajoutez cette ligne juste en dessous où vous avez commencé votre session: <\/p>\n

          $pixel_color = imagecolorallocate($image, 0,0,255);\n<\/span>for($i=0;$i<1000;$i++) {\n<\/span>    imagesetpixel($image,rand()%200,rand()%50,$pixel_color);\n<\/span>}  <\/span><\/pre>\n

          Remplacez la balise SRC IMG dans la fonction Display () par <\/p>\n

          $letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n<\/span>$len = strlen($letters);\n<\/span>$letter = $letters[rand(0, $len-1)];\n<\/span>\n$text_color = imagecolorallocate($image, 0,0,0);<\/span><\/pre>\n

          et la partie où nous avons créé l'image PNG dans la fonction create_image () sera également remplacée par <\/p>\n

          for ($i = 0; $i< 6;$i++) {\n<\/span>    $letter = $letters[rand(0, $len-1)];\n<\/span>    imagestring($image, 5,  5+($i*30), 20, $letter, $text_color);\n<\/span>    $word.=$letter;\n<\/span>}\n<\/span>$_SESSION['captcha_string'] = $word;<\/span><\/pre>\n

          Les images seront désormais appelées quelque chose comme Image39342015.png. Cette procédure créera des images autant de fois que la page est actualisée, ce qui peut gaspiller d'énormes quantités d'espace disque, nous nous assurerons donc qu'avant de créer une image, toutes les autres images de l'extension PNG sont supprimées. Ajoutez ce qui suit juste avant que la fonction ImagePng () ne soit appelée. <\/p>\n

          $word.=$letter;\n<\/span>$_SESSION['captcha_string'] = $word;   <\/span><\/pre>\n

          Dans une application de production, assurez-vous simplement d'isoler le dossier où les images CAPTCHA sont stockées, sinon d'autres images utiles peuvent également être supprimées. <\/p>\n

          Téléchargez le code complet ici. <\/p>\n

          Conclusion <\/h2>\n

          Faire différents types de captchas en PHP est très facile. Cet article couvrait les trois choses de base utilisées pour créer un captcha standard - forme, distorsion et texte. Cet article était une preuve de concept, et le code présenté ici ne devrait pas être utilisé dans la production - d'autant plus que d'excellentes alternatives telles que RecaptCha existent, ce qui prend également en charge la production solide pour aider les personnes ayant des troubles auditifs. Nous espérons que vous avez trouvé cet article intéressant. Laissez vos commentaires et commentaires ci-dessous! <\/p>\n\n\n\n

          Questions fréquemment posées (FAQ) sur les captchas simples avec PHP GD <\/h2>\n\n\n\n

          Comment puis-je personnaliser l'apparence de mon captcha? <\/h3>

          La personnalisation de l'apparence de votre captcha peut être effectuée en modifiant le code PHP. Vous pouvez modifier la police, la couleur, la taille et même l'arrière-plan du captcha. Par exemple, pour modifier la police, vous pouvez utiliser la fonction ImageTtFText () et spécifier le fichier de police dans les paramètres. Pour modifier la couleur, vous pouvez utiliser la fonction ImageColorAllocate () et spécifier les valeurs RVB pour la couleur souhaitée. N'oubliez pas que la personnalisation rend non seulement votre captcha plus esthétique mais aussi plus s?r contre les bots. <\/p>

          Comment puis-je rendre mon captcha plus sécurisé? <\/h3>

          Il existe plusieurs fa?ons de rendre votre captcha plus sécurisé. Une fa?on consiste à utiliser un mélange de caractères alphanumériques, à la fois en haut et en minuscules. Cela augmente le nombre de combinaisons possibles, ce qui rend plus difficile pour les bots de deviner. Vous pouvez également augmenter la longueur du captcha. Une autre méthode consiste à ajouter du bruit, tel que des lignes ou des points, à l'image CAPTCHA. Cela peut être fait en utilisant les fonctions ImageLine () et ImageEllipse () dans Php. <\/p>

          Pourquoi mon captcha ne s'affiche-t-il plusieurs raisons. Une raison courante est que la bibliothèque GD n'est pas installée ou activée dans votre installation PHP. Vous pouvez vérifier cela en utilisant la fonction Function_Exists (?GD_INFO?). S'il revient faux, alors GD n'est pas activé. Une autre raison pourrait être des erreurs dans votre code PHP. Assurez-vous de vérifier vos journaux d'erreur pour tous les indices. <\/h3>

          Comment puis-je implémenter une fonctionnalité CAPTCHA de rafra?chissement? <\/p>

          La mise en ?uvre d'une fonctionnalité CAPTCHA de rafra?chissement peut être effectuée en utilisant AJAX. Vous devez créer une fonction JavaScript qui envoie une demande au serveur pour générer un nouveau captcha. Le serveur répond ensuite avec la nouvelle image CAPTCHA qui est ensuite mise à jour sur la page Web sans rechargement de page complète. <\/h3>

          Puis-je utiliser CAPTCHA sans bibliothèque GD? <\/p>

          Alors que la bibliothèque GD est couramment utilisée pour Créer des captchas en php, ce n'est pas le seul moyen. Vous pouvez également utiliser d'autres bibliothèques comme ImageMagick ou même créer un captcha basé sur du texte. Cependant, ces méthodes peuvent ne pas fournir le même niveau de sécurité et de personnalisation que la bibliothèque GD. <\/h3>\n

          Comment puis-je ajouter CAPTCHA à mon formulaire de contact? <\/h3>

          L'ajout de captcha à votre formulaire de contact implique la modification du code HTML et PHP du formulaire. Dans le HTML, vous devrez ajouter une balise d'image pour le CAPTCHA et un champ de saisie pour que l'utilisateur puisse entrer le captcha. Dans le PHP, vous devrez générer le captcha et valider l'entrée de l'utilisateur. <\/p>

          Pourquoi ma validation CAPTCHA ne fonctionne-t-elle pas? à plusieurs raisons. L'une des raisons courantes est que les variables de session ne sont pas définies ou récupérées correctement. Assurez-vous que Session_Start () est appelé avant que toute sortie ne soit envoyée au navigateur et que les variables de session sont utilisées correctement. Une autre raison pourrait être que l'entrée de l'utilisateur ne soit pas comparée correctement avec le captcha. Assurez-vous d'utiliser une comparaison insensible à la caisse si votre captcha comprend des caractères supérieurs et minuscules. <\/h3>

          Comment puis-je rendre mon captcha accessible aux utilisateurs visuellement malvoyants? <\/p>

          Rendre votre captcha accessible visuellement visuellement? Les utilisateurs altérés peuvent être difficiles, mais il existe plusieurs méthodes. Une méthode consiste à fournir une option audio captcha. Cela implique la génération d'un fichier audio avec les personnages CAPTCHA exprimés à haute voix. Une autre méthode consiste à utiliser un captcha alternatif basé sur des questions, où l'utilisateur est posé une question simple qu'un bot aurait du mal à répondre. <\/h3>

          Les bots peuvent toujours contourner mon captcha? <\/p>

          tandis que les captchas sont peut-être Con?us pour empêcher les robots, ils ne sont pas infaillibles. Les bots avancés peuvent utiliser l'OCR (reconnaissance des caractères optiques) pour lire les caractères CAPTCHA. Cependant, en rendant votre captcha plus complexe, comme utiliser un mélange de caractères, en ajoutant du bruit et en changeant régulièrement le captcha, vous pouvez rendre le captcha plus difficile pour les robots. ? <\/h3>

          captcha est une méthode courante pour empêcher le spam, mais ce n'est pas le seul moyen. D'autres méthodes incluent l'utilisation d'un pot de miel, qui est un champ de formulaire caché que les bots se rempliront, mais les humains ne le feront pas, vérifiant le comportement de l'utilisateur, comme le temps pris pour remplir le formulaire et l'utilisation d'un service comme Akismet, qui filtre Spam basé sur une base de données de spam connu. <\/p>"}

          Table des matières
          Les plats clés
          Dessin captchas
          Afficher une image vide
          Créer une forme
          générer des lignes aléatoires.
          générer des points aléatoires.
          générer du texte aléatoire
          valider
          Conclusion
          Questions fréquemment posées (FAQ) sur les captchas simples avec PHP GD
          Comment puis-je personnaliser l'apparence de mon captcha?
          Comment puis-je rendre mon captcha plus sécurisé?
          Pourquoi mon captcha ne s'affiche-t-il plusieurs raisons. Une raison courante est que la bibliothèque GD n'est pas installée ou activée dans votre installation PHP. Vous pouvez vérifier cela en utilisant la fonction Function_Exists (?GD_INFO?). S'il revient faux, alors GD n'est pas activé. Une autre raison pourrait être des erreurs dans votre code PHP. Assurez-vous de vérifier vos journaux d'erreur pour tous les indices.
          La mise en ?uvre d'une fonctionnalité CAPTCHA de rafra?chissement peut être effectuée en utilisant AJAX. Vous devez créer une fonction JavaScript qui envoie une demande au serveur pour générer un nouveau captcha. Le serveur répond ensuite avec la nouvelle image CAPTCHA qui est ensuite mise à jour sur la page Web sans rechargement de page complète.
          Alors que la bibliothèque GD est couramment utilisée pour Créer des captchas en php, ce n'est pas le seul moyen. Vous pouvez également utiliser d'autres bibliothèques comme ImageMagick ou même créer un captcha basé sur du texte. Cependant, ces méthodes peuvent ne pas fournir le même niveau de sécurité et de personnalisation que la bibliothèque GD.
          Comment puis-je ajouter CAPTCHA à mon formulaire de contact?
          Pourquoi ma validation CAPTCHA ne fonctionne-t-elle pas? à plusieurs raisons. L'une des raisons courantes est que les variables de session ne sont pas définies ou récupérées correctement. Assurez-vous que Session_Start () est appelé avant que toute sortie ne soit envoyée au navigateur et que les variables de session sont utilisées correctement. Une autre raison pourrait être que l'entrée de l'utilisateur ne soit pas comparée correctement avec le captcha. Assurez-vous d'utiliser une comparaison insensible à la caisse si votre captcha comprend des caractères supérieurs et minuscules.
          Rendre votre captcha accessible visuellement visuellement? Les utilisateurs altérés peuvent être difficiles, mais il existe plusieurs méthodes. Une méthode consiste à fournir une option audio captcha. Cela implique la génération d'un fichier audio avec les personnages CAPTCHA exprimés à haute voix. Une autre méthode consiste à utiliser un captcha alternatif basé sur des questions, où l'utilisateur est posé une question simple qu'un bot aurait du mal à répondre.
          tandis que les captchas sont peut-être Con?us pour empêcher les robots, ils ne sont pas infaillibles. Les bots avancés peuvent utiliser l'OCR (reconnaissance des caractères optiques) pour lire les caractères CAPTCHA. Cependant, en rendant votre captcha plus complexe, comme utiliser un mélange de caractères, en ajoutant du bruit et en changeant régulièrement le captcha, vous pouvez rendre le captcha plus difficile pour les robots. ?
          Maison développement back-end tutoriel php Captchas simples avec php et gd

          Captchas simples avec php et gd

          Feb 22, 2025 am 09:13 AM

          Captchas simples avec php et gd

          Captchas simples avec php et gd

          à l'heure actuelle, nous avons tous rencontré des images CAPTCHA sous des formes en ligne. Les captchas sont un mal nécessaire, et cet article vous apprendra comment ils sont fabriqués.

          Veuillez noter que bien qu'il y ait de meilleures solutions tierces automatiques pour CAPTCHAS telles que RecaptCha, ce tutoriel vise simplement à expliquer et à démontrer comment la technologie fonctionne réellement. Nous n'expliquerons pas ce que sont réellement Captchas, comme il est supposé être de notoriété publique et déjà couverte plus en détail ailleurs.

          Les plats clés

          • La bibliothèque GD (Graphics Draw) en PHP peut être utilisée pour créer des images CAPTCHA, qui consistent généralement en une forme, une distorsion et un texte.
          • Le processus de création du captcha consiste à afficher une image vide, à créer une forme, à générer des lignes et des points aléatoires et à générer du texte aléatoire.
          • Le processus de validation CAPTCHA consiste à comparer l'entrée de l'utilisateur avec la cha?ne CAPTCHA stockée dans une variable de session. Si l'entrée correspond à la cha?ne CAPTCHA, la réponse de l'utilisateur est jugée correcte.
          • Pour s'assurer que l'image CAPTCHA est toujours rafra?chie et non récupérée du cache du navigateur, des noms uniques peuvent être affectés aux images en utilisant la fonction Time () intégrée en php.
          • Bien que ce tutoriel montre comment créer un CAPTCHA simple, il est recommandé d'utiliser des solutions tierces plus sécurisées et accessibles comme RecaptCha pour les applications de production.

          Dessin captchas

          Vous devez avoir installé la bibliothèque GD (Graphics Draw) avant de continuer. Cette bibliothèque permet le dessin de graphiques et d'images via des fonctions PHP intégrées. Pour l'installer, exécutez Sudo apt-get installer php5-gd ou si sur les systèmes d'exploitation non basés sur l'ubuntu, suivez les instructions.

          Les captchas sont généralement composés de 3 choses - forme, distorsion et texte.
          Nous suivrons les étapes mentionnées ci-dessous:

          1. Affichez une image vide sur le navigateur.
          2. Créez une forme.
          3. générer des lignes aléatoires.
          4. générer des points aléatoires.
          5. générer du texte aléatoire.

          Le style de procédure utilisé dans cet article est présent uniquement parce qu'il s'agit d'une preuve de concept et de garder le fichier final aussi simple que possible. Dans un vrai projet, vous iriez OOP.

          Afficher une image vide

          L'image sera traitée par HTML comme si une image externe était affichée à l'aide de la balise ?IMG?. Deux fonctions sont utilisées - une pour créer l'image et une autre pour l'affichage.

          <span><span><?php
          </span></span><span><span>session_start();
          </span></span><span><span>?></span>
          </span>
              <span><span><span><title</span>></span>demo.php<span><span></title</span>></span>
          </span>    <span><span><span><body</span> <span>style<span>="<span>background-color:#ddd; </span>"</span></span>></span>
          </span>
              <span><span><?php
          </span></span><span>    <span>create_image();
          </span></span><span>    <span>display();
          </span></span><span>    <span>/***** definition of functions *****/
          </span></span><span>    <span>function display()
          </span></span><span>    <span>{
          </span></span><span>        <span>?></span>
          </span>
                  <span><span><span><div</span> <span>style<span>="<span>text-align:center;</span>"</span></span>></span>
          </span>            <span><span><span><h3</span>></span>TYPE THE TEXT YOU SEE IN THE IMAGE<span><span></h3</span>></span>
          </span>            <span><span><span><b</span>></span>This is just to check if you are a robot<span><span></b</span>></span>
          </span>
                      <span><span><span><div</span> <span>style<span>="<span>display:block;margin-bottom:20px;margin-top:20px;</span>"</span></span>></span>
          </span>                <span><span><span><img</span> src<span>="image.png"</span>></span>
          </span>            <span><span><span></div</span>></span>
          </span>            //div1 ends
                  <span><span><span></div</span>></span>                          //div2 ends
          </span>
              <span><span><?php
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>function  create_image()
          </span></span><span>    <span>{
          </span></span><span>        <span>$image = imagecreatetruecolor(200, 50);
          </span></span><span>        <span>imagepng($image, "image.png");
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>?></span>
          </span>    <span><span><span></body</span>></span>
          </span><span><span><?php
          </span></span><span><span>?></span></span>

          La première ligne indique le début de la session de l'utilisateur sur notre page.

          La fonction affiche () n'a rien d'autre qu'un code HTML normal qui affiche une image dans le navigateur. En dehors de cela, seul le style est effectué pour que la sortie soit présentable.

          à l'intérieur de la fonction create_image (), une variable est utilisée pour référer l'image renvoyée par la fonction ImageCreateTrueColor () qui prend la largeur et la longueur de l'image comme arguments. ImagePng () crée une image PNG du nom et du chemin spécifié (dans le même répertoire).

          Une image noire sera la sortie après notre première étape.

          Captchas simples avec php et gd

          Notez que la fonction ImagePng () sera la dernière ligne de notre fonction et toutes les étapes suivantes doivent être insérées dans la fonction create_image () avant cet appel de fonction, sinon ils ne prendraient pas effet.

          Créer une forme

          Toute forme peut être choisie pour le captcha. Nous choisirons un rectangle en utilisant la fonction ImageFildRectangle (). Il faut cinq arguments - référence d'image, démarrage X-POS, démarrer Y-POS, terminer X-POS, terminer Y-POS et la couleur d'arrière-plan. Vous pouvez utiliser la fonction correspondante pour une ellipse pour générer un captcha elliptique.

          La fonction ImageColorAllocate () alloue une couleur à une variable car elle prend la combinaison RVB de la couleur comme arguments. Le code suivant doit être ajouté dans la fonction Create ().

          <span><span><?php
          </span></span><span><span>session_start();
          </span></span><span><span>?></span>
          </span>
              <span><span><span><title</span>></span>demo.php<span><span></title</span>></span>
          </span>    <span><span><span><body</span> <span>style<span>="<span>background-color:#ddd; </span>"</span></span>></span>
          </span>
              <span><span><?php
          </span></span><span>    <span>create_image();
          </span></span><span>    <span>display();
          </span></span><span>    <span>/***** definition of functions *****/
          </span></span><span>    <span>function display()
          </span></span><span>    <span>{
          </span></span><span>        <span>?></span>
          </span>
                  <span><span><span><div</span> <span>style<span>="<span>text-align:center;</span>"</span></span>></span>
          </span>            <span><span><span><h3</span>></span>TYPE THE TEXT YOU SEE IN THE IMAGE<span><span></h3</span>></span>
          </span>            <span><span><span><b</span>></span>This is just to check if you are a robot<span><span></b</span>></span>
          </span>
                      <span><span><span><div</span> <span>style<span>="<span>display:block;margin-bottom:20px;margin-top:20px;</span>"</span></span>></span>
          </span>                <span><span><span><img</span> src<span>="image.png"</span>></span>
          </span>            <span><span><span></div</span>></span>
          </span>            //div1 ends
                  <span><span><span></div</span>></span>                          //div2 ends
          </span>
              <span><span><?php
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>function  create_image()
          </span></span><span>    <span>{
          </span></span><span>        <span>$image = imagecreatetruecolor(200, 50);
          </span></span><span>        <span>imagepng($image, "image.png");
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>?></span>
          </span>    <span><span><span></body</span>></span>
          </span><span><span><?php
          </span></span><span><span>?></span></span>

          L'image précédente sera blanche après cette étape.

          Captchas simples avec php et gd

          générer des lignes aléatoires.

          Maintenant, nous commen?ons par faire la partie de la distorsion du captcha. En PHP, les lignes sont générées à partir du point de départ (x1, y1) au point final (x2, y2). Maintenant, comme nous voulons que nos lignes touchent les deux extrémités de la bo?te, nous garderons les coordonnées comme c'est-à-dire la largeur complète de notre bo?te. Les coordonnées seront générées au hasard. Cela ne créera qu'une seule ligne aléatoire. Nous générerons plusieurs lignes en mettant cette fonctionnalité à l'intérieur d'une boucle pour une boucle.

          <span>$background_color = imagecolorallocate($image, 255, 255, 255);  
          </span><span>imagefilledrectangle($image,0,0,200,50,$background_color);</span>

          La fonction Imageline () prend les coordonnées X1, X2, Y1, Y2 comme arguments dans cet ordre en dehors de la référence d'image et de la couleur de la ligne. La couleur de la ligne a été allouée juste au moment où la couleur d'arrière-plan avait été allouée à l'étape précédente.

          La coordonnée y est donnée comme rand () * p car c'est la hauteur de notre bo?te et renvoie toujours une valeur inférieure à 50. Vous pouvez également utiliser Rand (0,50). Ils produiront la même plage de sortie.

          Captchas simples avec php et gd

          générer des points aléatoires.

          Des points aléatoires seront générés de la même manière que les lignes aléatoires. La fonction utilisée est imagessetPixel (). Cette fonction prend la valeur des coordonnées où le point sera placé dans la bo?te.

          <span>$line_color = imagecolorallocate($image, 64,64,64); 
          </span><span>for($i=0;$i<10;$i++) {
          </span>    <span>imageline($image,0,rand()%50,200,rand()%50,$line_color);
          </span><span>}</span>

          La coordonnée x est générée de manière aléatoire en utilisant Rand () * 0 car il s'agit de la largeur de notre bo?te et cela renverra toujours une valeur inférieure à 200. Vous pouvez également utiliser Rand (0 200). Ils produiront la même plage de sortie. La coordonnée y est générée comme dans l'étape des lignes.

          Captchas simples avec php et gd

          générer du texte aléatoire

          Nous pointerons au hasard vers une position dans la cha?ne (qui contient l'alphabet en bas et en haut) et l'attribuer à la variable $ Letter

          <span><span><?php
          </span></span><span><span>session_start();
          </span></span><span><span>?></span>
          </span>
              <span><span><span><title</span>></span>demo.php<span><span></title</span>></span>
          </span>    <span><span><span><body</span> <span>style<span>="<span>background-color:#ddd; </span>"</span></span>></span>
          </span>
              <span><span><?php
          </span></span><span>    <span>create_image();
          </span></span><span>    <span>display();
          </span></span><span>    <span>/***** definition of functions *****/
          </span></span><span>    <span>function display()
          </span></span><span>    <span>{
          </span></span><span>        <span>?></span>
          </span>
                  <span><span><span><div</span> <span>style<span>="<span>text-align:center;</span>"</span></span>></span>
          </span>            <span><span><span><h3</span>></span>TYPE THE TEXT YOU SEE IN THE IMAGE<span><span></h3</span>></span>
          </span>            <span><span><span><b</span>></span>This is just to check if you are a robot<span><span></b</span>></span>
          </span>
                      <span><span><span><div</span> <span>style<span>="<span>display:block;margin-bottom:20px;margin-top:20px;</span>"</span></span>></span>
          </span>                <span><span><span><img</span> src<span>="image.png"</span>></span>
          </span>            <span><span><span></div</span>></span>
          </span>            //div1 ends
                  <span><span><span></div</span>></span>                          //div2 ends
          </span>
              <span><span><?php
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>function  create_image()
          </span></span><span>    <span>{
          </span></span><span>        <span>$image = imagecreatetruecolor(200, 50);
          </span></span><span>        <span>imagepng($image, "image.png");
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>?></span>
          </span>    <span><span><span></body</span>></span>
          </span><span><span><?php
          </span></span><span><span>?></span></span>

          Lorsqu'il est mis à l'intérieur d'une boucle, il ressemble à ceci-

          <span>$background_color = imagecolorallocate($image, 255, 255, 255);  
          </span><span>imagefilledrectangle($image,0,0,200,50,$background_color);</span>

          Nous expliquerons les lignes

          <span>$line_color = imagecolorallocate($image, 64,64,64); 
          </span><span>for($i=0;$i<10;$i++) {
          </span>    <span>imageline($image,0,rand()%50,200,rand()%50,$line_color);
          </span><span>}</span>

          dans la section suivante.

          La fonction ImageString () écrit le texte dans notre image. Il a 6 arguments:

          1. Référence d'image.
          2. taille de police du texte (il peut être 5 au maximum).
          3. x-coordonnée (changeant proportionnellement pour chaque alphabet).
          4. y-coordonnée (a gardé la même, bien que nous puissions aussi changer cela au hasard).
          5. cha?ne réelle à écrire.
          6. Font-Color du texte.

          Vous pouvez également utiliser la fonction ImageTtFText () si vous souhaitez avoir une police plus grande et un style de police différent. Il faut 2 arguments supplémentaires pour le style d'angle et de police du texte.

          Le calcul de la coordonnée x est effectué par inspection. En gros, les lettres sont espacées d'environ 35 pixels (5 ($ i * 30)) où $ i = 0,1,2,3,4,5,6. En effet, si nous avions gardé cette valeur autour de 15 à 20 pix, il y aurait eu une possibilité que deux lettres se chevauchent. Si la valeur avait été supérieure à 40px, les lettres n'auraient pas intégré à la bo?te.

          Cela générera un texte CAPTCHA à 6 alphabet. Nous pouvons toujours créer plus d'aléatoire en modifiant les aspects qui ont été maintenus constants en raison de la simplicité, comme la couleur, les coordonnées y, etc.

          Le captcha final ressemblera à ceci

          Captchas simples avec php et gd

          Le texte écrit dans le captcha changera chaque fois que vous actualisez la page.
          Plus d'aléatoire peut être réalisé en créant des conceptions avec les pixels ou en modifiant la couleur ou la taille.

          valider

          C'est ici que la réponse de l'utilisateur est prise et après l'avoir traitée, il / elle re?oit une réponse. Au début, un formulaire simple est fabriqué avec une zone de texte d'entrée et un bouton de soumission. Il peut y avoir de nombreuses fa?ons de traiter un captcha conformément aux exigences des applications Web complexes. Mais en gardant les choses simples pour cet exemple, nous le traiterons sur la même page.

          Les deux lignes laissées inexpliquées dans les extraits de code précédents entrent en jeu maintenant:

          1. $ word. = $ Lettre; - L'opérateur de concaténation. est utilisé pour ajouter toutes les lettres individuelles les unes après les autres, générant le mot de 6 lettres.
          2. $ _ session ['captcha_string'] = $ word; Notre cha?ne CAPTCHA est stockée dans une variable de session qui sera utilisée à des fins de validation.

          Nous allons modifier la définition de l'affichage () pour ajouter une structure de forme.

          Deux boutons de soumission seront utilisés, l'un pour soumettre la cha?ne et une autre pour actualiser la page.

          Les lignes suivantes seront ajoutées entre les deux balises div de cl?ture (voir les commentaires dans la fonction d'affichage () précédente)

          <span><span><?php
          </span></span><span><span>session_start();
          </span></span><span><span>?></span>
          </span>
              <span><span><span><title</span>></span>demo.php<span><span></title</span>></span>
          </span>    <span><span><span><body</span> <span>style<span>="<span>background-color:#ddd; </span>"</span></span>></span>
          </span>
              <span><span><?php
          </span></span><span>    <span>create_image();
          </span></span><span>    <span>display();
          </span></span><span>    <span>/***** definition of functions *****/
          </span></span><span>    <span>function display()
          </span></span><span>    <span>{
          </span></span><span>        <span>?></span>
          </span>
                  <span><span><span><div</span> <span>style<span>="<span>text-align:center;</span>"</span></span>></span>
          </span>            <span><span><span><h3</span>></span>TYPE THE TEXT YOU SEE IN THE IMAGE<span><span></h3</span>></span>
          </span>            <span><span><span><b</span>></span>This is just to check if you are a robot<span><span></b</span>></span>
          </span>
                      <span><span><span><div</span> <span>style<span>="<span>display:block;margin-bottom:20px;margin-top:20px;</span>"</span></span>></span>
          </span>                <span><span><span><img</span> src<span>="image.png"</span>></span>
          </span>            <span><span><span></div</span>></span>
          </span>            //div1 ends
                  <span><span><span></div</span>></span>                          //div2 ends
          </span>
              <span><span><?php
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>function  create_image()
          </span></span><span>    <span>{
          </span></span><span>        <span>$image = imagecreatetruecolor(200, 50);
          </span></span><span>        <span>imagepng($image, "image.png");
          </span></span><span>    <span>}
          </span></span><span>
          </span><span>    <span>?></span>
          </span>    <span><span><span></body</span>></span>
          </span><span><span><?php
          </span></span><span><span>?></span></span>

          Avant de nous déplacer plus loin, nous devons savoir quand afficher et quand ne pas afficher la zone d'entrée. Il ne sera affiché que

          1. Si la page vient de se charger.
          2. Si la réponse de l'utilisateur était incorrecte.

          La première condition est remplie en utilisant un drapeau $ qui est défini sur ?1? chaque fois que le bouton Soumettre est cliqué. Initialement, il a été défini sur toute autre valeur. La deuxième condition est obtenue en vérifiant si la valeur stockée dans notre variable de session est la même que l'entrée utilisateur (voir le code ci-dessous).

          Pour y parvenir, nous remplacerons les lignes suivantes de notre étape de départ au début de l'article:

          <span>$background_color = imagecolorallocate($image, 255, 255, 255);  
          </span><span>imagefilledrectangle($image,0,0,200,50,$background_color);</span>

          avec:

          <span>$line_color = imagecolorallocate($image, 64,64,64); 
          </span><span>for($i=0;$i<10;$i++) {
          </span>    <span>imageline($image,0,rand()%50,200,rand()%50,$line_color);
          </span><span>}</span>

          Notez que les fonctions create_image () et affiche () sont appelées uniquement selon les 2 conditions discutées ci-dessus.

          Nous aurons besoin de la variable de session de la page précédente, de sorte que la session n'est pas détruite ici. La session sera automatiquement détruite une fois la fenêtre du navigateur fermé.

          le captcha ressemblera à ceci-

          Captchas simples avec php et gd

          Si l'entrée est incorrecte, seulement alors l'utilisateur sera à nouveau invité.

          Captchas simples avec php et gd

          Si l'entrée est correcte, l'utilisateur sera affiché un message.

          Captchas simples avec php et gd

          Il y a une mise en garde mineure - lorsque l'utilisateur appuie sur le bouton arrière, toute image déjà présente dans le cache du navigateur ne rechargera pas, tandis que la page le fait. Dans une demande postale, le bouton de retour du navigateur affichera une page "Document Expired", mais lorsque la demande est obtenue, l'image ne se régénère pas.

          La solution est simple - créant des noms uniques d'images à chaque fois, de sorte que le navigateur ne les trouve pas en cache. Nous allons ajouter une cha?ne unique renvoyée par la fonction time () intégrée au nom de l'image lors de la création et de l'écart dans le navigateur.

          Ajoutez cette ligne juste en dessous où vous avez commencé votre session:

          <span>$pixel_color = imagecolorallocate($image, 0,0,255);
          </span><span>for($i=0;$i<1000;$i++) {
          </span>    <span>imagesetpixel($image,rand()%200,rand()%50,$pixel_color);
          </span><span>}  </span>

          Remplacez la balise SRC IMG dans la fonction Display () par

          <span>$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
          </span><span>$len = strlen($letters);
          </span><span>$letter = $letters[rand(0, $len-1)];
          </span>
          <span>$text_color = imagecolorallocate($image, 0,0,0);</span>

          et la partie où nous avons créé l'image PNG dans la fonction create_image () sera également remplacée par

          <span>for ($i = 0; $i< 6;$i++) {
          </span>    <span>$letter = $letters[rand(0, $len-1)];
          </span>    <span>imagestring($image, 5,  5+($i*30), 20, $letter, $text_color);
          </span>    <span>$word.=$letter;
          </span><span>}
          </span><span>$_SESSION['captcha_string'] = $word;</span>

          Les images seront désormais appelées quelque chose comme Image39342015.png. Cette procédure créera des images autant de fois que la page est actualisée, ce qui peut gaspiller d'énormes quantités d'espace disque, nous nous assurerons donc qu'avant de créer une image, toutes les autres images de l'extension PNG sont supprimées. Ajoutez ce qui suit juste avant que la fonction ImagePng () ne soit appelée.

          <span>$word.=$letter;
          </span><span>$_SESSION['captcha_string'] = $word;   </span>

          Dans une application de production, assurez-vous simplement d'isoler le dossier où les images CAPTCHA sont stockées, sinon d'autres images utiles peuvent également être supprimées.

          Téléchargez le code complet ici.

          Conclusion

          Faire différents types de captchas en PHP est très facile. Cet article couvrait les trois choses de base utilisées pour créer un captcha standard - forme, distorsion et texte. Cet article était une preuve de concept, et le code présenté ici ne devrait pas être utilisé dans la production - d'autant plus que d'excellentes alternatives telles que RecaptCha existent, ce qui prend également en charge la production solide pour aider les personnes ayant des troubles auditifs. Nous espérons que vous avez trouvé cet article intéressant. Laissez vos commentaires et commentaires ci-dessous!

          Questions fréquemment posées (FAQ) sur les captchas simples avec PHP GD

          Comment puis-je personnaliser l'apparence de mon captcha?

          La personnalisation de l'apparence de votre captcha peut être effectuée en modifiant le code PHP. Vous pouvez modifier la police, la couleur, la taille et même l'arrière-plan du captcha. Par exemple, pour modifier la police, vous pouvez utiliser la fonction ImageTtFText () et spécifier le fichier de police dans les paramètres. Pour modifier la couleur, vous pouvez utiliser la fonction ImageColorAllocate () et spécifier les valeurs RVB pour la couleur souhaitée. N'oubliez pas que la personnalisation rend non seulement votre captcha plus esthétique mais aussi plus s?r contre les bots.

          Comment puis-je rendre mon captcha plus sécurisé?

          Il existe plusieurs fa?ons de rendre votre captcha plus sécurisé. Une fa?on consiste à utiliser un mélange de caractères alphanumériques, à la fois en haut et en minuscules. Cela augmente le nombre de combinaisons possibles, ce qui rend plus difficile pour les bots de deviner. Vous pouvez également augmenter la longueur du captcha. Une autre méthode consiste à ajouter du bruit, tel que des lignes ou des points, à l'image CAPTCHA. Cela peut être fait en utilisant les fonctions ImageLine () et ImageEllipse () dans Php.

          Pourquoi mon captcha ne s'affiche-t-il plusieurs raisons. Une raison courante est que la bibliothèque GD n'est pas installée ou activée dans votre installation PHP. Vous pouvez vérifier cela en utilisant la fonction Function_Exists (?GD_INFO?). S'il revient faux, alors GD n'est pas activé. Une autre raison pourrait être des erreurs dans votre code PHP. Assurez-vous de vérifier vos journaux d'erreur pour tous les indices.

          Comment puis-je implémenter une fonctionnalité CAPTCHA de rafra?chissement?

          La mise en ?uvre d'une fonctionnalité CAPTCHA de rafra?chissement peut être effectuée en utilisant AJAX. Vous devez créer une fonction JavaScript qui envoie une demande au serveur pour générer un nouveau captcha. Le serveur répond ensuite avec la nouvelle image CAPTCHA qui est ensuite mise à jour sur la page Web sans rechargement de page complète.

          Puis-je utiliser CAPTCHA sans bibliothèque GD?

          Alors que la bibliothèque GD est couramment utilisée pour Créer des captchas en php, ce n'est pas le seul moyen. Vous pouvez également utiliser d'autres bibliothèques comme ImageMagick ou même créer un captcha basé sur du texte. Cependant, ces méthodes peuvent ne pas fournir le même niveau de sécurité et de personnalisation que la bibliothèque GD.

          Comment puis-je ajouter CAPTCHA à mon formulaire de contact?

          L'ajout de captcha à votre formulaire de contact implique la modification du code HTML et PHP du formulaire. Dans le HTML, vous devrez ajouter une balise d'image pour le CAPTCHA et un champ de saisie pour que l'utilisateur puisse entrer le captcha. Dans le PHP, vous devrez générer le captcha et valider l'entrée de l'utilisateur.

          Pourquoi ma validation CAPTCHA ne fonctionne-t-elle pas? à plusieurs raisons. L'une des raisons courantes est que les variables de session ne sont pas définies ou récupérées correctement. Assurez-vous que Session_Start () est appelé avant que toute sortie ne soit envoyée au navigateur et que les variables de session sont utilisées correctement. Une autre raison pourrait être que l'entrée de l'utilisateur ne soit pas comparée correctement avec le captcha. Assurez-vous d'utiliser une comparaison insensible à la caisse si votre captcha comprend des caractères supérieurs et minuscules.

          Comment puis-je rendre mon captcha accessible aux utilisateurs visuellement malvoyants?

          Rendre votre captcha accessible visuellement visuellement? Les utilisateurs altérés peuvent être difficiles, mais il existe plusieurs méthodes. Une méthode consiste à fournir une option audio captcha. Cela implique la génération d'un fichier audio avec les personnages CAPTCHA exprimés à haute voix. Une autre méthode consiste à utiliser un captcha alternatif basé sur des questions, où l'utilisateur est posé une question simple qu'un bot aurait du mal à répondre.

          Les bots peuvent toujours contourner mon captcha?

          tandis que les captchas sont peut-être Con?us pour empêcher les robots, ils ne sont pas infaillibles. Les bots avancés peuvent utiliser l'OCR (reconnaissance des caractères optiques) pour lire les caractères CAPTCHA. Cependant, en rendant votre captcha plus complexe, comme utiliser un mélange de caractères, en ajoutant du bruit et en changeant régulièrement le captcha, vous pouvez rendre le captcha plus difficile pour les robots. ?

          captcha est une méthode courante pour empêcher le spam, mais ce n'est pas le seul moyen. D'autres méthodes incluent l'utilisation d'un pot de miel, qui est un champ de formulaire caché que les bots se rempliront, mais les humains ne le feront pas, vérifiant le comportement de l'utilisateur, comme le temps pris pour remplir le formulaire et l'utilisation d'un service comme Akismet, qui filtre Spam basé sur une base de données de spam connu.

          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!

          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

          Outils d'IA chauds

          Undress AI Tool

          Undress AI Tool

          Images de déshabillage gratuites

          Undresser.AI Undress

          Undresser.AI Undress

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

          AI Clothes Remover

          AI Clothes Remover

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

          Clothoff.io

          Clothoff.io

          Dissolvant de vêtements AI

          Video Face Swap

          Video Face Swap

          échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

          Outils chauds

          Bloc-notes++7.3.1

          Bloc-notes++7.3.1

          éditeur de code facile à utiliser et gratuit

          SublimeText3 version chinoise

          SublimeText3 version chinoise

          Version chinoise, très simple à utiliser

          Envoyer Studio 13.0.1

          Envoyer Studio 13.0.1

          Puissant environnement de développement intégré PHP

          Dreamweaver CS6

          Dreamweaver CS6

          Outils de développement Web visuel

          SublimeText3 version Mac

          SublimeText3 version Mac

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

          Comment mettre en ?uvre l'authentification et l'autorisation dans PHP? Comment mettre en ?uvre l'authentification et l'autorisation dans PHP? Jun 20, 2025 am 01:03 AM

          ToseCurelyHandleAuthentication andAuthorizationInPhp, suivitheSesteps: 1.AlwayShashPasswordSwithPassword_Hash () etverifyusingPassword_verify (), usePreparedStatementStopReventsQLendiject, andstoreSerDatain $ _SessionAfterLogin.2

          Comment pouvez-vous gérer les téléchargements de fichiers en toute sécurité dans PHP? Comment pouvez-vous gérer les téléchargements de fichiers en toute sécurité dans PHP? Jun 19, 2025 am 01:05 AM

          Pour gérer en toute sécurité les téléchargements de fichiers dans PHP, le noyau consiste à vérifier les types de fichiers, à renommer les fichiers et à restreindre les autorisations. 1. Utilisez finfo_file () pour vérifier le type de mime réel, et seuls des types spécifiques tels que l'image / jpeg sont autorisés; 2. Utilisez Uniqid () pour générer des noms de fichiers aléatoires et les stocker dans le répertoire racine non Web; 3. Limiter la taille du fichier via les formulaires PHP.ini et HTML et définir les autorisations de répertoire sur 0755; 4. Utilisez Clamav pour scanner les logiciels malveillants pour améliorer la sécurité. Ces étapes empêchent efficacement les vulnérabilités de sécurité et garantissent que le processus de téléchargement de fichiers est s?r et fiable.

          Quelles sont les différences entre == (comparaison lache) et === (comparaison stricte) en PHP? Quelles sont les différences entre == (comparaison lache) et === (comparaison stricte) en PHP? Jun 19, 2025 am 01:07 AM

          En PHP, la principale différence entre == et == est la rigueur de la vérification des types. == La conversion de type sera effectuée avant la comparaison, par exemple, 5 == "5" Renvoie True, et === Demande que la valeur et le type soient les mêmes avant que True sera renvoyé, par exemple, 5 === "5" Renvoie False. Dans les scénarios d'utilisation, === est plus sécurisé et doit être utilisé en premier, et == n'est utilisé que lorsque la conversion de type est requise.

          Comment effectuer des opérations arithmétiques en php (, -, *, /,%)? Comment effectuer des opérations arithmétiques en php (, -, *, /,%)? Jun 19, 2025 pm 05:13 PM

          Les méthodes d'utilisation des opérations mathématiques de base en PHP sont les suivantes: 1. Les signes d'addition prennent en charge les entiers et les nombres à virgule flottante, et peuvent également être utilisés pour les variables. Les numéros de cha?ne seront automatiquement convertis mais non recommandés en dépendances; 2. Les signes de soustraction utilisent - les signes, les variables sont les mêmes et la conversion de type est également applicable; 3. Les panneaux de multiplication utilisent * les panneaux, qui conviennent aux nombres et aux cha?nes similaires; 4. La division utilise / signes, qui doit éviter de diviser par zéro, et noter que le résultat peut être des nombres à virgule flottante; 5. Prendre les signes du module peut être utilisé pour juger des nombres impairs et uniformes, et lors du traitement des nombres négatifs, les signes restants sont cohérents avec le dividende. La clé pour utiliser correctement ces opérateurs est de s'assurer que les types de données sont clairs et que la situation limite est bien gérée.

          Comment pouvez-vous interagir avec les bases de données NoSQL (par exemple, MongoDB, redis) de PHP? Comment pouvez-vous interagir avec les bases de données NoSQL (par exemple, MongoDB, redis) de PHP? Jun 19, 2025 am 01:07 AM

          Oui, PHP peut interagir avec les bases de données NoSQL comme MongoDB et Redis à travers des extensions ou des bibliothèques spécifiques. Tout d'abord, utilisez le pilote MongoDBPHP (installé via PECL ou Composer) pour créer des instances clients et faire fonctionner des bases de données et des collections, en prenant en charge l'insertion, la requête, l'agrégation et d'autres opérations; Deuxièmement, utilisez la bibliothèque Predis ou l'extension PHPREDIS pour vous connecter à Redis, effectuer des paramètres et des acquisitions de valeur clé, et recommander PHPredis pour des scénarios à haute performance, tandis que Predis est pratique pour un déploiement rapide; Les deux conviennent aux environnements de production et sont bien documentés.

          Comment rester à jour avec les derniers développements PHP et meilleures pratiques? Comment rester à jour avec les derniers développements PHP et meilleures pratiques? Jun 23, 2025 am 12:56 AM

          TostayCurrentwithPhpDevelopments andBestPractices, suiventyewnewsources likephp.netandphpweekly, engagewithcommunitiesonforumums et conférences, keeptoolingupdated etgradualadoptnewfeatures, etreadorontruttetoopensourceprojects.

          Qu'est-ce que PHP et pourquoi est-il utilisé pour le développement Web? Qu'est-ce que PHP et pourquoi est-il utilisé pour le développement Web? Jun 23, 2025 am 12:55 AM

          PhpBecamepopularforwebDevelopmentDuetoitSeaseOflearning, Samoussentegration withhtml, widespreadhostingsupport, andalargecosystemysteclustingframeworkslikeLaravelandcmsplateformeslikewordpress.itexcelSinlingFormSubMissions, ManagetingSeSeSessions, interactif, interactif

          Comment définir le fuseau horaire PHP? Comment définir le fuseau horaire PHP? Jun 25, 2025 am 01:00 AM

          Tosetherighttimezoneinphp, usedate_default_timezone_set () Fonctionnellestartofyourscriptwithavalididentifiersuchas'america / new_york'.1.usedate_default_timezone_set () beforeanydate / timefunctions.20

          See all articles