CGIの起動方法
 
CGIを起動するにはいくつかの方法があります。

ブラウザでURLにCGIスクリプトを直接入力する

これが最も簡単な方法で、他の方法のようにHTMLを必要としません。しかし、ユーザにこのURLを入力させるのは現実的とはいえませんので通常は後述の<FORM>タグ<A HREF>タグを使ったHTMLを用意するのが一般的です。CGIのデバッグ時には有効でしょう。

CGIにデータを渡すにはURLに
 
http://localhost/cgi-bin/hogehoge.cgi/PathInfo?Name1=Val1&Name2=Val2

などと指定できます。
?のあとに名前=値の形式で記述し、複数のパラメタを渡したい場合はさらに&を入れて記述します。このデータは環境変数QUERY_STRINGにセットされてCGIプログラムhogehoge.cgiが呼び出されます。hogehoge.cgiと?の間には「パス情報」と呼ばれるものを入れることもできます。パス情報は環境変数PATH_INFOにセットされます。この方法の場合、リクエストメソッドはGETとなります。リクエストメソッドについては「GET/POSTメソッド」を参照してください。
 

HTMLの<FORM>タグを使って起動する

 
<HTML>
<HEAD>
<TITILE>CGIの起動方法(&lt;FORM>タグ)</TITLE>
</HEAD>
<BODY>
<FORM ACTION="/cgi-bin/hogehoge.cgi" METHOD="GET">
入力1: <INPUT TYPE="text" NAME="Name1" SIZE="32"><BR>
入力2: <INPUT TYPE="text" NAME="Name2" SIZE="32"><BR>
<INPUT TYPE="submit" VALUE="送信">
</FORM>
</BODY>
</HTML>

この HTML をブラウザに読み込ませると2つのテキスト入力フィールドと、1つの「送信」submitボタンが作成されます。「送信」ボタンを押すとテキスト入力された文字列が、環境変数QUERY_STRINGにセットされてCGIプログラムhogehoge.cgiが呼び出されます。METHOD属性にはもう一つPOSTがあります。詳しくは「GET/POSTメソッド」を参照してください。


[サンプル表示]

<INPUT>タグのTYPEには他に
<INPUT TYPE="textarea" SIZE="16">
<INPUT TYPE="button">
<INPUT TYPE="radio">
<INPUT TYPE="clear">
<INPUT TYPE="image">
<INPUT TYPE="reset">
<INPUT TYPE="hidden">
などがあります。
 

HTMLのアンカー<A HREF>タグを使って起動する
 
<HTML>
<HEAD>
<TITLE>CGIの起動サンプル(&lt;A HREF>タグ)</TITLE>
</HEAD>
<BODY>
<A HREF="/cgi-bin/hogehoge.cgi?Name1=ABC&Name2=XYZ">送信</A>
</BODY>
</HTML>

このHTMLではハイパーリンクされた「送信」をクリックすると、”HTMLの<FORM>タグを使って起動する”のフォームで「入力1:」にABC、「入力2:」にXYZと入力したことと同等になります。URLの指定方法は、「ブラウザでURLにCGIスクリプトを直接入力する」での解説と同じです。


[サンプル表示]
 

HTMLのイメージ<IMG>タグを使って起動する

この方法はよくアクセスカウンタなどに使われています。通常は<IMG>タグのSRC属性には、画像ファイルを指定しますが、CGIスクリプトを指定するとCGIの出力で置き換えられます。
ここではCGIスクリプトの内容については触れませんが、"Num=数字"を指定するとその画像を返します。
 
img.html
<HTML>
<HEAD>
<TITLE>CGIの起動サンプル(&lt;IMG>タグ)</TITLE>
</HEAD>
<BODY>
<IMG SRC="/cgi-bin/number.cgi?Num=1">
<IMG SRC="/cgi-bin/number.cgi?Num=2">
<IMG SRC="/cgi-bin/number.cgi?Num=3">
<IMG SRC="/cgi-bin/number.cgi?Num=4">
<IMG SRC="/cgi-bin/number.cgi?Num=5">
<IMG SRC="/cgi-bin/number.cgi?Num=6">
<IMG SRC="/cgi-bin/number.cgi?Num=7">
<IMG SRC="/cgi-bin/number.cgi?Num=8">
<IMG SRC="/cgi-bin/number.cgi?Num=9">
<IMG SRC="/cgi-bin/number.cgi?Num=0">
</BODY>
</HTML>
number.cgi
#!/usr/bin/perl
#
# number.cgi
#
# (C) Kaoru Fujita
#

use lib './lib';
require 'util.pl';

#
# 定数
#
$type = 'gif';

*data = parseInput();

$number = $in{'Num'};

# イメージファイルのオープン
open(IMG, "images/$number.$type") or
        exitError(qq(ファイル $number.$type がオープンできません。));

# Windows のようにバイナリとテキストを区別する場合は
# テキストモードでは \r\n が \n に変換されてしまうのを
# 避ける。UNIX では意味がない。
binmode IMG;
binmode STDOUT;

# イメージの出力
print qq(Content-type: image/$type\n\n);
print while (<IMG>);

# イメージファイルのクローズ
close(IMG);

exit(0);

#-- End of number.cgi


[サンプル表示]

HTMLのフレーム<FRAME>タグで起動する

<FRAME>タグのSRC属性でCGIを指定することもできます。
 
frame.html
<HTML>
<HEAD>
<TITLE>CGIの起動サンプル(&lt;FRAME>タグ)</TITLE>
</HEAD>
<FRAMESET ROWS="50%,*">
        <FRAME SRC="/cgi-bin/hogehoge.cgi?Name1=ABC&Name2=XYZ">
        <FRAME SRC="/cgi-bin/hogehoge.cgi?Name1=123&Name2=789">
</FRAMESET>
<BODY>
</BODY>
</HTML>


[サンプル表示]

SSIを使って起動する

WebサーバでSSI(Server Side Include)が利用できる場合は、CGIの出力をHTML中に埋め込むことができます。よくアクセスカウンタなどに用いられています。
 
ssi.html
<HTML>
<HEAD>
<TITLE>CGIの起動サンプル(SSI)</TITLE>
</HEAD>
<BODY>
<!--#exec cmd="hoge.cgi"-->
</BODY>
</HTML>

[サンプル表示]

JavaScriptのhrefオブジェクトを使って起動する。

JavaScriptのdocument.location.hrefオブジェクトにCGIスクリプトのURLを指定して起動することができます。この例では、javascript.htmlがロードされるとすぐにCGIを実行して結果が表示されます。
 
javascript.html
<HTML>
<HEAD>
<TITLE>CGIの起動サンプル(JavaScript)</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function doCGI(url)
{
        document.location.href = url;
}
//-->
</SCRIPT>
</HEAD>
<BODY onLoad="doCGI('http://localhost/cgi-bin/hogehoge.cgi?Name1=ABC&Name2=XYZ')">
</BODY>
</HTML>


[サンプル表示]