我想制作我的主页,没有框架,如果我只是将我的设计拆分为index.php,那么它是header.php / footer.php,然后只是将它们包含在每一页上?
答案 0 :(得分:5)
是的,您可以将index.php拆分为header.php / footer.php,然后将它们包含在每个页面上。 请注意,您的页面可以不是静态HTML而是PHP脚本,以显示带有一个脚本的多个页面 我建议也没有像
那样的普通结构include 'header.php';
//do some stuff
include 'footer.php';
但另一种结构,更有用:
//do some stuff, retrieve all data.
include 'header.php';
include 'page.php'; //include page template
include 'footer.php';
答案 1 :(得分:2)
我建议你使用一个框架。大多数框架(如果不是全部)都有简单的模板系统,因此您不必重复代码。
答案 2 :(得分:1)
在您网站的每个页面中包含内容的建议解决方案的问题是,如果您想要包含其他内容,请更新网站的所有页面,例如侧边栏。
更好的想法是不要有脚本 - 页面连接。因此,您不每页要编写一个php文件。相反,使用一个前端控制器文件,大多数使用网站根目录中的index.php。然后使用Apache mod_rewrite或其他服务器技术在您网站的URL中具有灵活性。然后让index.php映射不同的URL请求以提供不同的页面,然后您可以将站点的所有页面放入数据库或其他地方。
这样,您网站中只有一个点包含页眉和页脚的模板,因此可以轻松更改,您可以使用站点的根目录来提供AJAX请求,您不希望在其中输出例如,HTML但是JSON。
Afaik这是一个很好的解决方法。
答案 3 :(得分:0)
另一个想法是只有一个单一的入口点,用GET
参数调用,例如?site=about
。您的index.php
可能如下所示:
<?php
// whitelist of allowed includes
$allowedIncludes = array('home', 'about', 'error404'); // etc.
// what to include if ?site is not set at all / set to an illegal include
$defaultInclude = 'home';
$errorInclude = 'error404';
// if site is not set, include default
$site = (empty($_GET['site'])) ? $defaultInclude : $_GET['site'];
// if site is illegal, include error page
$include = (in_array($site, $allowedIncludes)) ? $site : $errorInclude;
// actual includes
include 'header.php';
include $include.'.php';
include 'footer.php';
因此,您只需要包含header.php
和footer.php
一次,并完全控制允许的内容和不允许的内容(包含的文件可能位于只有php可以访问的目录中)。在index.php
处理请求时,home.php
,about.php
无需了解header.php
和footer.php
(您可以在以后轻松替换它们)时间)。
如果您不喜欢http://www.example.com/?site=about
,可以查看mod_rewrite
和朋友。
答案 4 :(得分:-1)
您可能想要为此设置会话。只要访问者在您的网站上,就会存在会话变量:
<?php
session_start(); // Remember that session_start(); must be the first line of your PHP and HTML-code
if($add_a_message){
$_SESSION['message'] = 'Message';
}
if($destroy_message){
$_SESSION['message'] = '';
}
// echo this message
if(isset($_SESSION['message']) && strlen($_SESSION['message']) > 0){
echo '<strong>' . $_SESSION['message'] . '</strong>';
}
?>