基本上我有一些我为网站构建的页面,并且都具有相同的布局。我认为在所有文件中包含所有相同的代码(浪费带宽,浪费时间等)是浪费。起初我想过使用框架,但我不太喜欢它们......我不会放弃它们,我只是开始阅读它们但是无论如何我真正喜欢并感觉它适合我的解决方案是我写了一个html文件,其中包含了每个页面中存在的所有基本布局,然后我只是在主区域中写了一个php脚本(页面的一部分不同)并且取决于$ _GET []值我include_once (“page.php”)其中该文件基本上有html代码和一些php,用于与服务器上的数据库有关的一些动态内容。所以它看起来像这样
<html>
<head>
<!-- css and jquery file -->
</head>
<body>
<div id='title'>
</div>
<div id='navigation'>
</div>
<div id='content' style='float:left'>
<?php
switch($_GET['id']) {
case '1': include_once('./pages/1.php');
case '2': include_once('./pages/2.php');
.......
}
?>
</div>
<div id='sidelinks'>
</div>
<div id='footer'>
</div>
<!-- various javascript files for events -->
</body>
</html>
然而,我只是几个月的PHP,虽然我读到包括我仍然不确定这是不好的做法,有任何问题或危险
答案 0 :(得分:7)
那没关系,非常正常。 PHP包括可以在一个简单的过程中跨页面管理公共内容,从而使站点维护更容易。这是件好事。
常见的例子包括:
答案 1 :(得分:2)
正如John Conde所说,这完全没问题。我会稍微改进你的脚本:
// use an array that holds your pages
$pages = array();
$pages[] = array(
'title' => 'Startpage',
'metaDescription' => 'Meta Description',
'include' => './pages/1.php',
// etc.
);
$pages[404] = array(
'title' => '404',
'metaDescription' => 'Meta Description',
'include' => './pages/1.php',
// etc.
);
$request = 0;
比你可以检查:
if (isset($_GET['id']) {
$request = ( count($pages) > intval($_GET['id']) ? intval($_GET['id']) : 404 );
}
if (404 == $request) {
// send 404 headers
}
然后您可以使用:print $pages[$request]['title'];
来显示单个页面标题,并且可以使用require $pages[$request]['include'];
等包含所请求的文件。
这只是用心写的 - 未经测试,可以简单地改进。这是一个进一步发展的想法。
答案 2 :(得分:0)
你的方式没问题。您应该考虑的唯一事情是如果有人提供错误的页面ID,如何处理HTTP 404错误。
答案 3 :(得分:0)
1-您必须防止页面出现任何错误。
2-在你的位置我不使用switch
<?php
$pageid = $_GET['id'];
$errormsg = '';
if($pageid)
{
$file_to_call = './pages/' . $pageid . '.php';
if(is_file($file_to_call))
{
include_once($file_to_call);
}
else
{
$errormsg = "YOUR MESSAGE ERROR";
}
}
else
{
$errormsg = "YOUR ANOTHER MESSAGE ERROR";
}
echo $errormsg;
?>
答案 4 :(得分:0)
你这样做的方式(通过ID号而不是传递文件名)是可以的,更安全的仍然是使用file_get_contents,这样你就不会像导入某些代码一样导入文件。