CGI講座 ≫ 引数の渡し方

引数って何?

ここでちょっと原点にかえってみましょう。
そもそもCGIを使う利点っていうのは、動的なページが作れるということでしょう。 ということは、CGIに各アクセス毎に違った引数(値)を渡して、 それによって違った処理を行い、動的なページが作れるということです。

たとえば検索なんかはいい例です。検索した内容によって違う結果一覧が帰ってきます。

引数Aをsearch.cgiに渡したら、引数Aを使った結果が返って来ます。引数Bをsearch.cgiに渡したら、引数Bを使った結果が返って来ます。

すると、この引数渡しというのは割と重要な役目を果たすわけですね。
まず、引数を渡す方法から学習してみましょう。

引数を受け取る方法は、それぞれの言語に分かれて「引数の受け取り方」で説明します。



引数を渡す方法

引数を渡すには2種類の方法があります。HTML講座のフォームの所に説明がありますが、基本的にはPOSTGETの二種類です。
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という環境変数で取ることができます。



ページのトップへ戻る