プログラミング経験者向けの説明

前へ << C 言語で CGI プログラムを作ろう

端折ります。

標準入力も標準出力も知っているし、 環境変数が何かも知ってる、プログラムも書いたことがあるので、 CGI について てっとり早く教えろ、という方向けの説明です。
そういう人は自分で調べてしまうので、説明する必要もないような 気がしますが。
WWW サーバにアクセスしたとき、ファイルの内容がそのまま出力されるのか、 CGI プログラムとして実行されるのかは WWW サーバの設定によります。 一般的に拡張子を .cgi としておけばいいでしょう。

CGI プログラムは、実行されると標準出力に出力します。 その出力がそのままブラウザに渡されます。 ただし、気を付けるのはまずヘッダを出力し、その後空行が必要なことです。 perl なら

print "Content-type: text/html\n";
print "Content-length: 100\n";
print "\n";
print "... 内容 ...";
という流れになります。

引数の取得は、GET の場合は環境変数 QUERY_STRING に代入されています。 POST の場合は標準入力から渡されます。 GET か POST かは 環境変数 REQUEST_METHOD でわかります。 また、POST の場合は環境変数 CONTENT_LENGTH にデータ長さが入っていますが、 EOF まで STDIN から読み込んでも構わないでしょう。

GET でも POST でも、データは URL エンコードされています。 正規表現 [-a-zA-Z0-9_\*] 以外の文字は全て %xx という形 (xx は16進数表記) になって送られてきます。CGI プログラムでは、 これを元の形に戻さないといけません。

前へ << C 言語で CGI プログラムを作ろう