【问题标题】:How should be a dynamic website structured?动态网站应该如何构建?
【发布时间】:2016-10-06 14:28:20
【问题描述】:

我已经用 PHP 编写了自己的 CMS。这很简单,但它不允许我做一些事情,比如从动态页面重定向 header()
这是它的结构(非常简化):

<?php
$db = new PDO...
try {
    //getting page info from database (by $_GET['id'])
    //and put results into $pageInfo
    $stmt->prepare
//.. catch etc...
?>
<!doctype html>
<html>
<head><title><?=$pageInfo['title'];?></title></head>
<body>
<?php
//this file below cannot contain a php redirect, because headers are already sent
include($pageInfo['content_path']);
?>
</body>
</html>

有一个页面是动态的,可以通过改变get参数id的值来显示其他页面。
包含的内容通常包含 PHP 脚本。

我浏览了互联网,但我不知道如何解决这个问题。
我可以创建一个header.html 和一个footer.html 并将它们包含在每个页面中吗?但是,如果我在包含内容之前包含头文件,它不会发送标题吗?怎么样?

如果这个问题看起来很愚蠢,我真的很抱歉,但我不知道该怎么做。我没有人教我,所以我必须自学,但有些东西我不知道在哪里找。

提前致谢。

【问题讨论】:

  • 不能在输出开始时发送标头,那时为时已晚。在您的脚本中包含其他 PHP 文件很好,根本不是问题
  • 尝试在你的代码开头添加@ob_start()
  • 您在寻找明显偏离主题的意见。没有一种“正确的方法”来构建网站。只有意见。
  • 这和 JavaScript 有什么关系?
  • 内容输出应始终发生在脚本的最后。输出内容时,您应该已经知道您不需要重定向或类似的东西。在输出部分中包含静态 html 代码应该没问题,但是所有 php 功能都应该包含在脚本的顶部。如果不是绝对需要,我不鼓励使用输出缓冲,因为它会掩盖脚本的操作,并使其更难被其他人调试和修改。

标签: php html mysql content-management-system


【解决方案1】:

首选的方法是将应用程序分成几个部分,一部分执行代码(控制器或核心),另一部分显示某些内容(视图或模板)。

例如在 MVC(模型/视图/控制器)中,您的单个页面将只是一个调用控制器的调度程序,控制器执行 PHP 代码,并使用第二部分模型获取一些数据,最后调用模板来显示数据。

在您的示例中,您可以首先为每个调用包含两个文件,一个仅包含 PHP 代码并获取所有数据,然后一个包含带有变量的 html 模板,并且只需要非常简单的代码显示数据。然后您可以在 php 部分(控制器)中进行重定向并退出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    相关资源
    最近更新 更多