thinkphpのデフォルトの検証コードを変更する方法

PHPz
リリース: 2023-04-13 18:51:32
オリジナル
1089 人が閲覧しました

thinkphp は、Web アプリケーション開発用の人気のある PHP フレームワークです。 thinkphp フレームワークを使用する場合、システムのセキュリティを強化するために検証コードが必要になることがよくあります。 thinkphp のデフォルトの検証コード スタイルとイメージは、特定のアプリケーション シナリオには適していない可能性があるため、変更する必要があります。この記事では、thinkphpのデフォルトの検証コードを変更する方法を紹介します。

1. 検証コード コントローラーを見つける

thinkphp フレームワークでは、組み込みコントローラーによって検証コードが生成され、出力されます。このコントローラーのソース コードは、thinkphp フレームワークのライブラリ ファイル ディレクトリにあります。一般的なパスは、thinkphp/library/think/captcha/Controller.php です。

2. 検証コード コントローラーをコピーします

デフォルトの検証コード コントローラーの変更によって発生するシステム更新中のエラーを回避するには、デフォルトの検証コード コントローラーを次の場所にコピーする必要があります。アプリケーションディレクトリ。ディレクトリ内。

具体的な手順は次のとおりです。

  1. 新しいディレクトリを作成します (例: \application\extra\captcha
  2. コントローラーの Controller.php をここにコピーします)ディレクトリ。
  3. Controller.php の名前空間を次のように変更します: namespace app\extra\captcha;

3. 検証コード コントローラーを変更します

次に、変更できます。検証コードコントローラは、検証コードの生成および出力方法を変更します。

  1. 出力メソッドを変更する

検証コードのデフォルトの出力メソッドは gif 形式で画像を返すことですが、出力メソッドを変更して他のスタイルを実装することもできます。確認コードの。例えば、検証コードをSVG形式の画像として出力することができる。

検証コードの出力方法を次のように変更します。

public function show()
{
    $config =    [
        'expire'   =>  3,   //验证码过期时间(s)
        'length'   =>  4,   //验证码长度
        'imageH'   =>  60,   //验证码高度
        'fontSize' =>  20,  //验证码字体大小(px)
        'useCurve' =>  false,  //是否画混淆曲线
        'useNoise' =>  false,  //是否添加杂点
        'bg'       =>  [255, 255, 255], //背景颜色
    ];
    $captcha = new Captcha($config);
    $captcha->codeSet = '0123456789';//只用数字作为验证码
  
    // 输出svg格式的图片
    echo $captcha->entry('svg'); 
}
ログイン後にコピー
  1. 検証コードの生成方法を変更します

thinkphp のデフォルトの検証コード生成方法は、ランダムに生成することです。数字や文字など、さまざまなニーズに合わせて生成方法を変更することもできます。たとえば、漢字の検証コードを生成できます。

検証コード生成メソッドを次のように変更します (中国語の検証コード生成を例にします):

public function show()
{
    //引入新字体文件(这里以方正胖头鱼体为例,字体文件需要自己上传)
    $ttf_file = __DIR__ .'/fzpty.ttf';
    $codeSet = '玩家参与游戏,从而培养了自己 的游戏能力'; //验证码文字内容
  
    $config =    [
        'expire'  =>  3,   //验证码过期时间(s)
        'length'  =>  4,   //验证码长度
        'useZh'   => true, //使用中文验证码
        'fontttf' =>  $ttf_file, //指定ttf字体文件
        'imageH'  =>  60,   //验证码高度
        'fontSize' =>  20,  //验证码字体大小(px)
        'useCurve' =>  false,  //是否画混淆曲线
        'useNoise' =>  false,  //是否添加杂点
        'bg'       =>  [255, 255, 255], //背景颜色
    ];
    $captcha = new Captcha($config);
    $captcha->codeSet = $codeSet;//设置验证码文字内容
  
    // 输出svg格式的图片
    echo $captcha->entry('svg'); 
}
ログイン後にコピー

4. 検証コード設定ファイルを変更します

thinkphp 検証コード コントローラー構成ファイル内のパラメータによって、検証コードがどのように生成および出力されるかが決まります。したがって、検証コードを変更する目的を達成するために構成ファイルを変更することもできます。

具体的な手順は次のとおりです。

  1. フレームワークのデフォルトの検証コード構成ファイルを独自のアプリケーション ディレクトリにコピーします

thinkphp フレームワークの検証コードを開きます設定ファイル config.php をアプリケーション ディレクトリの下の config ディレクトリにコピーし、名前を captcha.php に変更します。

  1. 検証コード構成の変更

captcha.php で検証コードの関連構成パラメーターを変更できます。たとえば、検証コードの長さ、有効期限、フォント サイズ、その他のパラメータを変更できます。

return [
    'useNoise'    => false, // 是否添加杂点
    'useCurve'    => false, // 是否画混淆曲线
    'fontSize'    => 25,    // 验证码字体大小
    'expire'      => 1800,  // 验证码过期时间(s)
    'length'      => 4,     // 验证码长度
    'fontttf'     => '',    //验证码字体文件路径
    'bg'          => [255, 255, 255], // 验证码背景颜色,如果设置为数组则表示渐变色
];
ログイン後にコピー

5. まとめ

上記の手順により、thinkphp のデフォルトの検証コードを変更できます。カスタマイズを実現するには、定義されたスタイルと検証コードのコンテンツを使用します。検証コード コントローラーと構成ファイルを変更する場合は、バージョン更新後に上書きされないように、コピーしたファイルをアプリケーション ディレクトリに配置する必要があることに注意してください。

以上がthinkphpのデフォルトの検証コードを変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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