2009-03-26 17 views
0

これはindex.phpページのスニペットです.3つのHTMLリンクがあるメニューが表示されています。PHPテンプレートまたはjQuery AJAX呼び出しを使用するには?

メニュー項目を選択すると、PHPテンプレートロジックがロードされ、<div id="main">に読み込まれるページパラメータが定義されます。

<div class="span-24" id="menu"> 
    <table> 
    <tr> 
     <td><a href="index.php?page=races">Races</a></td> 
     <td><a href="index.php?page=runners">Runners</a></td> 
     <td><a href="index.php?page=searchRunners">Search</a></td> 
    </tr> 
    </table> 
<br/> 
</div> 

<!-- main content --> 
<div class="span-24" id="main"> 
<?php 
    $MYROOT=$_SERVER['DOCUMENT_ROOT']; 
    if(isset($_GET['page'])) 
    { 
    $page=$_GET['page']; 
    @ require_once($MYROOT."/$page.php"); 
    } 
    else 
    { 
    @ require_once($MYROOT."/races.php"); 
    } 
?> 
</div> 

このソリューションは正常に動作しますが、私はより多くのページを追加し、追跡するためのより多くのページパラメータを持っているように、このアプローチは様々なPHP require()/require_once()メソッド呼び出しを維持することが困難になることを心配しています。

また、jQueryも利用可能ですが、AJAXベースのクエリを使用して<div id="main">のHTMLをレンダリングする利点や欠点は何でしょうか。

AJAXを使用する方が良い方法かもしれません。なぜなら、私が呼び出すことのできるページと、AJAX呼び出し内で渡すことのできるパラメータに柔軟性があるからです。

私はPHPを知っていて、AJAXは一緒に使うことができますが、このタイプのプロジェクトを開始する場合はどうしますか?

+0

私は真剣に$ _GET ['page']のようなものを浄化すると考えています – JasonDavis

答えて

8

あなたはこれをしたくありません。 AJAXは素晴らしく、これ以外はすべてそれを悪用するだろう。 Javascriptを無効にしている人にウェブサイトをアクセス不能にするだけでなく、あなたのウェブサイト上のウェブのナビゲーション標準も殺すことになります。どのようにして、誰かがレースページをチェックするために友人にリンクを送ることができましたか?どのようにページ間を行き来することができますか?これには回避策がありますが、それは価値がありません。 PHPコードを動的に再構築するだけで、あなたが望むものを組み込むことができ、安全です。

0

もしあなたがajaxを使っているのであれば、依頼されたタスクのためにセットアップする必要があるphpと話しているので、何も変わりません。 「

<td><a href="races.php">Races</a></td> 
<td><a href="runners.php">Runners</a></td> 
<td><a href="searchrunners.php">Search</a></td> 
5

はパオロが言った上で展開するには、Googleや他の検索エンジンをすることはできません。私はあなたがこのように異なったPHPファイルを、単一のPHPスクリプトに戻ってパラメータを渡す代わりに、おそらく呼び出している理由は、私は疑問に思って推測しますjavascript経由で読み込まれたすべてのコンテンツをクロールします。つまり、ページ上の静的な情報のみが索引付けされ、ページのランキングは存在しないものになります。

+0

+1その非常に重要な点を忘れました。 –

0

別のページにします。テンプレートシステムを使用します。非常にシンプルなものはhttp://andy.greyledge.net/voot/index.php

"%HEADER%"や%FOOTER%や%BODY%のような代替テンプレートを持つHTMLテンプレートページから始めます。

このページをPHPページにインポートし、これらの変数を設定してページをレンダリングします。

ページを追加する場合は、HTMLテンプレートのメニューに追加し、すべてのページに表示します。

他のすべての人が正しいと言いました。

<?php 
    $pages = array('page', 'races'); 
    $MYROOT=$_SERVER['DOCUMENT_ROOT']; 
    if(isset($pages[$_GET['page']])){ 
     @require_once($_GET['page'].'.php'); 
    } 
?> 

しかし、あなたはこのようにそれをやろうとしている場合、あなたはMVCフレームワークに移動する考えたくかもしれませんが:

-1

別の方法は、あなたが持っているしたいページの配列を使用することですそれはあなたが作り直しようとしているものだと思われます。

関連する問題