ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP6を使用して検証コード機能を実装する方法

ThinkPHP6を使用して検証コード機能を実装する方法

WBOY
WBOYオリジナル
2023-06-21 17:48:353204ブラウズ

Web サイトやアプリケーションのログイン、登録、パスワード取得などのログイン認証システムでは、確認コード機能が一般的なユーザー確認方法になっています。検証コード機能は、悪意のある攻撃やロボット攻撃を効果的に防止し、ユーザーデータとシステムのセキュリティを保護します。この記事では、ThinkPHP6 フレームワークを使用して検証コード機能を実装する方法を紹介します。

1. ThinkPHP6 検証コード関数の概要

ThinkPHP6 フレームワークの検証コード関数は、thinkcaptchaCaptcha クラスを使用して実装できます。このクラスでは、検証コードの長さ、フォント、フォントサイズ、干渉線の種類、干渉点の種類などを設定するための多くのオプションが提供されます。これらのオプションを使用すると、特定のビジネス シナリオのニーズに合わせて独自の検証コードをカスタマイズできます。

2. 実装手順

  1. ThinkPHP6 フレームワークのインストール

ローカル環境で PHP 環境を構成した後、composer を使用して ThinkPHP6 をインストールできます。フレームワーク。コマンド ラインで次のコマンドを入力します。

composer create-project topthink/think myproject

これにより、myproject という名前のプロジェクト ディレクトリが作成され、プロジェクトに必要なすべての依存関係が自動的にインストールされ、初期化されます。

  1. 検証コード メソッドの作成

ThinkPHP6 フレームワークでは、コントローラーで検証コード メソッドを定義できます。たとえば、Index コントローラーで verify メソッドを作成できます。このメソッドは、検証コードの長さを指定するパラメータを受け取ることができます。コードは次のとおりです:

namespace appindexcontroller;

use thinkcaptchaCaptcha;

class Index
{
    public function verify($length = 4)
    {
        $captcha = new Captcha([
            'length'    =>  $length,
            'useNoise'  =>  true,
            'fontSize'  =>  30,
            'useCurve'  =>  false,
        ]);
        return $captcha->entry();
    }
}

上記のコードでは、Captcha クラスを使用して検証コードを生成します。検証コードの長さ、干渉線または干渉点を使用するかどうかなどを指定するために、いくつかのパラメータを渡します。

  1. 確認コードの表示

上記のコントローラー コードでは、$captcha->entry() メソッドを使用して確認コードを表示します。 。このメソッドは画像を生成し、ブラウザ上に直接出力します。

テンプレートまたはビュー ファイルに img 要素を作成し、その src 属性を手順 2 で作成した検証コード メソッドの URL に設定すると、検証コードをフロントエンドに表示できます。ページ。コードは次のとおりです。

<img src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" />

上記のコードでは、url 関数を使用して検証コード画像の URL を生成し、長さを 4 に設定します。画像をクリックすると、検証コード画像が表示されます。検証コードを更新するためにリロードされます。

  1. 検証検証コード

PHP のセッション メカニズムを使用して、フォーム データを送信するときにユーザーが入力した検証コードを取得し、生成された検証コードと比較できます。比較して確認コードが正しいかどうかを確認します。コードは次のとおりです。

namespace appindexcontroller;

use thinkcaptchaCaptcha;

class Index
{
    public function verify($length = 4)
    {
        $captcha = new Captcha([
            'length'    =>  $length,
            'useNoise'  =>  true,
            'fontSize'  =>  30,
            'useCurve'  =>  false,
        ]);
        return $captcha->entry();
    }
    
    public function check()
    {
        $code = input('post.captcha');
        if(captcha_check($code)){
            // 验证码正确
        }else{
            // 验证码错误
        }
    }
}

上記のコードでは、ユーザーが入力した確認コードを検証するためのチェック メソッドを定義します。 captcha_check() 関数を使用して、ユーザーが入力した検証コードと生成された検証コードが等しいかどうかを比較します。

  1. 認証コード更新機能

ユーザーが認証コードを誤って入力した場合に、ユーザーが認証コードを通過できるように、認証コードを更新する機能を提供する必要がある場合があります。検証が速くなります。この機能は、ページを更新するか、検証コード画像の URL を変更するだけで実現できます。

フロントエンド ページで、検証コード画像の要素に更新ボタンを追加します。このボタンをクリックすると、検証コード画像が再読み込みされ、検証コードが更新されます。コードは次のとおりです。

<img id="captcha" src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" />
<button onclick="document.getElementById('captcha').src='{:url('index/verify', ['length'=>4])}?' + Math.random(); return false;">刷新验证码</button>

上記のコードでは、JavaScript コードを使用して検証コード イメージの src 属性を変更し、Math.random() 関数をパラメーターとして url 関数に渡します。このようにして、更新するたびに、検証コードをリロードするための新しい URL が生成されます。

  1. 完全なサンプル コード

上記のコード スニペットは十分に完成していない可能性があります。以下は、ThinkPHP6 を使用して検証コード関数を実装した完全なコードです。

namespace appindexcontroller;

use thinkcaptchaCaptcha;

class Index
{
    // 验证码函数
    public function verify($length = 4)
    {
        $captcha = new Captcha([
            'length'    =>  $length,
            'useNoise'  =>  true,
            'fontSize'  =>  30,
            'useCurve'  =>  false,
        ]);
        return $captcha->entry();
    }
    
    // 验证码校验函数
    public function check()
    {
        $code = input('post.captcha');
        if(captcha_check($code)){
            // 验证码正确
        }else{
            // 验证码错误
        }
    }
}
<!-- 登录表单页面 -->
<form method="post" action="{:url('index/check')}">
    <div>
        <label>用户名</label>
        <input type="text" name="username" />
    </div>
    <div>
        <label>密码</label>
        <input type="password" name="password" />
    </div>
    <div>
        <label>验证码</label>
        <img id="captcha" src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" /><br/>
        <input type="text" name="captcha" />
        <a href="#" onclick="document.getElementById('captcha').src='{:url('index/verify', ['length'=>4])}?' + Math.random(); return false;">刷新验证码</a>
    </div>
    <button type="submit">登录</button>
</form>

上記は、ThinkPHP6 を使用して検証コード機能を実装するプロセス全体です。 Web アプリケーションまたは Web サイトを開発している場合、CAPTCHA 機能を使用すると、システムのセキュリティが向上し、悪意のある攻撃からユーザー データを保護できます。

以上がThinkPHP6を使用して検証コード機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。