ホームページ > バックエンド開発 > PHPチュートリアル > PHPでカスタムキャプチャと連絡フォームを作成します

PHPでカスタムキャプチャと連絡フォームを作成します

William Shakespeare
リリース: 2025-03-14 11:06:10
オリジナル
119 人が閲覧しました

10年前に最初に公開されたこのチュートリアルは、ランダムなCaptchasを生成するための最新のコードで完全に更新されました。ディスカッションスレッドの多くのコメントは、時代遅れのコードを参照しています。

プロセスの自動化は、コンピューターの速度と精度を活用して、コーディングの重要な利点です。ただし、このパワーは、スパムやパスワードのクラッキングなどの悪意のあるアクティビティで誤用される可能性があります。このチュートリアルは、スパムアンチスパム技術に焦点を当てています。

連絡先フォームのあるWebサイトを検討してください。正当なユーザーにとって便利ですが、自動化されたスパムの提出に対して脆弱です。ボットは、フォーム、フォーラム、またはスパムリンクを使用したコメントセクションを洪水にすることができます。

解決策?ボットを人間と区別するテスト:PHPフォームと統合されたキャプチャ。伝統的なキャプチャは、画像内に歪んだテキストを提示します。人間はそれを読むことができますが、ボットは通常できません。これにより、元のCaptchaテキストに対するユーザー入力が検証されます。 Captchaは、「完全に自動化されたパブリックチューリングテストで、コンピューターと人間を引き離す」ことを表しています。

このチュートリアルでは、Captchaを連絡先フォームに作成および統合することを示しています。

キャプチャを作成します

PHP GDライブラリを使用します。以前のチュートリアルでは、GDのテキストと形状の描画機能について説明します。また、Captcha用のランダムな文字列も生成します。

ランダムな文字列を生成します

このコードはcaptcha.phpにあります。 generate_string()関数は、ランダム文字列を作成します。元のgenerate_string()関数は、より安全なrandom_int()に置き換えられています。

 
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

Captchaの背景を作成します

次に、5つのさまざまな色を使用して、Captcha画像の背景(200x50ピクセル)を生成します。

 
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ランダム$red$green$blue値がベースの色を決定します。ループは、 $colorsアレイに保存された暗い色合いを作成します。最も明るい色が背景を満たし、その後の長方形が複雑さを加えます。

キャプチャの背景画像の例

Captcha文字列をレンダリングします

最後に、ランダムな文字列を背景に描画します。文字の色、Y座標、および回転は、難易度を高めるためにランダム化されます。

 
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ダウンロードされたフォントは、文字のバリエーションを提供します。パディング(15ピクセル)が追加され、残りのスペースは文字間で均等に分割されます。

キャプチャ画像の例(背景とテキスト)

Captchaを連絡先フォームに統合します

次に、Captchaを連絡先フォームに統合しましょう(既存の連絡先フォームがあると仮定します)。セッションを使用して、Captchaテキストを保存および検証します。

完全なcaptcha.phpコード:

 
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

連絡先フォームの「メッセージの送信」ボタンの上にこのHTMLを追加します。

<div class="elem-group">
    <label for="captcha">Captchaテキストを入力してください</label>
    <img src="/static/imghw/default1.png" data-src="https://img.php.cn/" class="lazy" alt="PHPでカスタムキャプチャと連絡フォームを作成します">
    <i class="fas fa-redo refresh-captcha"></i>
</div>
ログイン後にコピー

このJavaScriptを追加して、Captchaをリフレッシュできるようにします。

 var refressbutton = document.queryselector( "。refresh-captcha");
refreshbutton.onclick = function(){
  document.QuerySelector( "。CAPTCHA-IMAGE")。src = 'captcha.php?' date.now();
};
ログイン後にコピー

CAPTCHAとの連絡先フォームの例

最後に、連絡先フォーム処理スクリプト( contact.php )を更新して、captchaを検証します。

 あなたは間違ったキャプチャに入りました。 ';
    }
} それ以外 {
    エコー '<p>何かがうまくいかなかった</p>';
}

?>
ログイン後にコピー

これにより、ユーザーの入力がセッションで保存されたCaptchaテキストと一致するかどうかを確認します。

結論

このチュートリアルは、カスタムPHP Captchaを作成し、連絡先フォームに統合し、更新ボタンでセキュリティとユーザーエクスペリエンスを向上させました。これは、数学の問題など、さまざまなCaptchaメソッドを使用するように適応できます。より高度な機能については、Codecanyonのプラグインを使用することを検討してください。

以上がPHPでカスタムキャプチャと連絡フォームを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート