3

基本的に、私はWebサイト用に作成したページがいくつかあり、すべて同じレイアウトになっています。すべてのファイルに同じコードをすべて含めるのは無駄だと思っていました(帯域幅の浪費、時間の浪費など)。最初はフレームを使うことを考えましたが、あまり好きではありませんでした...あきらめず、読み始めたばかりですが、とにかく自分に合っていると感じた解決策は私でしたすべてのページに存在するすべての基本的なレイアウトを含む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を始めて数か月しか経っていません。インクルードについて読んだのですが、それが悪い習慣であるかどうか、問題や危険があるかどうかはまだわかりません。

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

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

あなたの進む道でOKです。考えるべき唯一のことは、誰かが間違ったページ ID を与えた場合に HTTP 404 エラーを処理する方法です。

于 2013-02-27T15:15:25.830 に答える
0

ファイル名を渡すのではなく ID 番号で行う方法は問題ありませんが、 file_get_contents を使用する方が安全です。その方法では、ファイルをコードのようにインポートすることはありません。

于 2013-02-27T15:36:40.527 に答える