3

所以在文件中first.php我将包含original.php文件include_once

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

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

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

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

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

4

5 回答 5

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
}
于 2013-01-12T21:04:30.587 回答
2

PHP 提供了一个get_included_files函数,在这种情况下似乎可以工作。

if in_array('file.php', get_included_files()) {
    /* ... */
}
于 2013-01-12T20:56:38.807 回答
1

好吧,我是 PHP 新手,但我愿意

$add_file = require(file.php);

然后做

if($add_file) {echo "file is aded";} else {echo "file is not added";}
于 2013-01-12T20:52:41.860 回答
1

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

  // includedfile.php
 $variable = true;

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

 if(isset($variable)) {
     // file included
 } else {
     // not included
 }
于 2013-01-12T20:56:15.113 回答
1

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

PHP 文档:http ://ch2.php.net/manual/en/function.defined.php和http://ch2.php.net/manual/en/function.define.php

于 2013-01-12T21:06:33.340 回答