是否可以检测何时包含php文件?

时间:2013-01-12 20:50:32

标签: php

因此,在文件first.php中,我会将文件original.phpinclude_once包含在一起。

当我尝试调用original.php内的函数并且如果没有用户会话则没有加载该文件时,会出现问题。

基本上我包含文件original.php,其中很少有函数我稍后在first.php中调用,但由于我在original.php中设置的限制,这些函数无法访问,但现在我想将规则添加到original.php以允许first.php或包含original.php的任何其他PHP文件的此类请求...

我想知道在这种情况下我该怎么办?或者我可以简单地将一些if子句添加到original.php,例如:

if($fileIncluded == 'yes')
{
   // do not check if user session exist etc.
}
else
{
   // check for user session
}

提前感谢您的想法和帮助!

5 个答案:

答案 0 :(得分:4)

您可以在文件中设置一个常量,如下所示:

original.php

define('ORIGINAL_INCLUDED', TRUE);

然后在first.php中检查常量是否存在:

if (defined('ORIGINAL_INCLUDED'))
{
    // do not check if user session exist etc.
}
else
{
    // check for user session
}

get_included_files()不同,当脚本包含脚本时,这将起作用。 get_included_files()仅返回主脚本中包含的文件,但不返回子脚本中包含的脚本。

original.php

if ('original.php' == basename(__FILE__))
{
    // original.php directly accessed
}
else
{
    // original.php included instead
}

答案 1 :(得分:2)

PHP提供了 get_included_files 功能,在这种情况下似乎可以正常工作。

if in_array('file.php', get_included_files()) {
    /* ... */
}

答案 2 :(得分:1)

好吧,我是PHP新手,但我会做

$add_file = require(file.php);

然后再做

if($add_file) {echo "file is aded";} else {echo "file is not added";}

答案 3 :(得分:1)

您可以使用函数get_included_files()或设置如下变量:

  // includedfile.php
 $variable = true;

 //index.php
 include 'includedfile.php';

 if(isset($variable)) {
     // file included
 } else {
     // not included
 }

答案 4 :(得分:1)

您还可以定义一个常量,并检查它是否稍后定义。使用 define 定义的函数。我认为这比使用普通变量更好。

Php doc:http://ch2.php.net/manual/en/function.defined.phphttp://ch2.php.net/manual/en/function.define.php