Position actuelle: Accueil> Derniers articles> Comment créer des codes de vérification dynamique en combinaison avec ImageCreateTrueColor et ImageTettFtext? Introduction des étapes détaillées

Comment créer des codes de vérification dynamique en combinaison avec ImageCreateTrueColor et ImageTettFtext? Introduction des étapes détaillées

gitbox 2025-09-02

<span><span><span class="hljs-meta"><?php</span></span><span> </span><span><span class="hljs-comment">// 前置无关内容</span></span><span> </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"欢迎来到我的PHP练习项目!<br>"</span></span><span>; </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"今天我们将探索一些有趣的图像处理技巧。<br>"</span></span><span>; </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"希望你喜欢本教程。<br>"</span></span><span>; </span><span><span class="hljs-meta">?></span></span><span> <hr> </span><span><span class="hljs-meta"><?php</span></span><span> </span><span><span class="hljs-comment">// 正文开始</span></span><span> </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h2>如何结合 imagecreatetruecolor 和 imagettftext 制作动态验证码?详细步骤介绍</h2>"</span></span><span>; </span><span><span class="hljs-comment">// 步骤 1:创建画布</span></span><span> </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p><strong>步骤 1:</strong>首先我们需要创建一个画布,用于生成验证码图像。这里我们使用 <code>imagecreatetruecolor "; // Étape 2: Définissez la couleur d'arrière-plan écho " Définissez une couleur d'arrière-plan aléatoire ou une couleur fixe pour le code de vérification.

" ; echo "
\ $ bgColor = ImageColorAllocate (\ $ Image, 255, 255, 255); // fond blanc imageFilDectangle (\ $ image, 0, 0, \ $ width, \ $ height, \ $ bgColor);
"
;
// Étape 3: générer une chaîne de code de vérification aléatoire écho "

Étape 3: générer une chaîne de caractères aléatoires comme contenu de code de vérification.

"
; écho "
\ $ chars = &#39;abcdefghjklmnpqrstuvwxyz23456789&#39;;
\ $ captchatext = &#39;&#39;;
pour (\ $ i = 0; \ $ i <5; \ $ i ++) {
    \ $ captchatext. = \ $ chars [mt_rand (0, strlen (\ $ chars) - 1)];
}
"
;
// Étape 4: Écrivez du texte à l'image écho "

Étape 4: Utilisez ImagettfText pour écrire du texte sur l'image. Vous pouvez définir la police, la taille et l'angle de rotation pour augmenter la difficulté du code de vérification.

"
; écho "
\ $ fontfile = &#39;path / to / your / font.ttf&#39;; // Path de police ttf pour (\ $ i = 0; \ $ i <strlen (\ $ captchatext); \ $ i ++) {
    \ $ FontSize = 20;
    \ $ angle = mt_rand (-15, 15);
    \ $ x = 10 + \ $ i * 20;
    \ $ y = 30;
    \ $ textColor = ImageColorAllocate (\ $ image, mt_rand (0, 150), mt_rand (0, 150), mt_rand (0, 150));
    ImageTtfText (\ $ image, \ $ FonTSize, \ $ angle, \ $ x, \ $ y, \ $ textColor, \ $ fontfile, \ $ captchatext [\ $ i]);
}
"
;
// Étape 5: ajouter des éléments d'interférence écho "

Étape 5: pour améliorer la sécurité, ajoutez des lignes ou des points d'interférence.

"
; écho "
// Ajouter une ligne d&#39;interférence pour (\ $ i = 0; \ $ i <5; \ $ i ++) {
    \ $ lineColor = ImageColorAllocate (\ $ image, mt_rand (100 255), mt_rand (100 255), mt_rand (100 255));
    Imageline (\ $ image, mt_rand (0, \ $ width), mt_rand (0, \ $ height), mt_rand (0, \ $ width), mt_rand (0, \ $ height), \ $ lineColor);
}

// Ajouter un point d&#39;interférence pour (\ $ i = 0; \ $ i <100; \ $ i ++) {
    \ $ dotColor = ImageColorAllocate (\ $ image, mt_rand (0,255), mt_rand (0,255), mt_rand (0 255));
    ImageSetPixel (\ $ image, mt_rand (0, \ $ width), mt_rand (0, \ $ height), \ $ dotColor);
}
"
;
// Étape 6: Sortie de l'image et relâchez la ressource écho "

ÉTAPE 6: Sortez l'image vers le navigateur et libérez les ressources d'image.

"
; écho "
En-tête (&#39;Content-Type: image / png&#39;);
ImagePng (\ $ image);
ImagedStroy (\ $ image);
"
;
Echo "

Grâce aux étapes ci-dessus, nous pouvons générer un code de vérification dynamique avec des lignes d'interférence et un texte tourné au hasard pour améliorer la sécurité du formulaire.

"
; ?>