トップページ | 利用規定
  CGIでアクセスカウント

(株)友林堂
(株)友林堂



特徴

  • ビッグローブをはじめとするWEBサーバでは、CGIは開放していてもSSIは禁止しています。 これを使えば、アクセスカウンタをHTMLに貼り付けたり、アクセス解析用のログをとったり、応用は様々です。
  • HTMLはその拡張子(.htmや.html)やMIME形式のヘッダによって、サーバ側もブラウザ側もそれがHTMLであることを認識して タグを処理して表示するわけです。
  • CGIでHTMLを出力する場合は、これをスクリプト内に書いてやることで、ブラウザ側でも タグを処理して、同じように表示するようにできます。
  • CGIで表示されるわけですから、HTMLを出力すると同時にいろいろな処理をさせることが できます。
  • ここではアクセスカウント機能を入れた方法を紹介します。
  • しかし、例えば「.../~rescue/」というURLでは「index.html」を読み込むわけです。 ということは、ホームページの名前を「index.cgi」に変えなければならず、いままで「.../~rescue/」で リンク(公開)している方は「.../~rescue/index.cgi」にするなど面倒だと思います。そこで、 殆どの方が使っていると思われるネットスケープの、フレーム機能を使って擬似的に「index.html」を 表現させる方法をとってみました。
  • フレームを応用した処理なので、フレームについて十分理解してご利用ください。



設置方法

index.html -------> フレームを使って擬似的に処理(いままで通りここにリンクする)
index.txt --------> ここにはいままで「index.html」に書いていた内容
index.cgi --------> 「index.txt」を読み込んでHTMLを出力するCGIスクリプト
index.count ------> アクセスカウント数を入れるファイル(あらかじめ数字を入れておきます)

index.html

<html><head><title>
**のホームページ
</title></head>
<frameset rows="100%,*">
<frame src="index.cgi">
<noframes>
<body>
<a href="index.cgi">こちらから入ってください。</a><p>
</body>
</noframes>
</frameset>
</html>

index.txt

<html><head><title>
**のホームページ
</title></head>
<body>
<h1>ようこそ**のホームページへ</h1>
このページには<!--count-->のアクセスがありました。<p>
<a href="****" target="_top">リンク文には必ずターゲット文を入れること</a>
</body>
</html>

index.cgi

#!/usr/local/bin/perl
# ↑このパスはあなたの環境に合わせて設定すること

# HTMLのファイル名を指定する

  $html = "index.txt";

# アクセスカウント数を入れるファイルを指定する
# 最初はあらかじめ「0」を必ず入れておくこと
# HTMLにはカウンタ表示する場所に以下の文字列を書いておくこと
#
#   このページには<!--count-->のアクセスがありました。

  $count_file = "index.count";


# HTMLを読み込んで配列に代入
  open(IN,"$html") || die "error\n";
  @lines = <IN>;
  close(IN);

# 今までのカウンタ数を読み込んで変数に代入
  open(DATA,"$count_file") || die "error\n";
  while(<DATA>){ $count = $_; }
  close(DATA);

# WWWに出力
  print "Content-type: text/html\n\n";
  foreach $line (@lines) {
    $line =~ s/<!--count-->/$count/g; # アクセスカウント数を入れ込む
    print "$line";
  }

# アクセスカウント処理
  $count++;
  open(OUT,">$count_file") || die "error\n";
  print OUT "$count";
  close(OUT);

index.count(カウント開始したい数字)

0

  • HTMLはバイナリモードでもアスキーモードでもいいのですが、ここでは「index.txt」は テキストファイルとして扱っていますので、アスキーモードで処理します。
  • ページの内容に<!--count-->を書くことで、その場所にカウントされた数字が挿入されます。
  • パーミッションの設定も忘れずに。「index.cgi」は755、「index.count」は666、その他は 644です。


Powered by CGI RESCUE(R)