2012-01-23 12 views
1

私はstackoverflowとphpには新しく、この権利をコーディングしようとしています。私がしようとしているのは、index.php以外のページの表示を排除することですが、アドレスバーを利用してそれらを含めることです。たとえば、login.phpファイルを含むログインスクリプトを作成しようとしていますが、フォームの投稿情報をすべて処理し、index.phpファイルをチェックします。アドレスバーから情報を取得し、指定されたファイルを含めるためのPHP関数(動的ページ?)

私はアドレスバーから呼び出されたときに特定のページだけを含むように関数を作成しようとしています。したがって、フォームのアクションはindex.phpになるでしょうか?act = login - 私は$ _GET act(login)し、login.phpを含めてセキュリティリスクを引き起こす他のファイルをユーザが含めることはできません。

これは私のコードです:

私は間違っているつもりです
function getContent() { 

    $pages = array('login','page1'); 

    if(isset($_GET['act']) && $_GET['act'] == $pages) { 
     include($_GET['act'] . '.php'); 
    } elseif (!isset($_GET['act'])) { 
     echo 'INDEX PAGE'; 
    } 
} 

getContent(); 

? index.php?act = loginが設定されているときに、login.phpページを表示させることができません。 "INDEX PAGE"というテキストはactで設定されていてもうまく表示されます。

答えて

1

です:あなたはこのような何かをしたいですページの):

あなたはしかし、他の標準を使用して elseifを交換したい場合があります
if(isset($_GET['act']) && in_array($_GET['act'], $pages)) { 

$_GET['act']が設定されていても、ページの配列に含まれていない場合は、elseifは実行されないためです。

また、Limonadeのようなマイクロフレームワークを使用することを強くお勧めします。

+0

私はフレームワークが良いと言われてきましたが、あなた自身のコードを書く方が良いです。マイクロフレームワークは完全なフレームワーク(Cake PHPを見ていた)より優れていますか? – jmalais

+0

あなたは正しい、間違いなくそれを反映するように編集されています。マイクロフレームワークとフルスタックのフレームワークはまったく別の問題ですが、どちらも別々のものに適しています。 – mrlee

+0

ありがとうございました。 – jmalais

0

あなたは)(in_arrayするために、これを変更することができます。

if(isset($_GET['act']) && in_array($_GET['act'], $pages)) { 
    include('path-to-file/'.$_GET['act'] . '.php'); 
} 
+0

はい!これはまさに私が必要としていたものです。 – jmalais

0

あなたifが正しくありません。 actの配列に値が存在する場合はチェックしているとあなたは(これにそれを変更する必要が

if(isset($_GET['act']) && $_GET['act'] == $pages) { 

:このコード行は、あなたの問題は

if(isset($_GET['act']) && in_array($_GET['act'], $pages)) { 
    include($_GET['act'] . '.php'); 
} 
関連する問題