PHPは

2009-03-25 6 views
5

を割り当てられていない値のキーとして変数を取得:PHPは

http://domain.com/script.php?1234 

そしてscript.phpは、次のスクリプトを持っています

$key=array_keys($_GET); 
    echo $key[0]; 

出力は次のようになります。

1234 

(私は醜いr = 1234を取り除こうとしていますが、これが機能すれば完璧です)

私の質問は、正式に正しいのですか、それともプログラミングに問題がありますか?

答えて

1

正式には正しいものはありませんが、それがあなたのために働くのであれば、ぜひそれを使用してください。 Btwそれは何の価値が一致する問題です。

あなたはexample.com?1234&4567を持っているとき何が何であるかを教えるためにキー名のない2つの値があります。

しかし、あなたは離れて醜いのURLで行いたい場合、あなたはあなたがこのアプローチを使用してはならない

Beginners guide

Another beginners guide

1

のmod_rewriteになっているはずです。変数を表示したくない場合は、URL rewriteを使用してURLを見栄えよくすることができます。また、$ _GETをサニタイズすることを忘れないでください:)

実際には、あなたの例では、このように見たい場合は、値なしのGETを介して送信する変数は1234です。

1

これは正しいです。変数は1234と呼ばれ、値はありません。それはあなたにもhttp://example.com?1234=10を書くことができ

GET['1234'] == ''; 

を意味し、結果はあなたにも優しいURLを作成するためのよう

echo $_SERVER['QUERY_STRING'] 

を行うことができ

GET['1234'] == '10'; 
+0

次回は公式http://example.comを使用し、 http://tools.ietf.org/html/rfc2606#section-3を参照してください。 –

+0

ありがとう、それのためのRFCがあったことを知らなかった – soulmerge

0

私の質問があり、これは正式に正しいですかそれは貧弱なプログラミングですか?

値が設定されていないクエリパラメータは、文書化されていない可能性がありますが、実際は引き続き使用されます。

あなただけのパラメータとして、それを解析することなく、全体のクエリ文字列を取得したい場合は、行うための最善のことは、そう直接言って次のようになります。

echo $_SERVER['QUERY_STRING'] 

を(何をするにしても、直接それをエコーし​​ません。しかし、値を例えばサニタイズする。それを整数に変換するか、任意の文字列を許可したい場合は、バックスラッシュをエスケープする引用符とバックスラッシュでJavaScriptに適切にエスケープして出力します)。