Prestashop 的每个文件夹中的 index.php 文件是什么?

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,我不明白这些变量如何作用于其他文件。

示例:我有一个新模块,我只想为登录的客户显示文本 "You are logged!",我可以使用 {if} $logged {/if} 变量来实现。

可能是因为它位于同一个父文件夹或其他文件夹中?

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

如果您要使用 PrestaShop,则需要了解 OOP 和 MVC 原则。

I don't understand why in each folder I find the same index.php file.

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

In particular, I don't understand why is declared the "Location: ../".

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

出于安全原因,每个开发人员都应该将index.php个文件添加到模块、主题或另一个目录和子目录的每个目录中。要自动执行此任务,有一个特殊的 命令行程序 。例如这个:Tool against directory traversal security vulnerability (this one on GitHub).