3

基本上,我有一些为网站构建的页面,并且都具有相同的布局。我认为在所有文件中包含所有相同的代码是一种浪费(浪费带宽、浪费时间等)。起初我考虑使用框架,但我不太喜欢它们......我不会放弃它们,我刚开始阅读它们,但无论如何我真正喜欢并觉得它适合我的解决方案是我编写了一个包含每个页面中存在的所有基本布局的 html 文件,然后我只是在主要区域中编写了一个 php 脚本(页面的不同部分)并取决于我 include_once 的 $_GET[] 值(“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 几个月,虽然我读到了 include 我仍然不确定这是否是不好的做法,是否有任何问题或危险

4

5 回答 5

7

没关系,也很正常。PHP 包含可以使跨页面管理公共内容成为一个简单的过程,从而使站点维护更容易。这是好事。

常见的例子包括:

  • 标头
  • 页脚
  • 网站导航
于 2013-02-27T15:12:34.087 回答
2

正如约翰康德所说,这完全没问题。我会稍微增强你的脚本:

// 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'];等包含请求的文件。

这只是用心写的 - 未经测试,可以简单地改进。这只是一个更进一步的想法。

于 2013-02-27T15:26:11.380 回答
0

你走的路没问题。您唯一应该考虑的是如何处理 HTTP 404 错误,以防有人提供了错误的页面 ID。

于 2013-02-27T15:15:25.830 回答
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;

?>
于 2013-02-27T15:32:42.443 回答
0

你这样做的方式(通过 ID 号而不是传递文件名)是可以的,更安全的是使用 file_get_contents,这样你就不会像导入一些代码一样导入文件。

于 2013-02-27T15:36:40.527 回答