CGIプログラムの特徴
C言語で作ったCGIプログラムの特徴は、
1. ウエブサーバから起動される。従って、どの様に起動されるかという条件が有る。
・ ファイルパーミッションの問題
・ データの受け取り方の問題
2. 標準出力に書き出したデータは、ウエブサーバに受け取られて、HTMLドキュメントとしてブラウザに送られる。
3. 標準エラー出力に書き出したデータは、ウエブサーバのエラーログに出力される
という部分が、CGIでないプログラムと異なります。
また、同一のプログラムのインスタンスが同時に複数(ブラウザにアクセスされる毎に)できます。
CGIプログラムの起動
大別すると、以下の2つの場合が考えられます。
1. ブラウザアクセスのURLでCGIを指定した場合。 ハイパーリンクも同じです。
2. FORMのActionでCGIを指定した場合
3. SSIでCGIを指定した場合
です。
これらの場合について、CGIが、パラメータをどの様に受け取るかが、CGIを理解する上で必要な事です。
1. の場合
URLは、
http://www.mediapalace.co.jp/cgi-set/text.cgi?p1=a1&p2=a2&p3=a3
の様に、CGIに渡すパラメータを伴います。
p1=a1 p2=a2 p3=a3 という、&で連結された項目が、アーギュメントとして、CGIに渡されます。
2.の場合
FORMのmetod が POST の場合と、GETの場合で異なります。
method="POST" の場合は、
<INPUT type=text name=p1 >
の様な入力について、ブラウザから送信されたデータイメージが、標準入力を通して、CGIに与えられます。
method="GET" の場合は、環境変数QUERY_STRING の値として、各入力項目の値が、
p1=a1&p2=a2&p3=a3
の様な文字列で与えられます。
3.の場合は、SSIとして
<!--#exec cgi="text.cgi p1=a1 p2=a2 p3=a3"-->
と書いてあれば、各パラメータは、各パラメータがアーギュメントとして、CGIに渡されます。
つまり、CGIは、
アーギュメント 環境変数 標準入力
の3つのうち、いずれかの方法(起動方法で異なる)でパラメータを受け取ると言う事です。
いずれの方法であっても、CGIの処理レベルには、p1=a1 p2=a2 p3=a3 というパラメータが指定された事を知る事が
必要十分な事です。