ホームページ >PHPフレームワーク >ThinkPHP >ThinkPHP の空の操作と空のコントローラーの処理について

ThinkPHP の空の操作と空のコントローラーの処理について

藏色散人
藏色散人転載
2020-09-19 10:18:182432ブラウズ

次のチュートリアル コラムでは、ThinkPHP の空の操作と空のコントローラーの処理について紹介します。 ThinkPHP の空の操作、空のコントローラーの処理専門家が Web サイトを閲覧すると、Web サイトのエラー メッセージがハッカーに Web サイトを攻撃するための情報を提供します。たとえば、空のオペレーションと空のコントローラーの場合、Web サイトのバックエンドで使用されるフレームワークがハッカーに公開され、ハッカーはフレームワークの脆弱性に基づいて Web サイトを攻撃します。したがって、ハッカーに手がかりを残さずに、空のコントローラーと空の操作を処理する必要があります。

1. 操作処理なし

最初に効果を見てみましょう:私の場合、ファイル IndexController.class には hello がありません。 .php メソッドにアクセスしようとすると、次の情報が報告されます:

注: no-op の本質: オブジェクト (コントローラー) が存在しないメソッドを呼び出します

ThinkPHP に詳しい開発者にとっては、この Web サイトのバックエンドが ThinkPHP フレームワークを使用していることが簡単にわかります。では、これらの問題をブロックするにはどうすればよいでしょうか?今日はそれについて話します。

ThinkPHP の空の操作と空のコントローラーの処理について#解決策 1、コントローラーに __call($method,$argvs) メソッドを追加します

##このようにして、hello メソッドに再度アクセスすると、コントローラーの __call($method,$args) メソッドがデフォルトで呼び出されます。 ######しかし!多くのコントローラーがある場合、コントローラーごとに __call($method,$args) メソッドを記述する必要がありますか?明らかに無理です!したがって、継承を通じてこのメソッドをコントローラーの親クラスに書き込む必要があります。 Controller.class.php にアクセスすると、__call() メソッドが見つかります。TP がすでにそれを実行しているためです。彼の考えでは、コントローラーに _empty() というメソッドを定義したかどうかによって決まります。定義されている場合は、このメソッドを呼び出します。ThinkPHP の空の操作と空のコントローラーの処理について

共通コントローラーの親クラスの場所: ThinkPHP/Library/Think/Controller.class.php

ThinkPHP の空の操作と空のコントローラーの処理について

解決策 2

空のオペレーションの名前と同じ名前のテンプレートを作成すると、システムが自動的にそのテンプレートを呼び出します。

2. 空のコントローラーの処理

BeijingController.class.php ファイルがないため、エラーが報告されます。 !

TP フレームワークのソース コードを分析すると、次の解決策が得られます。

ThinkPHP の空の操作と空のコントローラーの処理について

したがって、空のコントローラーを定義する必要があります。存在しないコントローラーにアクセスすると、指定したエラーに従ってエラーが報告されます。

ThinkPHP の空の操作と空のコントローラーの処理について

さて、空のオペレーションや空のコントローラーの話はやめましょう O(∩_∩)O~~

以上がThinkPHP の空の操作と空のコントローラーの処理についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。