データベースを利用するCGIプログラミング

---- CGIとは ----


CGIは、Common Gateway Interfaceの頭文字で、WWWクライアントとWWWサーバ上で動作するプログラム間のデータのやりとりをする仕掛けを指しています。この仕掛けは、通常プログラムを作成することによって作られます。

ホームページを見る仕掛けをもう少し詳しく説明すると、次の2通りがあります。

  1. WWWサーバに用意してあるHTMLファイルをそのままWWWクライアントに送りブラウザで表示する。
  2. CGIプログラムが動いて、その結果(HTMLファイルに相当するもの)をWWWクライアントに送りブラウザで表示する。

決められた(HTMLファイルに書かれたまま)を表示する場合は、1で十分ですが、HTMLでは記述できない処理をさせた結果を表示したい場合(例えばデータベースを検索しその結果を表示したい場合など)は、2の方法を取る必要があります。

では、CGIプログラムは、WWWクライアント、WWWサーバのどちらのコンピュータで実行されるのでしょうか? これには、WWWクライアントで実行されるプログラム言語と、WWWサーバで実行される言語の2通りがあります。 例えば、次のような言語があります。

WWWクライアントで実行される言語
Java、JavaScript、VBscriptなど。
WWWサーバで実行される言語
Java、Perl、シェルスクリプト(sh, csh)など。
したがって、Perlは、2の仕組みで機能しWWWサーバ上で実行されます。

CGIが動いてページを表示する場合のコンピュータ間の情報の流れを以下に示します。

  1. 要求
    WWWブラウザがURLを指定してWWWサーバに依頼します。
  2. 起動
    WWWサーバは受けとったURLをみてCGIを動かす必要があることを判断します。 さらにそのCGIプログラムを見るとPerlであることを理解して、そのCGIプログラムをPerlの処理系 に依頼します。
  3. 実行
    Perlの処理系は、依頼されたプログラムを動かします。
  4. 出力
    CGIプログラムの結果は標準出力に出します。その内容はHTML文のデータです。
  5. 結果送信
    WWWサーバは、標準出力に出された結果の内容を、ネットワークを介してWWWクライアントのブラウザに送信します。
  6. 表示
    データを受けとったブラウザは、その結果を画面に表示します。

例えば、CGIプログラムが以下のようなPerlプログラムであれば、


#!/usr/local/bin/perl
print "Content-type: text/html\n";
print "\n";
print "<HTML>\n";
print "<HEAD><TITLE></TITLE></HEAD> \n";
print "<BODY>\n";
print "<H1>こんにちわ。CGIの見本です。</H1>\n";
print "</BODY>\n";
print "</HTML>\n";

その結果として次のようなHTML文が出力され、その内容がWWWクライアントに送信され、これによってこのような画面が表示されます。

Content-type: text/html
<HTML>
<HEAD><TITLE></TITLE></HEAD>
<BODY>
<H1>こんにちわ。CGIの見本です。</H1>
</BODY>
</HTML>


江木鶴子 : egi@ube-c.ac.jp