0

これが私の場合です。次のスクリプトがあります。

<?php
// ... other code ...
switch($_GET['request'])    {
        case "firstPage":
            $file = APP_ROOT. "pages/firstPage.php";
            $hndle = fopen($file,"r");
            $right_column = fread($hndle, filesize($file));
            fclose($hndle);
            break;
        case "secondPage":
            $file = APP_ROOT. "pages/secondPage.php";
            $hndle = fopen($file,"r");
            $right_column = fread($hndle, filesize($file));
            fclose($hndle);
            break;
    }
}
?>
<div id="right_column">
    <?php echo $right_column;?>
</div>
// ... other code ...

$_GET['request'] の値に応じて、変数 $right_column に php ファイルの内容を割り当てています。次に、最後の div でその変数をエコーし​​ます。firstPage.php ファイルと secondPage.php ファイルには、html と php のコードが混在しています。Zend の「部分」のようなソリューションを探します。ありがとう

4

4 に答える 4

2

まず第一に、あなたのコードはひどいです、それは次のようなものでなければなりません:

$pages = array(
   'firstPage'   => 'pages/firstPage.php',
   'secondPage'  => 'pages/secondPage.php'
);

$request = 'firstPage';
if ( array_key_exits($_GET, 'request') 
 &&  array_key_exists($pages, $_GET['request']) )
{
   $request = $_GET['request'];
}
?>
<div id="right_column">
    <?php include  APP_ROOT . $pages[ $request ]; ?>
</div>

http://codeangel.org/articles/simple-php-template-engine.htmlをお読みください。これは、興味深いと思われるかもしれません。phpのネイティブテンプレート機能を簡単に利用する方法を説明する必要があります。

于 2011-11-22T17:02:59.610 に答える
1

実際、ファイルの読み取りとダンプは解決策ではありません。コードをエンドユーザーに表示しているだけです。

必要なのは、PHP ファイルを解析して結果を表示することです。あなたは2つの方法でそれを行うことができます:

まず、代わりに

 $file = APP_ROOT. "pages/firstPage.php";
 $hndle = fopen($file,"r");
 $right_column = fread($hndle, filesize($file));
 fclose($hndle);

できるよ:

$right_column = include(APP_ROOT . "pages/firstPage.php");

したがって、firstPage.php はコードを返す必要があります。このようなもの:

// firstPage.php
return "my html";

ただし、次のように含めることもできます。

<div id="right_column">
    <?php include(APP_ROOT . "pages/firstPage.php"); ?>
</div>

または、ob_get_contentsを使用できます。PHP には、その使用方法に関する優れたドキュメントがあります。

あなたのケースにはインクルードを使用します。

于 2011-11-22T16:56:49.253 に答える
0

インクルードする PHP ファイルを示す変数を設定し、ファイルを読み取るのではなく、単にインクルードする方がおそらく簡単です。例えば:

<?php
// ... other code ...
switch($_GET['request'])    {
        case "firstPage":
            $file = APP_ROOT. "pages/firstPage.php";
            break;
        case "secondPage":
            $file = APP_ROOT. "pages/secondPage.php";
            break;
    }
}
?>
<div id="right_column">
    <?php include($file);?>
</div>
// ... other code ...

firstPage.php および secondPage.php ファイルに HTML のみが含まれている場合、あなたが行っていることは機能します。PHP がある場合は、それが必要にinclude()なります。またはあなたはそれをするeval()ことができますが、それは必要以上の仕事をしています.

于 2011-11-22T16:53:51.787 に答える
-1

ますます増加する switch ステートメントを使用するのではなく、規則に従ってプログラムできるように思えます。

<?php
// ... other code ...

$file = '';
if (isset($_GET['request'])) {
    $safeFileName = sanitizeRequestForFileName($_GET['request']);
    $file = APP_ROOT. 'pages/' . $safeFileName . '.php';
}
?>
<div id="right_column">
    <?php 
        if (file_exists($file)) {
            include($file);
        }
    ?>
</div>
// ... other code ...
于 2011-11-22T17:18:29.453 に答える