我是PHP的新手,我很可能使用了错误的方法,因为我不习惯像PHP程序员一样思考。
我有一些文件包含其他文件作为依赖项,如果$_POST
包含某些值,这些文件需要具有全局代码,类似这样的
if (isset($_POST["SomeValue"]))
{
/* code goes here */
}
所有文件都将包含此代码部分,每个部分当然都包含自己的代码。
问题在于,由于文件可以包含在这些文件中的另一个中,因此我描述的代码部分在每个包含的文件中执行,即使我发布了多个AJAX并明确使用我想要的脚本的URL发布到。
我尝试使用$_SERVER
数组来尝试猜测哪个脚本用于发布请求,即使它工作正常,因为它是正确的脚本,它对于每个包含的文件都是相同的脚本。
问题是:
$_POST
包含所需值时执行的代码?注意:使用python脚本生成文件,python脚本本身使用ac库扫描数据库中的表和约束,c库是我的以及python脚本,它们工作得很好,如果有单个文件的修复,显然只需要对python脚本执行。
我告诉读者(潜在的回答者),因为我认为这表明我不需要一个适用于已经存在的文件的解决方案,因为它们可以重新使用 - 生成。
答案 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();