5

私はphpスクリプトを持っていますが、ブラウザでページを表示している場合にのみこの特定のテキストが表示され、別のスクリプトに含まれないようにしたいと思います。

例えば

//foo.php
<?php
   if(!included){
      echo "You can only see this if this is the page you're viewing";
   }
?>

//bar.php
<?php
  include 'foo.php';
?>

さて、「bar.php」を表示すると、テキストは表示されないはずです。しかし、代わりにfoo.phpを開くと、表示されます。可能であれば..

4

5 に答える 5

9

それ自体は不可能ですが、たとえばWebサイトでphpページを公開している場合は、apacheを使用しているかどうかをexample.com/bar.php確認できます。$_SERVER['SCRIPT_FILENAME']

if (basename(__FILE__) != basename($_SERVER['SCRIPT_FILENAME'])) {
   //this is included
}
于 2012-12-12T19:29:11.197 に答える
3

bar.phpの場合:

<?php
    $included = true;
    include 'foo.php';
?>

foo.phpの場合:

if(!isset($included)){
      echo "You can only see this if this is the page you're viewing";
}
于 2012-12-12T19:29:23.790 に答える
1

「人々がインクルード'foo.php'を使用できるようにしたいと思います。これはクラスであり、彼らが持っているよりも多くのコードを使用する必要はありません。コードの大部分が欲しいです。クラスに参加すること。」

これが必要なので、class_exists関数をお勧めします。 http://php.net/manual/en/function.class-exists.php

そうすれば、クラスが定義されているかどうかを確認でき、ファイルが含まれているかどうかを確認する必要はありません。なぜなら、それが定義されていれば、そのファイルは確実に含まれているからです。

于 2012-12-12T19:33:27.557 に答える
1

http://php.net/manual/en/function.get-included-files.phpについて見る必要がありますarray get_included_files(void)

含まれているファイルのリストが表示されます。

于 2012-12-12T19:30:13.197 に答える
0

include_once()またはrequire_once()関数を使用することは常に良い習慣です。このようにして、ファイルが1回だけ含まれるようにします。

含めるページで定数を定義します。

 if(defined("ALREADY_LOADED")) {
     echo "this page was loaded already";
     die("ciao");
 }
  else {
     define("ALREADY_LOADED", 1);
 }

これで、このコントロールが必要な場合は、ファイルをロードする前に次のように定義するだけです。

 define("ALREADY_LOADED", 1);
于 2012-12-12T19:35:03.510 に答える