Php 动态网站应该如何构建?

Php 动态网站应该如何构建?,php,html,mysql,content-management-system,Php,Html,Mysql,Content Management System,我已经用PHP编写了自己的CMS。这很简单,但它不允许我做一些事情,比如从动态页面用header()进行重定向。 以下是其结构(非常简化): 有一个页面是动态的,可以通过更改get参数id的值来显示其他页面。 包含的内容通常包含PHP脚本 我浏览了互联网,但不知道如何解决这个问题。 我可以创建一个header.html和一个footer.html并将它们包含到每个页面中吗?但是如果在包含内容之前包含头文件,它不发送头文件吗?怎么做 如果这个问题看起来很愚蠢,我真的很抱歉,但我不知道怎么做。我

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


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

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

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


提前感谢。

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

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


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

当输出开始时,您无法发送头,此时为时已晚。在脚本中包含其他PHP文件是很好的,一点问题也没有。试着在代码开头添加@ob_start()。你是在征求意见,这显然是离题的。没有一个“正确的方法”来建立一个网站。只有观点。这和JavaScript有什么关系?内容输出应该总是在脚本的最后一个部分发生。输出内容时,您应该已经知道不需要重定向或类似的操作。在输出部分包含静态html代码应该可以,但是所有php功能都应该包含在脚本的顶部。如果不是绝对需要的话,我不鼓励使用输出缓冲,因为它会掩盖脚本的操作,并使其他人调试和修改变得更加困难。
<?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>