2013-04-22 9 views
11

PHPスクリプトが直接アクセスされるか、それとも含まれているかを調べる方法はありますか?PHPファイルの検索方法は、直接含まれているか、直接アクセスされていますか?

  1. ここには含まれていないと仮定して、セッション変数を設定しても問題は解決しません。私はそれがどこに含まれているか確認できません。それは20以上の場所かもしれません!
  2. PHPスクリプトで検出されるはずです。 (PHPの関数や変数を経由して)
+1

http://stackoverflow.com/questions/2397004/php-check-if-a-file-is-loaded-directly-instead-of-including –

+3

の可能複製(HTTP [あなた含み一覧表示] ://php.net/manual/en/function.get-included-files.php)と[ダイレクトアクセスの防止](http://stackoverflow.com/questions/409496/prevent-direct-access-to-a- php-include-file) –

+0

いいえ、それは重複していません、私の質問のポイント1を参照して、私はそれが含まれているかどうかを確認することはできません。それは20以上の場所かもしれません! – HPM

答えて

15
if(__FILE__ != $_SERVER['SCRIPT_FILENAME']) { 
    // we're in an include 
} 
3

使用しceejayozの答えが、自動的に実際のパスに解決されるため、__FILE__にシンボリックリンクのファイルとパスを使用したとき、私は悩みを持っています。だから、代わりにrealpath()の機能を$_SERVER['SCRIPT_FILENAME']に使用して、問題を解決するために両方のパスを実際のパスに解決してください。

if(__FILE__ != realpath($_SERVER['SCRIPT_FILENAME'])) { 
    // we're in an include 
} 
関連する問題