PHP 開発者として、私たちは ThinkPHP フレームワークを使用することが多く、検証コードは Web サイトのセキュリティ保護にとって重要なレベルですが、ThinkPHP3.2.3 フレームワークを使用すると、検証コードが表示されないという問題が発生することがあります。このことは私たちを非常に混亂させました。では、どうすれば解決できるでしょうか?
まず、検証コード生成のプロセスを理解しましょう。 ThinkPHP では、検証コードはイメージを作成することによって実裝され、ThinkPHP はデフォルトで GD ライブラリを使用してイメージを生成します。簡単に言うと、干渉線、干渉點、ランダムな文字を含む畫像を生成することで認証コードを生成します。その後、認証コードが表示されない場合は、イメージの生成に失敗していることが考えられます。
この問題に対応して、確認コードが表示されない問題を解決するには、次の手順を試してください。
ステップ 1: セッションが開いているかどうかを確認する
まず、セッションが開いているかどうかを確認する必要があります。認証コードの生成には認証コードの値を保存するためにセッションを使用する必要があるため、セッションがオンになっていないと認証コードが正常に生成されません。
config.php でセッションの開始ステータスを確認します。config.php ファイルを開き、次のコードを戻り配列に追加します:
'session_auto_start'?=>?true,
このコードにより、プログラムは自動的に開始されます。起動セッションがすでに有効になっている場合、通常の使用には影響しません。
ステップ 2: GD ライブラリが利用可能かどうかを確認する
次に、ThinkPHP は検証コードの生成にデフォルトで GD ライブラリを使用するため、GD ライブラリがインストールされているかどうかを確認する必要があります。 GDライブラリがインストールされていない、または使用できない場合、検証コードが正常に生成されません。
GD ライブラリがインストールされているかどうかを確認するには、php.ini ファイルと 3 つのモジュールすべてで gd2 モジュールが解凍されているかどうかを確認できます。extension=php_gd2.dll;extension=php_mbstring.dll;extension=php_exif .dll が解凍されています。
php.ini ファイルで次の 2 行の設(shè)定を見つけます:
extension=php_gd2.dll;
extension=php_mbstring.dll;
セミコロン; がその前にない場合は、GD ライブラリが正しくインストールされていることを意味します。
ステップ 3: 検証コード生成ディレクトリが書き込み可能かどうかを確認する
検証コードを生成すると、生成された畫像をサーバーに保存する必要があるため、検証コード生成ディレクトリは書き込み可能です。生成ディレクトリに権限がない場合、または存在しない場合、検証コードは正常に生成されません。
次のコードを config.php ファイルに追加して、検証コード生成ディレクトリを構(gòu)成できます:
'captcha'??=>array( ????????'fontSize'?=>?30,?????????//驗證碼字體大小 ????????'length'???=>?4,??????????//驗證碼位數(shù) ????????'useCurve'?=>?false,??????//是否畫混淆曲線 ????????'useNoise'?=>?false,??????//是否添加雜點 ????????'fontttf'??=>?'5.ttf',????//驗證碼字體,不設(shè)置隨機獲取 ????????'bg'???????=>?array(243,?251,?254),?//背景顏色 ????????'reset'????=>?true????????//驗證成功后是否重置 ????),
この配列では、検証コードの長さ、描畫するかどうかをカスタマイズできます?;焱€、ノイズを加えるかどうか、フォントファイルのパスなど。また、検証コード生成ディレクトリの名前をカスタマイズすることもできます。このディレクトリは書き込み可能でなければなりません。
たとえば、検証コード生成ディレクトリが Application/Runtime/Cache/ ディレクトリに設(shè)定されている場合、そのディレクトリが書き込み可能であることを確認する必要があります。そうしないと、検証コードは表示されません。
ステップ 4: 検証コードを URL モードに変更してみる
上記のステップで問題が見つからない場合は、ThinkPHP が提供する URL モードを使用して検証コードを生成してみることができます。コード。このモードでは、HTML5 キャンバス タグを使用します。これにより、動的な検証コードが生成され、ロボット攻撃やブルート フォース クラッキングをより適切に防ぐことができます。
次のコードを config.php ファイルに追加して、検証コードを生成するための URL パターンを設(shè)定できます:
'captcha'????=>?true,
これにより、以下に示すデフォルトの URL アドレスが生成されます:
<img src="__APP__/Public/verify/" onclick="this.src='__APP__/Public/verify/'+Math.random()">
ここでの __APP__ はシステムによって提供される変數(shù)で、現(xiàn)在のアプリケーションのルート ディレクトリを示します。verify は検証コードを生成するコントローラー メソッドの名前です。
この方法では、ブラウザのキャッシュの問題が発生し、ページが肥大化する可能性があります。したがって、ニッチな JavaScript コードを使用して、検証コードを生成する際にブラウザーのキャッシュをクリアして、この問題を解決することもできます。
HTML ページでは、次のように記述できます:
<img src="__APP__/Public/verify/" onclick="this.src='__APP__/Public/verify/'+Math.random()">
JavaScript では、次のように記述できます:
$(function(){ ????$('#verify_img').click(function(){ ????????var?timenow?=?new?Date().getTime(); ????????$(this).attr('src','/Home/Public/verify/'?+?timenow); ????}); });
この JavaScript コードは、アクセスするたびに検証コードを生成します。クリック 畫像を表示すると、タイムスタンプが動的に生成されて URL の一部となり、検証コードにアクセスするたびに新しい URL アドレスが使用されるようになり、ブラウザのキャッシュの問題が効果的に回避されます。
概要
上記の一般的な解決策を通じて、ThinkPHP3.2.3 検証コードが表示されない問題を効果的に解決できます。実際の開発プロジェクトでは、プログラムの正常な動作を確保し、ユーザーのプライバシーとデータのセキュリティをより適切に保護するために、これらの仕様に従う必要もあります。同時に、セキュリティ問題に常に注意を払い、Web サイトへの攻撃を防ぎ、Web サイトのセキュリティを保護するための新しいテクノロジーの學(xué)習(xí)と探索を継続する必要があります。
以上がthinkphp3.2.3の検証コードが表示されない場合はどうすればよいですか?の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)