【发布时间】:2012-07-24 17:00:17
【问题描述】:
我想在每个页面上使用相同的页眉和页脚,但使用 PHP 的内容不同。最好的方法是什么?
我知道这两个流行的,但不知道选择哪一个(或者其他一些):
1。在每个页面上包含页眉和页脚
进入每个页面,如 contact.php、about.php 等。您必须在页面顶部包含页眉和在底部包含页脚。然后内容也介于两者之间。例如 contact.php 看起来像这样:
<?php include("header.php"); ?>
Lorem ipsum dolor sit amet...
<?php include("footer.php"); ?>
当你想做请求时,你只需输入example.com/contact.php
2。 index.php?page=xyz
在 contact.php、about.php 等页面中,您只存储实际内容。然后你有 index.php 和一些参数(例如页面),你可以通过它指定要包含的内容。例如,contact.php 文件如下所示:
Lorem ipsum dolor sit amet...
而index.php文件是这样的(这是简化版):
<html>
<head>
<title>Lorem ipsum</title>
</head>
<body>
<?php include(some_parser_function($_GET["page"].".php")); ?>
</body>
</html>
现在,当您请求 index.php?page=contact 时,它会显示 index.php 以及在开始和结束 body 标记之间来自 contact.php 的内容。
第一种方法在我看来有点不切实际,因为您必须将包含函数写入每个页面。在第二种方法中,如果你想拥有像 example.com/contact.php 或只是 example.com/contact 这样的好 URL,你需要做 apache mod_rewriting...
这些(和其他)方法中哪一种更好/更受欢迎,为什么?
谢谢。
【问题讨论】:
-
好吧,从性能的角度来看,#2 包含 1 个包含,而包含 2 个,但我不知道这在宏伟的计划中真的很重要。当我第一次开始学习 PHP 时,我曾经广泛使用 #2,在设计中添加新页面非常方便,但如果我想做一些不同的事情,那么我必须编辑模板并单独维护它。到底用哪一种,就看你的需求了。
-
我也是从 #2 开始的,但现在我认为 #1 看起来更好。如果我有几页,我会使用 #1,但我拥有的页面越多,我必须输入的包含越多...:)
-
一般规则,您不应该信任用户输入。第一种方法是要走的路!
-
我可以通过忽略所有用户输入来做到这一点,除了那些包含带有 mod_rewrite 和正则表达式的字符/数字的用户输入...