7

私はいつでもこれをテストできますが、PHP の専門家からの公式の回答が必要でした (私は間違いなくそうではありません)。

誰かが次のようなリクエストをした場合:

http://www.somedomain.com/a.php?param1=value1&param2=value2&param3=value3?param1=value4&param2=value5&param3=value6

_GET['param2']たとえば、にアクセスしようとすると、どのような影響がありますか? 最初の値を取得したようです。この場合、 が返されvalue2ます。それは期待される動作ですか?

2 番目のクエスチョン マークは何かに影響しますか? たとえば、エラーは発生しますか?

4

2 に答える 2

3

最後に定義されたものを取得するだけです。クエリ文字列でパラメーターを複数回定義すると、混乱を招く可能性のある結果が得られるリスクがあります。これらのインスタンスでクエリ文字列を検証するのが最善です。少なくともはそうしています。

2 番目の疑問符は、その前のパラメーターの値の一部として扱われます。

于 2012-09-25T04:41:13.480 に答える
2

公式には?、クエリ文字列に 2 つあることは想定されていません。その場合、結果は未定義です。一部のプラットフォーム (PHP など) は、後続の?文字を文字と同じように扱い&、それらの値/ペアを許可します。param3他の人は、の値を beとして扱いますvalue3?param1=value4

短い答え:これをしないでください。それは不安定になります。また、サーバーの作成者として、値が意味を成していることを確認するために、パラメーター値を常に慎重に検証する必要があります。

于 2012-09-25T04:44:25.327 に答える