2012-03-25 21 views
6

次のURLは機能的に同等であると見なされるべきですか?空のURIクエリ文字列パラメータ: "a =&b ="と "a&b"

http://example.com/foo?a=&b= 

http://example.com/foo?a&b 

は、これはその後、離れて解析し、私が書いたのDrupalモジュールのユーザーはコードが時々クエリ文字列部分が原因根底にあるPHP関数の方法をいくつかに予期しない形で変化させるのURI noticedを書き換えたときにについて来ました行動する。例:

parse_str("a&b", $values); print http_build_query($values); 

a=&b= 

これは私が心配する必要がありますか?

編集このように、この質問は別のものと似ていると不平を言っています。問題は、 "値がXでない"と "Xの空の値"が同等であると考えるのが安全かどうかです。スタイルは構文的に正しい(これは正しい)。

+0

意見では、はい、これは遅かれ早かれ、デバッグが難しいかもしれない神秘的な方法で、aおよびbのクエリパラメータをどのように使用するかによって、心配する必要があります。それらが空/ヌルになる場合、なぜそれらを最初に生成するのですか?サーバスクリプトがこれらのパラメータの存在をチェックする方がよいかもしれません。 –

+0

私は実際にリンクされているサーバが何をするのかを制御できません。私は基本的には、誰かが私に指し示すことができない、またはそれに失敗していることがわかりませんでした、そこにコード化された標準があることを期待しています。もし私がどちらか見つからなければ、私は車輪を心配し、再発明しなければならないかもしれない。 –

+0

[URLクエリパラメータに値がない場合は有効ですか?](https://stackoverflow.com/questions/4557387/is-a-url-query-parameter-valid-if-it-has-no) -値) –

答えて

1

RFC 3986 Uniform Resource Identifier (URI): Generic Syntaxは、?のような文字を扱う以外に、クエリ文字列の構造について何も言及していません。厳密に言えば、あなたの2つのURLの例はそれぞれです。もちろん、これらのクエリ文字列を受け取るアプリケーションは、それらを機能的に同等のものとして扱うかもしれませんが、これはURLだけから判断できるものではありません。

関連する問題