トップ > CGI(Perl)の解説

※ここの解説は、後になるほど省略されている場合がありますのでできるだけ順番に読んでください。

■ 15.自作アクセスカウンタ

それでは、この「CGI(Perl)の解説」のまとめとしてアクセスカウンタを自作してみましょう。
難しそうに思えるかもしれませんが、思ったよりも簡単です。
ただし、最低限の機能しかありませんので、より高度なものを望まれる方は、専門書などでさらに力を付けてください。

※注意
ただ、このアクセスカウンタはSSI方式を使用しています。
したがって、サーバーでテストする場合は、SSIを許可しているサーバーでないと、正常に表示されません。

まず、アクセスカウンタは何をしているかを知らないといけません。

  1. 現在記憶しているカウンタ値を読み込んできます。
  2. その数値に1を加算します。
  3. 加算後の数値を元の場所に書き出します。
  4. その後、そのカウンタ値を表示します。

以上のことをPerlで記述します。

それでは、順を追って説明して行きます。

■ アクセスカウンタの作成

それでは、まず、カウンタ値を記憶するためのファイルが必要になります。
そこで、テキストエディタなどで、次のようにカウンタの初期値を入力したものを作成します。

0

この文章を「count.dat」と名前を付けて、「cgi-bin」フォルダに保存しておきます。

次にアクセスカウンタのCGIを作成します。
上記のカウンタ値を読む処理は次のようになります。

open(FILE,"<count.dat"); $count = <FILE>; close(FILE);

このカウンタ値に1加算するにはインクリメント演算子を使用して次のように記述します。

$count++;

そして、この値を元のファイルに書き出すには次のように記述します。

open(FILE,">count.dat"); print FILE $count; close(FILE);

次に、このカウンタ値を表示するには次のように記述します。

print "Content-type:text/html\n\n"; print $count;

したがって、サンプルは次のようになります。

【記述サンプル】
#!/usr/bin/perl open(FILE,"<count.dat"); $count = <FILE>; close(FILE); $count++; open(FILE,">count.dat"); print FILE $count; close(FILE); print "Content-type:text/html\n\n"; print $count;

■ アクセスカウンタの実行

さあ、これを前回と同様にエディタなどで作成し、「count.cgi」と名前を付けて、「cgi-bin」フォルダに保存します。

実行方法は、今までと同じです。
アドレスには「http://127.0.0.1/cgi-bin/count.cgi」と入力します。

どうですか?正常に表示されましたか?

それでは、このカウンタをHTML文書に埋め込んでみましょう。

■ HTML文書に表示

上記のようなアクセスカウンタHTML文書から呼び出す場合は次のように記述します。

<!--#include virtual="count.cgi" -->

※注意
サーバーによっては、この呼び出しが使用できない場合があります。
その場合は、「HP作成の予備知識」−「13.CGIの結果をHTML文書に埋め込みたい。(SSI)」をご参照下さい。

カウンタを表示したい場所に上記の記述を追加します。

例えば、アクセスカウンタを呼び出すHTML文書は次のように記述します。

【記述サンプル】
<HTML> <HEAD> <title>アクセスカウンタのテスト</title> </HEAD> <BODY TEXT="purple" BGCOLOR="#99ff99"> あなたは、 <!--#include virtual="count.cgi" --> 人目のご訪問者です。 </BODY> </HTML>

この文章をエディタなどで作成し、「count.html」と名前を付けて、「cgi-bin」フォルダに保存しておきます。
ここでの、注意点は、ファイルの拡張子を必ず、「shtml」にして下さい。
そうしないと、カウンタは表示されません。

SSIの呼び出しについては、このサイトのトップページ、「HP作成の予備知識」−「13.CGIの結果をHTML文書に埋め込みたい。(SSI)」も参照してください。

■ HTML文書からのアクセスカウンタの実行

実行方法は、今までと同じです。
アドレスには「http://127.0.0.1/cgi-bin/count.html」と入力します。

どうですか?正常に表示されましたか?

■ アクセスカウンタの実行がうまくいかないケース1

サーバーによっては、「cgi-bin」フォルダ内の「count.html」では、CGI(SSI)が、呼び出せない場合があります。

その場合は、ファイルを次のように設置してください。
括弧内はパーミッションです。

public_html(自分のホームページ)
  ├count.html
  └cgi-bin(755)
    ├count.cgi(755)
    └count.dat(666)

そして、呼び出し方法を次のように変更します。

<!--#include virtual="./cgi-bin/count.cgi" -->

■ アクセスカウンタの実行がうまくいかないケース2

「shtml」から「cgi」を呼び出す場合、「include virtual」の方法を説明しましたが、この呼び出しが使えないサーバーもあります。
その場合は、このサイトのトップページ、「HP作成の予備知識」−「13.CGIの結果をHTML文書に埋め込みたい。(SSI)」も参照してください。

■ アクセスカウンタの実行がうまくいかないケース3

「shtml」のページに不要な文字列「Content-type:text/html」が表示される場合は、下から2行目を次のように「#」でコメントにします。

#print "Content-type:text/html\n\n";


page update:2010/01/23 20:32

Copyright (c) 2000-2009, all Rights Reserved & Produced by atom