0

私は Web アプリを構築しており、ほとんどのページを構築するために多くのインクルード ファイルを使用しています。

例えば:

ページ profile.php には、about.php、timeline.php、photos.php が含まれています。

ここで、ユーザーがインクルード ファイルの 1 つに直接アクセスしようとすると、ユーザーを 404 ページに送りたいと考えています。これどうやってするの?

localhost/timeline.php にアクセスすると、ユーザーは 404 にリダイレクトされます。

私の考えでは、ファイルが直接開かれているかどうかを確認するインクルード ファイルに IF ステートメントを書き込むことでした。それは可能ですか?

4

3 に答える 3

2

速くて汚い:

内で定数を定義しprofile.php、インクルード ファイル内に存在するかどうかを確認します。

if (!defined("SOME_CONSTANT")) {
   //Redirect or send a 404 header
}

遅くても良い

Web コンテキストでスタンドアロン ファイルとして意味のないファイルを Web ルート (通常はwwwまたはhtdocsフォルダー) から取得します。

于 2013-06-27T13:39:13.513 に答える
0

単純な if ステートメントを使用できます

if(!defined("SECURE")) {
    header("HTTP/1.0 404 Not Found", true, 404);
    include("404_Not_Found.html"); //include the 404 page
    exit;
}

含まれているページで、安全な定数を定義していることを確認してください。

于 2013-06-27T13:39:29.860 に答える
0

フロントコントローラーで定数を定義し、それが他のファイルで設定されているかどうかを確認します。

上部のフロントコントローラーで:

define("IN_APP");

次に、処理の前に他のページで:

if(defined("IN_APP")) { die(header('HTTP/1.0 404 Not Found', true, 404)); }

ただし、他のファイルをサブディレクトリに配置し、次のコードを含む .htaccess ファイルを使用してアクセスを拒否することをお勧めします。

Order deny,allow
deny from all

これにより、php はファイルを含めることができますが、Web からのアクセスはブロックされます。

于 2013-06-27T13:41:40.760 に答える