PHP を使用して応答性の高い検証コード イメージを生成する方法
インターネットの急速な発展に伴い、人々は情報セキュリティにますます注目を集めています。悪意のある攻撃者が自動スクリプトを通じて悪意のある操作を実行するのを防ぐために、Web サイトではユーザーの信頼性を確認する手段として検証コードが使用されることがよくあります。 CAPTCHA 画像は、ランダムな画像と数字を生成する CAPTCHA の一般的な形式であり、ユーザーは画像上の文字に基づいて入力して身元を確認する必要があります。
この記事では、PHP を使用してレスポンシブ検証コード イメージを生成する方法を紹介し、具体的なコード例を示します。
検証コード画像を生成するには、まず画像のサイズとフォントを決定する必要があります。一般に、検証コード画像のサイズは適度で十分に鮮明である必要がありますが、ページ領域を占有しすぎないようにする必要があります。フォントを選択するときは、はっきりしていて簡単に識別できるフォントを選択する必要があります。
PHP の乱数関数を使用してランダムな文字を生成し、生成された文字を変数に保存します。
$characters = 'abcdefghijklmnopqrstuvwxyz0123456789'; $randomString = ''; $length = 6; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, strlen($characters) - 1)]; }
上記のコードでは、文字と数字を含む文字セットが使用されています。ループを通じて 6 文字をランダムに生成し、文字列に連結します。
空の確認コード画像を作成し、背景と境界線の色を設定します。
$image = imagecreatetruecolor(120, 40); $backgroundColor = imagecolorallocate($image, 255, 255, 255); $borderColor = imagecolorallocate($image, 0, 0, 0); imagefilledrectangle($image, 0, 0, 120, 40, $backgroundColor); imagerectangle($image, 0, 0, 120, 40, $borderColor);
上記のコードでは、imagecreatetruecolor()
関数を使用して 120x40 ピクセル サイズの空白の画像を作成し、imagecolorallocate()
関数を使用して画像の背景と境界線の色。次に、imagefilledrectangle()
と imagerectangle()
を使用して、それぞれ背景と境界線を塗りつぶします。
検証コードの難易度を高めるために、検証コード画像に干渉線とランダム文字を追加できます。
for ($i = 0; $i < 5; $i++) { $lineColor = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255)); imageline($image, rand(0, 120), rand(0, 40), rand(0, 120), rand(0, 40), $lineColor); } $fontColor = imagecolorallocate($image, 0, 0, 0); imagettftext($image, 20, 0, 10, 30, $fontColor, 'path/to/font.ttf', $randomString);
上記のコードでは、複数回のループにより検証コード画像上にランダムな干渉線が生成されます。次に、imagettftext()
関数を使用して、検証コード イメージ上にランダムな文字を描画します。
検証コード イメージを生成した後、それをユーザーに出力し、使用後に関連リソースを破棄する必要があります。
header('Content-type: image/png'); imagepng($image); imagedestroy($image);
上記のコードでは、header('Content-type: image/png')
を設定して出力コンテンツ タイプを画像に設定し、imagepng()## を使用します。 # この関数は検証コードのイメージをクライアントに出力します。最後に、
imagedestroy() 関数を使用して画像リソースを破棄します。
以上がPHP を使用してレスポンシブな検証コード イメージを生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。