ミスティーネットPerl・CGI講座 パール・CGIレッスン MISTY-NETレンタルサーバー・PERLプログラミング講座 CGI&PERL究極のレシピ

管理運営:有限会社ミスティーネット

| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問合せ | ミスティーネット | リンク集 |
Perl言語リファレンス

ミスティーネットPerl・CGI講座/基本編
ミスティーネットPerl・CGI講座/基本編
始めに 始めに
変数について 変数について
処理の制御1 処理の制御1
処理の制御2 処理の制御2
配列の処理 配列の処理
ハッシュの処理 ハッシュの処理
数値の扱い 数値の扱い
文字の扱い 文字の扱い
時間の処理 時間の処理
サブルーチン サブルーチン
ファイルの処理 ファイルの処理
ディレクトリの処理 ディレクトリ処理
CGIについて CGIについて
漢字の処理 漢字の処理
    (文字コード)
Cookie の処理 Cookie の処理
正規表現1 正規表現1
正規表現2 正規表現2
演算子について 演算子について
ライブラリ ライブラリ
デバッグ デバック
環境変数について 環境変数
ミスティーネットPerl・CGI講座/基本編

ミスティーネットPerl・CGI講座/応用編
ミスティーネットPerl・CGI講座/応用編
カウンターを作ってみよう カウンターを
     作ってみよう!
ミニゲームを作ってみよう ミニゲームを
     作ってみよう!
ミスティーネットPerl・CGI講座/応用編

ミスティーネットPerl・CGI講座/WEB講座一覧
ミスティーネット
HTML講座 HTML講座
スタイルシート講座 スタイルシート講座
JavaScript講座 JavaScript講座
UNIXコマンド講座 UNIXコマンド講座

ミスティーネット
ラブラブメールでツーショット

人気サイトランキング

人気サイトランキング

8daysランキング

  HOME >> カウンターを作ってみよう!
  1. カウンターの仕組み
  2. CGI方式のカウンター
  3. SSI <exec> 方式のカウンター
  4. SSI <include> 方式のカウンター
■ カウンターの仕組み
カウンターの仕組みは非常に簡単で、現在のカウント数をファイルから読み込み、それに1を加えた数を再度ファイルに保存し、表示します。

カウンターには大まかに下記の3種類があります
○ すべてCGIで動作するカウンター
○ SSIの <exec> 方式を利用するカウンター
○ SSIの <include> 方式を利用するカウンター
すべてCGIによるカウンターは、実際には余り使われませんが、仕組みがシンプルなので、 後に説明するSSI方式のカウンターを理解するのに役立ちます。

[CGI方式のカウンターの動作イメージ]

CGI方式のカウンターイメージ

─→ カウンターサンプル



[SSI方式のカウンターの動作イメージ]

SSI方式のカウンターイメージ

─→ カウンターサンプル



■ CGI方式のカウンター
最も基本的なCGI のみのカウンターです。
この方法では、表示するHTMLをすべてCGI内に記述しなければならない為、あまり使われませんが、SSIのカウンターもこれが基本となっています。


[count.cgi]
#!/usr/local/bin/perl

$logfile = "./count.dat";
open(DATA, "+<$logfile");
flock(DATA, 2);
chomp($count = <DATA>);
$count++;
seek DATA, 0, 0;
print DATA "$count\n";
close(DATA);

$count = sprintf("%04d", $count);

print "Content-Type: text/html\n\n";
print <<END_HTML;
<html>
<body>
<h3>$count カウント</h3>
</body>
</html>
END_HTML
exit;















カウントファイルを指定
カウントファイルのオープン
ファイルロックを設定する
アクセス数を取得
アクセス数に1加える
記録位置をファイルの先頭に移動
現在のアクセス数を記録
カウントファイルのクローズ

カウント数のフォーマット

アクセス数の表示
カウント数の読み込み、書き込み、表示までを、すべて1つのCGIで行ないます。
SSI 方式のカウンターでは、カウント数の読み書きはCGIで行ないますが、表示はSSIを使って行ないます。




■ SSI <exec> 方式のカウンター
SSI を使ったカウンターの場合には、既存のHTML内の好きな場所にカウンターを組み込むことができます。 ブラウザーで 「count.shtml」 を呼び出すと現在のアクセス数が表示されます。
ブラウザーの更新ボタンを押すごとに、カウント数が1づつ上がって行きます。

*注:SSIに対応していないサーバーではこのカウンターはご利用いただけません。
SSIの対応につきましては、ご利用のレンタルサーバーや、サーバー管理者までお問い合わせください。



[count.cgi]
#!/usr/local/bin/perl

$logfile = "./count.dat";
open(DATA, "+<$logfile");
flock(DATA, 2);
chomp($count = <DATA>);
$count++;
seek DATA, 0, 0;
print DATA "$count\n";
close(DATA);

printf("%04d", $count); ← カウント数をSSIへ返す
exit;
このCGIには、アクセス数を表示する機能がついていません。
SSI方式のカウンターでは、「shtml」 ファイル内からCGIファイルを呼び出してその返り値を表示します。


[count.shtml]
<html>
ミスティーネットPerl・CGI講座 − MISTY-NET − <body>
<!--#exec cmd="./count.cgi"-->      ← CGIファイルの呼び出し
</body>
</html>
SSI方式では、「shtml」 ファイル内の好きな場所にカウンターを表示できる為、CGIのみのカウンターよりも自由度が高くなっています。



■ SSI <include> 方式のカウンター
ご利用されているサーバーの設定によっては、「exec」 方式のSSIを利用できない場合があります。
この場合には 「include」 方式でカウンターを表示することが出来ます。


[count.cgi]
#!/usr/local/bin/perl

$logfile = "./count.dat";
open(DATA, "+<$logfile");
flock(DATA, 2);
chomp($count = <DATA>);
$count++;
seek DATA, 0, 0;
print DATA "$count\n";
close(DATA);

printf("%04d", $count); ← カウント数をSSIへ返す
exit;
このCGIの内容は、「exec」 方式のものと同じです。

[count.shtml]
<html>
ミスティーネットPerl・CGI講座 − MISTY-NET − <body>
<!--#include virtual="./count.cgi"-->      ← CGIファイルの呼び出し
</body>
</html>
CGIの呼び出し方法が、「exec cmd」 から 「include virtual」 に変わっています。





| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問い合わせ | ミスティーネット |
(C)Copyright 2002 ミスティーネット Inc. All Right Reserved.