2016-10-06 4 views
-1

私は自分のCMSをPHPで書いています。それはかなり簡単ですが、動的ページからのheader()のリダイレクトのようないくつかのことをすることはできません。ここ
は、その構造(非常に単純化された)である:動的なものであり、GETパラメータIDの値を変更することで他のページを表示することができます1ページがどのように動的なウェブサイトを構築する必要がありますか?

<?php 
$db = new PDO... 
try { 
    //getting page info from database (by $_GET['id']) 
    //and put results into $pageInfo 
    $stmt->prepare 
//.. catch etc... 
?> 
<!doctype html> 
<html> 
<head><title><?=$pageInfo['title'];?></title></head> 
<body> 
<?php 
//this file below cannot contain a php redirect, because headers are already sent 
include($pageInfo['content_path']); 
?> 
</body> 
</html> 

があります。
含まれているコンテンツには、多くの場合、PHPスクリプトが含まれています。

私はインターネットを見回しましたが、この問題の解決方法はわかりません。
header.htmlfooter.htmlを作成してすべてのページに含めることができますか?しかし、コンテンツを含める前にヘッダーファイルをインクルードしてもヘッダーは送信されませんか?どうやって?

本当に申し訳ありませんが、この質問がばかげているようですが、どうやってやるのか分かりません。私は誰かが私を教える人はいないので、私は自分ですべてを学ばなければならないが、いくつかのことについてはどこを見なければならないのか分からない。

ありがとうございます。

+1

出力が開始されたときにヘッダーを送信することはできません。その時は遅すぎます。あなたのスクリプト内の他のPHPファイルも含めて問題ありません。 – adeneo

+0

urコード –

+0

の最初に@ob_start()を追加してみてください。サイトを構築する "正しい方法"はありません。意見しかありません。 –

答えて

0

コードを実行する部分(コントローラまたはコア)と、何かを表示する部分(ビューまたはテンプレート)を複数の部分に分けるのが好ましい方法です。

たとえば、MVC(モデル/ビュー/コントローラ)では、単一のページはコントローラを呼び出すディスパッチャにすぎず、コントローラはPHPコードを実行し、2番目の部分、モデル、および最後に、テンプレートを呼び出してデータを表示します。

例では、呼び出しごとに2つのファイル(PHPコードのみを含み、すべてのデータをフェッチするもの)を含めることから始めて、その後に必要な非常に単純なコードと変数を持つhtmlテンプレートデータを表示します。リダイレクトを行い、php-part(コントローラ)で終了することができます。

関連する問題