【问题标题】:How should I use PHP $_GET and variables to fill my template page with content from other files?我应该如何使用 PHP $_GET 和变量来用其他文件的内容填充我的模板页面?
【发布时间】:2025-11-27 07:05:02
【问题描述】:

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

<?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“模板”页面的“content_container”div 中。这样一来,网站内容的维护和更新就应该很容易,根本不需要接触模板。在此之前,我尝试使用 AJAX 异步加载内容,但我无法通过该方法直接链接到各个页面,因此使用 PHP $_GET 似乎是一个更好的选择。

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

编辑 2:为了学习,我更愿意看看这种事情是如何使用 PHP(或者甚至 JS,如果可能的话)完成的。我知道那里可能有很多好的模板库/框架,但如果可以的话,我想了解如何自己实现这些东西。

【问题讨论】:

  • 为什么要使用其他文件的内容?好吧,无论如何-> 您必须创建一个表单才能将 $_GET 变量发送到另一个页面。当您提交表单和输入字段时,这些将被发送到操作页面。只需在 google 中检查“HTML GET Forms”即可。
  • 您希望如何设置 GET 方法?通过表格或在整个页面中链接。指定 somesite.com/index.php?content_url=apple.html 将包括 apple.html。但这是一个安全风险,因为它可用于利用一些您可能不想显示的文件。
  • 我正在考虑通过 URL 传递它,就像那样。嗯..我完全可以看到这可能是一个安全风险。我可以做一些额外的验证来确保它是我的页面之一吗?还是我应该尝试通过其他方法在我的网站上填充内容? (我完全可能以错误的方式解决这个问题..)谢谢!

标签: javascript php html ajax syntax


【解决方案1】:

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

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

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

示例网址: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

请注意,这不是解决网站网址的“最佳”方式。这只是您如何实现您所要求的答案的答案。如果您想要更高级的解决方案,您应该查看 mod_rewrite 和 .htaccess。

【讨论】:

  • 太棒了!这看起来非常像我需要的那种东西。这看起来很适合我的目的,但我也会研究你建议的其他方法。谢谢你的帮助,马库斯。
  • 是的。像魅力一样工作!我只是通过 switch 语句运行了 $_GET 的结果,并使用“file_get_contents()”加载了适当的页面内容。比我想象的要简单得多,而且似乎也避免了安全隐患。再次感谢您的帮助!我想我现在对 PHP $_GET 有了更好的理解。
最近更新 更多