什么是index.php文件位于我的prestshop的每个文件夹


What are the index.php files located in each folder of my Prestashop?

我不明白为什么在每个文件夹中我发现相同的index.php文件。

它们是这样的:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Location: ../");
exit;

特别是,我不明白为什么它被声明为"Location: ../"

我使用Prestashop,我不明白变量如何在其他文件上工作。

示例:我有一个新模块,我想显示文本"您已登录!"只有登录的客户,我可以使用{if} $logged {/if}变量来做到这一点。

可能是因为它在同一个父文件夹或其他什么?

  1. Index.php在每个文件夹中,以防止直接访问文件夹。例如,如果您输入浏览器www.myshopurl.com/modules,您将被重定向回主页,因为您不应该访问或查看此文件夹的内容。
  2. init()方法中的FrontController类设置了一个智能变量$logged。每个从这个类继承的控制器(除了backoffice部分的每个控制器)都会调用这个方法,这就是为什么它在每个首页模板中都可用。

如果你要使用PrestaShop,你需要学习OOP和MVC原则。

我不明白为什么在每个文件夹中我发现相同的index.php文件。

这是防止目录被"黑客"观察的方法。没有这个文件,有人可以观察每个目录来查看它的内容,即文件和子目录。其中一些文件可以用于查看和执行。因此,此方法旨在针对目录观察安全漏洞,并且它不仅在PrestaShop中使用。

特别是,我不明白为什么声明为"Location: ../"。

因此,index.php文件应该在每个目录中,以便递归地重定向到前一个目录,而不会到达根目录(即,用于显示站点的主页)。但是这个方法还有另外的解决方案,例如:show error 404 - a page not found

出于安全原因,每个开发人员都应该将index.php文件添加到模块、主题或其他目录和子目录的每个目录中。要自动执行此任务,有一个特殊的命令行程序。针对目录遍历安全漏洞的工具(这个在GitHub上)。