.
.
.
.
.
TOPページ(Alt+B)
.
CGIってなあに?

CGIとはCommon Gateway Interfaceの略で、Webサーバー上でプログラムを使って処理した結果を表示させる機能のことです。
CGIスクリプトには主にPerlという言語を使います。また、呼び出し時の拡張子は.cgiです。Perlでは最初にパスの指定を行いますが、多くの場合、/usr/local/bin/perlとなります。これ以外のパスをWebサーバーが指定している場合はPerlの先頭行を書き換えてやる必要があります。

それでは、1例としてアクセスカウンターを表示させるCGIを動作させてみましょう。  ・このCGIのソース

#!/usr/local/bin/perl        
#↑ここでPerlのパスを指定

# ********************************************************************
# アクセスカウンター
# File name: account.cgi
# ******************************************************************** 

# アクセス数の合計を入れておくデータファイルを指定する
$datafile = "account.txt";
# カウンターの桁数を指定する
$max = 5; #この桁数にHTMLファイルのIMGタグの桁数を合わせる

# ---------------------- ユーザー設定はここまで ------------------------

if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'});
} else { $formdata = $ENV{'QUERY_STRING'}; }

@pairs = split(/&/,$formdata);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);


(途中略)


# アクセス数を、一桁の数字に分割するサブルーチン
sub split_number {
local($n) = @_;
local(@n) = split(//,$n);
while ($#n + 1 < $max) {
@n = (0,@n);
}
@n;
}

上記はアクセスカウンターをホームページに表示させる一般的なPerlのCGIスクリプトですが、具体的にどう使用するか順を追って説明していきます。

まず入手したaccount.cgi.txtの名前をaccount.cgiに変更しましょう。次に、アクセス数の合計を格納しておくデータファイルを作成しておく必要があります。ここではaccount.txtとしましょう。次にCGIが動かせるディレクトリを自分が貰った領域内に作成します。一般的にはcgi-binというディレクトリになります。
FTPソフトを利用して上記で作成したcgi-binディレクトリとその中に入れたaccount.cgiとaccount.txtをASCIIモードで転送します。
次に転送したaccount.cgiとaccount.txtそれぞれについてのパーミッション(属性)を設定してやる必要があります。FFFTPを例にとるとそれぞれのファイルを右クリックして「属性変更」を選択すると以下の画面になります。(パーミッションについての詳しい解説はWhat's UNIX?

FFFTP1

FFFTP2

この画面でそれぞれ.cgiファイルの属性を「755」に.txtファイルの属性を「666」に変更します。(プロバイダから指定があるときは、そちらを優先します。また、プロバイダの指定通りにしないと動かないこともあります。参考までにぷららでは.cgiは「704」、txt、dat等書き込み用ファイルは「664」にしないと動きません。)あとはHTMLファイルの中にパスを指定してやると完了です。カウンタの場合基本的にはパスを指定して、account.cgiの次に?マークを付けてa=数字となります。?マークは呼び出しを意味します。表示数が5桁の場合はa=1〜5まで指定してやります。

<img src="http://www.freeweb.ne.jp/play/vaio0630/cgi-bin/account.cgi?a=1"><img src="http://www.freeweb.ne.jp/play/vaio0630/cgi-bin/account.cgi?a=2"><img src="http://www.freeweb.ne.jp/play/vaio0630/cgi-bin/account.cgi?a=3"><img src="http://www.freeweb.ne.jp/play/vaio0630/cgi-bin/account.cgi?a=4"><img src="http://www.freeweb.ne.jp/play/vaio0630/cgi-bin/account.cgi?a=5">

つまり<img src="http://あなたのホームページアドレス/cgi-bin/cgiファイル名?a=1">となります。

カウンタのパス指定時のポイントは、タグを改行しないことです。改行すると数字が離れてしまう場合があるようです。

どうですか?うまく動作しましたか?
CGIがうまく動作しない場合、次のことを確認してみてください。

・設置したCGIのURLを正しく入力していますか。
・ファイルのパーミッション(属性)を正しく変更していますか。
・CGIの設置方法やスクリプトの文法は間違っていませんか。
・CGIファイル自体に問題はありませんか。(自分用に設定を行った際に消してはいけないところを消してしまったとか)

CGIを動かすためにはもちろんWebサーバーがCGIに対応していなくてはなりません。逆にいえば利用を許可しているプロバイダに加入すればいいことになります。従来までは個人ベースでのWebサイトで少しでも凝ったことをしようとすると、JavaScriptやAppletに頼るしかなかったのですが、これからのi-modeを始めとする携帯電話からのインターネットに対応し、アクセス数を伸ばすためにはブラウザに依存しないCGIがどうしても必要不可欠となります。
CGIを動かすためにはPerl言語とHTMLの知識は避けて通れません。しかしながらプログラマでもない限り、一から書ける必要性はありません。フリーで公開されているスクリプトをカスタマイズできるだけの知識で十分です。ここでは、具体的な設置方法の紹介についてのみ行っていますが、それぞれについては専門書等で勉強してください。

CGIの予備知識へ(Alt+F) TOPページ(Alt+B)

CopyRight (C) 2000-2013 by T.Shiraishi All right reserved 無断転載禁止/リンクフリー