PHP および GD ライブラリを使用してシャドウ効果のある検証コード イメージを生成するためのベスト プラクティス

PHPz
リリース: 2023-07-12 09:58:01
オリジナル
1182 人が閲覧しました

PHP および GD ライブラリを使用してシャドウ効果のある検証コード イメージを生成するためのベスト プラクティス

検証コード (キャプチャ) は、ユーザーがロボットではなく本物のユーザーであるかどうかを判断するために使用される一般的なセキュリティ対策です。 CAPTCHA を生成する一般的な方法は、ランダムな文字を含む画像を作成し、ユーザーに画像からそれらの文字を識別して入力するように依頼することです。検証コードのセキュリティを高めるために、生成された検証コード画像に影効果などの視覚効果を追加できます。この記事では、PHP および GD ライブラリを使用してシャドウ効果のある検証コード イメージを生成するためのベスト プラクティスを紹介します。

GD ライブラリは、PHP 拡張モジュールを通じて使用できる強力なグラフィック処理ライブラリです。まず、GD ライブラリがサーバーにインストールされていることを確認する必要があります。 Linux システムを使用している場合は、次のコマンドを使用して GD ライブラリをインストールできます。

sudo apt-get install php-gd
ログイン後にコピー

Windows システムを使用している場合は、php.ini ファイル内の次の行のコメントを解除して、GD を有効にできます。拡張子:

;extension=gd
ログイン後にコピー

インストールが完了したら、影付きの検証コード イメージの生成を開始できます。

まず、PHP ファイルを作成し、ファイルの先頭に GD ライブラリを導入する必要があります。

<?php
header('Content-Type: image/png');
$width = 200;
$height = 60;
$image = imagecreate($width, $height);
ログイン後にコピー

次に、検証コード イメージの生成に一般的に使用されるいくつかの変数を定義できます。文字セット、検証コードの長さなど:

$charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
$codeLength = 4;
$font = "path/to/font.ttf";
$fontSize = 30;
ログイン後にコピー

上記のコードでは、大文字、小文字、数字を含む文字セットを使用しており、検証コードの長さは 4 文字です。必要に応じて、文字セットと検証コードの長さをカスタマイズできます。同時にカスタムフォントファイル(.ttf形式)とフォントサイズを設定します。

次に、キャプチャ文字列と背景色を生成して画像に追加します。

$code = "";
for ($i = 0; $i < $codeLength; $i++) {
    $char = $charset[rand(0, strlen($charset) - 1)];
    $code .= $char;
    $color = imagecolorallocate($image, rand(0, 60), rand(0, 60), rand(0, 60));
    imagettftext($image, $fontSize, rand(-10, 10), 10 + $i * ($fontSize + 10), $height / 2 + $fontSize / 2, $color, $font, $char);
}
ログイン後にコピー

上記のコードでは、ループを通じてランダムなキャプチャ文字列を生成し、# を使用します。 ##imagecolorallocate() 関数を使用して、ランダムな背景色を作成します。次に、imagettftext() 関数を使用して、キャプチャ文字を画像に追加します。 imagettftext() 関数のパラメータを調整することで、認証コード文字の位置、角度、色を変更できます。

これで、検証コード画像に影効果を追加できます。まず、影レイヤーと同じサイズの画像を作成する必要があります。

$shadowImage = imagecreate($width, $height);
ログイン後にコピー

次に、元の画像の上に影レイヤーを描画できます。

imagecopy() 関数を使用して元の画像を影レイヤーにコピーし、コピーする前に元の画像をオフセットすることで影効果を作成できます。

$offsetX = 2;
$offsetY = 2;
imagecopy($shadowImage, $image, $offsetX, $offsetY, 0, 0, $width, $height);
ログイン後にコピー

上記のコードでは、次のようにコピーします。元の画像を影の画像にコピーし、コピー時に元の画像に対して位置をオフセット、つまり x 方向と y 方向に右下に 2 ピクセル移動します。

最後に、元のイメージとシャドウ レイヤーをマージし、最終的な検証コード イメージを出力します。

imagecopymerge($image, $shadowImage, 0, 0, 0, 0, $width, $height, 50);
imagepng($image);
imagedestroy($image);
imagedestroy($shadowImage);
ログイン後にコピー

上記のコードでは、

imagecopymerge() 関数を使用します。結合時に 50% の透明度を使用して、シャドウ レイヤが元の画像に結合されます。次に、imagepng() 関数を使用して、最終的な検証コード イメージを出力します。最後に、imagedestroy() 関数を呼び出してメモリを解放し、元の画像とシャドウ レイヤを破棄します。

完全な検証コード生成コードは次のとおりです:

<?php
header('Content-Type: image/png');
$width = 200;
$height = 60;
$image = imagecreate($width, $height);

$charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
$codeLength = 4;
$font = "path/to/font.ttf";
$fontSize = 30;

$code = "";
for ($i = 0; $i < $codeLength; $i++) {
    $char = $charset[rand(0, strlen($charset) - 1)];
    $code .= $char;
    $color = imagecolorallocate($image, rand(0, 60), rand(0, 60), rand(0, 60));
    imagettftext($image, $fontSize, rand(-10, 10), 10 + $i * ($fontSize + 10), $height / 2 + $fontSize / 2, $color, $font, $char);
}

$shadowImage = imagecreate($width, $height);
$offsetX = 2;
$offsetY = 2;
imagecopy($shadowImage, $image, $offsetX, $offsetY, 0, 0, $width, $height);

imagecopymerge($image, $shadowImage, 0, 0, 0, 0, $width, $height, 50);
imagepng($image);
imagedestroy($image);
imagedestroy($shadowImage);
?>
ログイン後にコピー
上記のコードを使用すると、シャドウ効果のある検証コード画像を生成できます。上記のコードを PHP ファイルとして保存し、検証コード イメージを生成する必要があるファイルをインポートして出力できます。ユーザーがPHPファイルにアクセスすると、認証コードの画像が直接出力されます。

要約すると、PHP と GD ライブラリを使用してシャドウ効果のある検証コード イメージを生成するには、次の手順が必要です。

    GD ライブラリをインストールします。
  1. PHP ファイルを作成し、GD ライブラリを導入します。
  2. 文字セット、検証コードの長さ、フォント ファイル、フォント サイズなど、検証コード イメージの生成に一般的に使用される変数を定義します。
  3. 指定された幅と高さの画像を作成します。
  4. ランダムなキャプチャ文字列を生成し、画像に追加します。
  5. 同じサイズの影レイヤー画像を作成し、元の画像を影レイヤーにコピーして位置をオフセットします。
  6. 元の画像と影レイヤーを結合して影効果を追加します。
  7. 最終検証コード画像を出力し、メモリを破壊します。
この記事が、PHP および GD ライブラリを使用してシャドウ効果のある検証コード イメージを生成し、検証コード関数に高いセキュリティを提供する方法を理解するのに役立つことを願っています。

以上がPHP および GD ライブラリを使用してシャドウ効果のある検証コード イメージを生成するためのベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!