2011-12-29 7 views
1

私は単純なページリダイレクトのために$ _getを使用しています。 ユーザー入力の消毒について学習し始めたばかりなので、以下のコードが大丈夫かどうか疑問に思っていました。この特定のコードに推奨される他の消毒剤はありますか?はいの場合、なぜですか?

以下のコードについてユーザーが値を入力した後、値をリダイレクトする前に許容値のリストと照合していることを確認しました。

$host = $_SERVER['HTTP_HOST']; 
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); 
$PAGES = array('a', 'b', 'c', 'd', 'z'); 

if (empty($_GET['letter'])) { 
$_GET['letter']="a"; 
} 

if (!in_array($_GET['letter'], $PAGES)) { 
$_GET['letter']="a"; 
} 

$letter=$_GET['letter']; 
$goto=$letter .".php"; 
header("Location: http://$host$uri/$goto"); 

答えて

0

$ _GET ['letter']を$ PAGESのセットに入れてログすると、あなたはうまくいくと思います。しかし、あなたのコードは本当に悪いです! PHP switch with GET request

たぶん、あなたは、Zend FrameworkのMVCを使用して興味を持って次のようになります。

が、これはあなたを助けるかもしれませ。

http://framework.zend.com/manual/en/zend.controller.quickstart.html

また、mod_rewriteを持つ例があります。幸せな読書 !!!

+0

あなたの返事をありがとう。あなたは悪いことを詳述できますか? – TryHarder

+0

コードの整形、$ PAGESは大文字であってはいけません。$文字変数は無用です。おそらく$ gotoでも "a"と ".php"で一重引用符を使うことができます。 – dotoree

+0

コードの整形は不正なコードの兆候ではありませんが、整頓されている可能性があります。 –

0

Apacheの場合、mod_rewriteはこれよりはるかに優れています。

+0

@ダグーンありがとう。 Apacheでこれを実装する方法の例を教えていただけますか?また、Apacheはなぜ優れているのでしょうか? – TryHarder

+0

@Dagoon私はmod_rewriteだけでは役に立たないと思います。 – dotoree

関連する問題