如何知道脚本是否包含在另一个脚本中

时间:2015-03-16 23:12:12

标签: php post include

我是PHP的新手,我很可能使用了错误的方法,因为我不习惯像PHP程序员一样思考。

我有一些文件包含其他文件作为依赖项,如果$_POST包含某些值,这些文件需要具有全局代码,类似这样的

if (isset($_POST["SomeValue"]))
 {
    /* code goes here */
 }

所有文件都将包含此代码部分,每个部分当然都包含自己的代码。

问题在于,由于文件可以包含在这些文件中的另一个中,因此我描述的代码部分在每个包含的文件中执行,即使我发布了多个AJAX并明确使用我想要的脚本的URL发布到。

我尝试使用$_SERVER数组来尝试猜测哪个脚本用于发布请求,即使它工作正常,因为它是正确的脚本,它对于每个包含的文件都是相同的脚本。

问题是:

  • 有没有办法知道文件是否包含在另一个文件中,以便我可以测试它并跳过仅在$_POST包含所需值时执行的代码?

注意:使用python脚本生成文件,python脚本本身使用ac库扫描数据库中的表和约束,c库是我的以及python脚本,它们工作得很好,如果有单个文件的修复,显然只需要对python脚本执行。

我告诉读者(潜在的回答者),因为我认为这表明我不需要一个适用于已经存在的文件的解决方案,因为它们可以重新使用 - 生成。

2 个答案:

答案 0 :(得分:1)

从它的声音中你可以对你的代码结构做一些改进,以完全避免这个问题。但是,给定一个简单的标志变量信息应该可以做到这一点:

if (!isset($postCodeExecuted) && isset($_POST["SomeValue"]))
{
    /* code goes here */
    $postCodeExecuted = true;
}

此变量将在全局命名空间中设置,因此它可以在任何地方使用。

答案 1 :(得分:0)

我通过这样做解决了这个问题

$caller = str_replace($_SERVER["DOCUMENT_ROOT"], "", __FILE__);
if ($_SERVER["REQUEST_METHOD"] === "POST" and $caller === $_SERVER["PHP_SELF"])
    performThisAction();