我不明白为什么在每个文件夹中我找到相同的index.php文件。
他们看起来像这样:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Location: ../");
exit;
特别是,我不明白为什么宣布为"Location: ../"
。
我使用Prestashop,我不明白变量如何在其他文件上运行。
示例:我有一个新模块,我想显示文本"您已登录!"仅适用于已登录的客户,我可以使用{if} $logged {/if}
变量执行此操作。
也许是因为它在同一个父文件夹或其他东西上?
答案 0 :(得分:4)
FrontController
方法中的init()
类设置了一个智能变量$logged
。从该类继承的每个控制器(除了后台部分之外的每个控制器)都调用此方法,这就是为什么它在每个首页模板中都可用。如果您要使用PrestaShop,您需要了解OOP和MVC原则。
答案 1 :(得分:0)
我不明白为什么在每个文件夹中都找到相同的index.php文件。
这是防止“黑客”查看目录的方法。如果没有此文件,则有人可以观察每个目录以查看其内容,即文件和子目录。其中一些文件可以访问以进行查看和执行。 因此,此方法是针对观察到安全漏洞的目录,它不仅在PrestaShop中使用。
特别是,我不明白为什么将其声明为“位置:../”。
因此,index.php
文件应位于每个目录中,以便递归地重定向到上一个目录,而不会到达根目录(即,用于显示站点的主页) )。
但是这种方法还有另一种解决方案,例如:show error 404
-找不到页面。
出于安全原因,每个开发人员都应将index.php
文件添加到模块,主题或其他目录和子目录的每个目录中。为了自动执行此任务,有一个特殊的命令行程序。例如,这个:Tool against directory traversal security vulnerability(这个在GitHub上)。