因此,在文件first.php
中,我会将文件original.php
与include_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
}
提前感谢您的想法和帮助!
答案 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.php和http://ch2.php.net/manual/en/function.define.php