【发布时间】:2012-03-09 22:53:14
【问题描述】:
这可能是一个没有答案的问题,但是......
在经典的 ASP 中,我曾经在每个页面的顶部都有一个很棒的包含文件。它不仅具有站点上每个页面的页面顶部的基本 html 模板……它还具有关键变量,例如 dbase 连接字符串、有用的函数和各种变量,如果更改这些变量将传播到整个站点。我只需要将它包含在网站每个页面的顶部,它就可以给我统一的外观和访问各种内容的权限。最好的部分... 在顶部包含文件中发送 html 后,ASP 让我在下面进行重定向,例如,在成功登录、表单提交或用户的其他操作时。
现在我正在学习 PHP(仍然是菜鸟)。一旦 html 被发送,因为 header.php 失败,似乎没有简单的方法来进行重定向。并且您希望在每个页面上出现的某些内容(例如 session_start())必须位于任何 html 之前。因此,我可以在每个页面的顶部放置一个无 html 的包含,其中包含常用函数、字符串和调用,如 session_start 开头。但是,如果我想根据以下某些条件(即成功登录)进行重定向,似乎没有简单的方法可以为顶部保留漂亮的 html 模板。如果不是重定向问题,我会将代码放在 html 之前并将其全部放入顶级包含文件中。
有没有一种最佳做法可以让会话在每个页面的第一行开始,并方便使用其他代码,使用通用的 html 模板并仍然保留执行重定向的能力。
否则,如果重定向始终必须在任何 html 发送之前,则 html 不能作为单个文件包含在站点顶部,但必须插入到代码下方以及每个页面上的任何重定向...
感谢经验丰富的 PHP 专家对最佳实践的任何建议。
【问题讨论】:
-
听起来您的网站已经到了将大量演示代码 (HTML) 与业务逻辑 (PHP) 混合在一起的地步。虽然您的问题肯定可以轻松解决(尽管如果没有看到您的实际代码我们无法帮助您),但您应该考虑将业务逻辑分成有组织的类,并且只在“视图”或“模板”文件中包含 HTML。这称为separation of concerns,是一种非常常见的最佳实践。