next up previous contents
Next: 6.1 QUERY_STRING Up: Network Administration Course Previous: 5.3.5 FORMのサンプル2

6. CGIに引数を渡す

次のようなスクリプトcgi.arg1を考えてみます。

このスクリプトの中の、echo $1echo $2の、$1,$2 は、スクリプトに与えられた引数を意味しています。

 
#!/bin/sh
echo Content-type: text/html
echo
echo "<H1>"
echo $1
echo "</H1>"
echo "<HR>"
echo "<H1>"
echo $2
echo "</H1>"

コマンドラインから、このスクリプトに、abcとxyzという二つの引数を与えて 起動すると、次のような出力が得られます。

 
# ./cgi.arg1 abc xyz                     <---- コマンドラインから実行
Content-type: text/html

<H1>
abc
</H1>
<HR>
<H1>
xyz
</H1>

問題は、こうした引数を使うGatewayプログラムに、どの様にして引数を渡す のかということです。

次のように、Gatewayプログラムを呼び出すURLの終わりに、引数を二つつけて オープンしてみて、CGIに引数が渡るかどうか確かめて下さい。

 
http://lx.wakhok.ac.jp/cgi-bin/cgi.arg1 abc xyz

残念ながら、これではうまくゆきません。 冷静に考えてみれば、オープンに必要なのはURLです。仮想的なファイル名 にあたるURLに引数があるかのような先の書式はちょっと変です。 ただ、表示を良くみると、"<HR>"に対応する水平線はちゃんと引かれて いますので、URLの解釈そのものは正しく行われているようです。 実際、URLの解釈は、URLの文字列中に、空白文字が出現した時点で 打ち切られているのです。これでは、空白の後ろの文字列がサーバに 渡るはずがありません。

こうした時、次のようなURLを送ってみて下さい。

 
http://lx.wakhok.ac.jp/cgi-bin/cgi.arg1?abc+xyz

要するに、Gatewayプログラムを呼び出すURLの後ろに、まず、記号'?'をおいて、 その後に、引数を、記号'+'で区切って渡せばいいのです。



 

Noriyo Kanayama