現在の位置: ホーム> 最新記事一覧> 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:背景色を設定します エコー 検証コードのランダムな背景色または固定色を設定します。

;エコー
\ $ bgcolor = imageColorAllocate(\ $ image、255、255、255); //白い背景imagefilledRectangle(\ $ image、0、0、\ $ width、\ $ height、\ $ bgcolor);
"
;
//ステップ3:ランダム検証コード文字列を生成する エコー

ステップ3:検証コードコンテンツとしてランダム文字の文字列を生成します。

;エコー
\ $ chars = &#39;abcdefghjklmnpqrstuvwxyz23456789&#39;;
\ $ captchatext = &#39;&#39;;
for(\ $ i = 0; \ $ i <5; \ $ i ++){
    \ $ captchatext。= \ $ chars [mt_rand(0、strlen(\ $ chars)-1)];
}
"
;
//ステップ4:画像にテキストを書きます エコー

ステップ4: imagettftextを使用してテキストを画像に書き込みます。フォント、サイズ、回転角を設定して、検証コードの難易度を高めることができます。

エコー
\ $ fontfile = &#39;path/to/your/font.ttf&#39;; // ttfフォントパス(\ $ i = 0; \ $ i <strlen(\ $ captchatext); \ $ i ++){
    \ $ fontsize = 20;
    \ $ angle = mt_rand(-15、15);
    \ $ x = 10 + \ $ i * 20;
    \ $ y = 30;
    \ $ textcolor = migmecolorallocate(\ $ image、mt_rand(0、150)、mt_rand(0、150)、mt_rand(0、150));
    imagettftftext(\ $ image、\ $ fontsize、\ $ angle、\ $ x、\ $ y、\ $ textcolor、\ $ fontfile、\ $ captchatext [\ $ i]);
}
"
;
//ステップ5:干渉要素を追加します エコー

ステップ5:セキュリティを改善するには、干渉線またはポイントを追加します。

;エコー
//(\ $ 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);
}

//(\ $ 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:画像を出力してリソースをリリースします エコー

ステップ6:画像をブラウザに出力し、画像リソースをリリースします。

;エコー
ヘッダー( &#39;Content-Type:Image/PNG&#39;);
ImagePng(\ $ image);
Imagedestroy(\ $ image);
"
;
エコー

上記の手順を通じて、干渉線とランダムに回転したテキストを備えた動的検証コードを生成して、フォームのセキュリティを改善できます。

?>