我应该如何使用PHP$_GET和变量来用其他文件中的内容填充模板页面


How should I use PHP $_GET and variables to fill my template page with content from other files?

我是PHP和web开发的新手,我正在努力找出如何用尽可能少的复制粘贴代码来设计我的网站。本质上,我希望每个页面都使用相同的布局、页眉菜单和页脚;每个页面之间的唯一区别是"contentcontainer"中的内容。这是我现在正在使用的简化版本:

<?php $content = htmlspecialchars($_GET["content_url"]);?>
<body>
    <div id="main_container">
        <?php require 'header.html';?>
        <div id="content_container">
            <?php include $content;?>
        </div>
        <?php require 'header.html';?>
    </div>
</body>

网站的所有"内容"都存储在页面(about.html、social.html等)中,这些页面应该以某种方式加载到index.php"template"页面的"content_container"div中。这样,就可以很容易地维护和更新网站的内容,而无需接触模板。在此之前,我曾尝试使用AJAX异步加载内容,但无法通过该方法直接链接到各个页面,因此使用PHP$_GET似乎是一个更好的选择。

我很清楚我想做什么,但我对web开发和PHP语法的不熟悉现在对我来说是一个障碍。那么,如何使用PHP$_GET用另一个文件中的内容填充页面呢编辑1:或者,我处理这个问题的方式是错误的吗?我应该怎么做?

编辑2:为了学习,我更喜欢看看如何使用PHP(如果可能的话,甚至是JS)来完成这类工作。我知道可能有很多好的模板库/框架,但如果可以的话,我想了解如何自己实现这些东西。

所以,如果我理解你发送的是一个带有GET变量的url,如下所示:http://www.yoursite.com/?content_url=http://www.yoursite.com/pages/about.html和您的计划是,您希望获取文件所在位置的url,然后将该文件内容包含到当前页面中。

我认为你误解了人们通常如何使用GET变量,我建议你不要按照目前的方式进行。这很糟糕,原因有几个。用Ajax加载所有内容也是非常糟糕的,因为Google将无法对这些内容进行索引。

现在回答:如果您仍然想使用$_GET将内容加载到页面中。我会这样做:

示例URL:http://www.yoursite.com/?page=about

PHP代码:

<?php
    //Check if the get variable "page" is set to "about", then load about.html
    if($_GET['page'] == "about"){
        $content = file_get_contents("http://www.yoursite.com/pages/about.html");
    }
?>

您可以在此处阅读有关file_get_contents的信息http://php.net/file_get_contents

请注意,这不是解决网站URL的"最佳"方法。这只是你如何实现你所要求的答案。如果你想要一个更高级的解决方案,你应该研究mod_rewrite和.htaccess.