當前位置: 首頁> 最新文章列表> 如何結合imagecreatetruecolor 和imagettftext 製作動態驗證碼?詳細步驟介紹

如何結合imagecreatetruecolor 和imagettftext 製作動態驗證碼?詳細步驟介紹

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 " ; // 步驟2:設置背景色 echo "為驗證碼設置一個隨機背景顏色或者固定顏色。

" ; echo "
\$bgColor = imagecolorallocate(\$image, 255, 255, 255); // 白色背景imagefilledrectangle(\$image, 0, 0, \$width, \$height, \$bgColor);
"
;
// 步驟3:生成隨機驗證碼字符串 echo "

步驟3:生成一串隨機字符作為驗證碼內容。

"
; echo "
\$chars = &#39;ABCDEFGHJKLMNPQRSTUVWXYZ23456789&#39;;
\$captchaText = &#39;&#39;;
for (\$i = 0; \$i < 5; \$i++) {
    \$captchaText .= \$chars[mt_rand(0, strlen(\$chars) - 1)];
}
"
;
// 步驟4:寫入文字到圖像 echo "

步驟4:使用imagettftext將文字寫入圖像,可以設置字體、大小和旋轉角度來增加驗證碼的難度。

"
; echo "
\$fontFile = &#39;path/to/your/font.ttf&#39;; // TTF字體路徑for (\$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]);
}
"
;
// 步驟5:增加干擾元素 echo "

步驟5:為了提高安全性,可以添加干擾線或點。

"
; echo "
// 添加干擾線for (\$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);
}

// 添加干擾點for (\$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);
}
"
;
// 步驟6:輸出圖像並釋放資源 echo "

步驟6:輸出圖像到瀏覽器,並釋放圖像資源。

"
; echo "
header(&#39;Content-Type: image/png&#39;);
imagepng(\$image);
imagedestroy(\$image);
"
;
echo "

通過以上步驟,我們就可以生成一個帶有乾擾線和隨機旋轉文字的動態驗證碼,提高表單的安全性。

"
; ?>