使用php's include()将html代码分解为几个文件的简单有效的方法


Easy and efficient way of breaking up html code into several files and using php's include()

目前,对于像页眉、页脚或常见的侧边栏对象这样的东西,我创建了一个自定义的.php文件,并按照以下行做一些事情:

echo '
    <some><html><here>
';

,然后将其包含在我想要显示的页面上:

include('path/to/file');

唯一的问题是,有人可以把他们的浏览器指向我的.php文件,并自己查看html的一部分。这不是什么大事,但它看起来不专业,有点粗心。有更好的方法吗?

最简单的方法是将所有这些文件移出DocumentRoot/public目录并从那里包含它们。比如:

include '../pages/header.php';
// rest of the script
include '../pages/bottom.php';

无论如何,这就是这个目录的目的——只保存那些要直接访问的东西。

当然,在这之后的第一步是考虑只有一个index.php文件来过滤所有的请求(权限,过滤,重写等),并包含任何基于请求的必要内容(这被称为前端控制器,也有一些轻量级框架已经实现了它)。这里是一个起点:https://github.com/adrian-gheorghe/basic-website/blob/master/public/index.php

将包含的php文件放在一个单独的目录中,并使该目录从外部无法访问(例如在Apache中使用.htaccess)

必须限制对服务器配置中其他文件的访问。

WordPress几乎做了你目前正在做的事情:它将所有的主题文件存储在/wp-content/themes/THEMENAMEHERE/中,你可以直接访问那里的文件。这不是一个大问题,因为用户不能做任何有害的事情,但是如果您关心,您可以将文件存储在单独的目录中(正如其他答案所提到的),或者配置httpd.conf.htaccess来阻止对特定脚本的访问。