CGI講座 ≫ 引数の渡し方
引数って何?
ここでちょっと原点にかえってみましょう。
そもそもCGIを使う利点っていうのは、動的なページが作れるということでしょう。
ということは、CGIに各アクセス毎に違った引数(値)を渡して、
それによって違った処理を行い、動的なページが作れるということです。
たとえば検索なんかはいい例です。検索した内容によって違う結果一覧が帰ってきます。

引数Aをsearch.cgiに渡したら、引数Aを使った結果が返って来ます。引数Bをsearch.cgiに渡したら、引数Bを使った結果が返って来ます。
すると、この引数渡しというのは割と重要な役目を果たすわけですね。
まず、引数を渡す方法から学習してみましょう。
引数を受け取る方法は、それぞれの言語に分かれて「引数の受け取り方」で説明します。
引数を渡す方法
引数を渡すには2種類の方法があります。HTML講座のフォームの所に説明がありますが、基本的にはPOSTとGETの二種類です。
POSTはデータに日本語や空白を使っていたり、データ量が多い時に使用します。GETはそれ以外の時です。
POST
POSTは基本的にフォームから使います。
<form action="test.cgi" method="post">
名前 <input type="text" name="J_Name">
<input type="submit" value="送信">
<input type="reset" value="クリア">
</form>
GET
GETはフォームからも使えます。
上のフォームでmethod="get"とするか、method属性自体を省略すると自動的にGETになります。
他にURLの中で一緒に書くこともできます。
<a href="http://aaa.com/cgi-bin/test.cgi?J_Name=aaa">send</a>
ってな具合です。こうすると、GETで値を渡すことになります。
まず、CGIのURLに続いて?を書きます。これ以降が引数として環境変数QUERY_STRINGにそのまま入ります。
?の後に続いて
を書きます。では、引数が複数ある場合はどうするかというと、このセットを&で繋ぎます。
<A HREF="http://aaa.com/cgi-bin/test.cgi?J_Name=aaa&Code=1">aaa</A>
3つ以上の時も同様に、&で繋げて書きます。
ここで注意しなければならないのは、引数も含めた一連のURLは途中で空白が入ると値がちぎれてしまいます。
そういう場合はPOSTを使うか、引数をURLエンコードして渡します。
URLエンコードを行ってくれるWebサービスもあります。すぐ試してみたい場合は探して利用してください。URLエンコードについてはそれぞれの言語に分かれた「引数の受け取り方」のところでも説明します。
その他
あとは環境変数の所でやりましたが、
http://xxxx.aaa.com/cgi-bin/test.cgi/aaa
という様にCGIの後に続けて”/”から始まる値を書くと、PATH_INFOという環境変数で取ることができます。