質問: あまりにも初歩的な質問で失礼します。 例えば、 のようなURLがあるとします。 上記URLの末尾にindex.html?a=1とかindex.html?a=1&b=2など、 ?以下がURLパラメータということを最近知りました。 この「?a=1」とか「?a=1&b=2」という箇所(パラメータ)は、 "通常"はPHPなどのプログラミング言語から出力されるものなのでしょうか? それともHTMLで出力されるものなのでしょうか? ご教授よろしくお願い致します。
回答: あなたが URL と呼んでいるものは、 Uniform Resource Locator の略で、リソースがある場所を示している文字列です。URLのうち、 `?` 以降 `#` より前の部分はクエリ文字列 (query component / query string) と呼ばれます。 クエリ文字列がどこで作られるかは、プログラムに依ります。 ウェブページの話の場合、一般的には、URL は HTML 内で指定され、ブラウザがそれがさす場所へアクセスを行うものです。 HTML では、 (1.) `` 要素にクエリを含んだ URL が指定されるか、 (2.) `` 内の `` 要素の情報がクエリとして付けられ送信される、もしくは、 (3.) `` のイメージマップがクリックされた位置がクエリとして付けられ送信されることになっています。 1. `リンク名` 2. `` 3. `` ``` <a href="page.html?key1=value1">リンク名</a> リンク名 <form method="get" action="page.html"><input type="text" name="key1" /><input type="submit" value="Submit" /></form>(スニペットでは動きません) <a href="page.html"><img src="someimage.gif" ismap /></a> ``` また、 JavaScript では、ブラウザに命令してURLへアクセスさせることができます。殆どの場合 URL 文字列に直接 `?` 以降のクエリを付けて (1.) 場所を開くか、 (2.) 場所からデータを取得するか、 (3.) `` の送信メソッドを呼ぶかになるでしょう。 1. `window.location="page.html?key1=value1";` or `window.open("...");` 2. `new XMLHttpRequest().open("GET", "page.html?key1=value1", true).send();` 3. `document.getElementById("form1").submit();` また、PHP 等がサーバ側で JavaScript もしくは HTML を生成するために使われたりもしますね。 (基本的にといえば、しごく基本的なところなので、 HTML4 (1) / HTML5 (2) (3) の仕様の他、 RFC 1738 (4) / 3986 (5) 等に目を通しておくとよいです。)