のフリー、シェアCGI・PHPスクリプト・JavaScriptをキーワード、97のカテゴリーから検索できます。スクリプトの登録ご利用は一切無料です。


フリー、シェアCGI・PHPスクリプトをキーワード、96のカテゴリーから検索できます。

 スクリプトをお探しなら当サイトでOK

  •  フリー、シェアのCGI・PHPスクリプトをメインに検索。
  •  ランキングによる評価で人気のスクリプトを紹介。
  •  サンプル(ページ)によるダウンロード前の事前評価。
  •  お気に入りスクリプトへのパーソナルリンクの作成。

 スクリプト登録のメリット

  •  シェアスクリプトでも、掲載は一切無料。
  •  細かなカテゴリー(全97項目)で閲覧者に分かり易く分類。
  •  スクリプトを印象づけるサンプル(ページ)の登録が可能。
  •  ダウンロードランキングの実施による人気度の評価。

当サイトはQ&A掲示板(コミュニティ)の窓口を共有して下さるサイト様を募集しています。

[Q&A掲示板] 共有サイト様募集!

アクセスカウンター機能拡張


それでは、簡易アクセスカウンターに機能を拡張してみましょう。

今回は、前日と今日を比較するめにそれぞれカウンターを表示します。

#!/usr/bin/perl

# カウントデータ
$DATA_COUNT = 'count.dat';

open(DATA, "< $DATA_COUNT");
eval{ flock(DATA, 1); };

# データ更新フラグを偽
$f = 0;

# カウント数取得 と 前回のIPと 日付を取得
($today_count, $yesterday_count, $total, $ip, $day) = split(/\t/, <DATA>);

# 日付取得
(undef, undef, undef, $d, $m, $y) = localtime(time);
# 日付出力形式成型
$today = "$y/$m/$d";
# もし日付が変わっているなら
if($day ne $today) {
   # 日付更新
   $day = $today;
   # 今日のカウンターを昨日へ
   $yesterday_count = $today_count;
   # 今日のカウントを0にセット
   $today_count = 0;

   # データ更新フラグを真
   $f = 1;
}

# もし前回アクセス者のIPと今回のIPが違うなら
if($ENV{'REMOTE_ADDR'} ne $ip) {
   # カウント値加算
   $today_count++;
   $total++;
   $ip = $ENV{'REMOTE_ADDR'};

   # データ更新フラグを真
   $f = 1;
}

close(DATA);

# データ更新フラグが真なら
if($f) {
   open(DATA, "+< $DATA_COUNT") or open(DATA, ">> $DATA_COUNT");
   eval { flock(DATA, 2); };
   seek(DATA, 0, 0);
   print DATA "$today_count\t$yesterday_count\t$total\t$ip\t$day";
   truncate(DATA, tell(DATA));
   close(DATA);
}

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

print "合計:$total\n今日:$today_count\n昨日:$yesterday_count\n";

前回の簡易アクセスカウンターを少し書き換えただけで、機能拡張ができました。

まず、今回は前日比を表示するために今日と昨日そして今日の日付のデータを新たに追加しなければなりません。
それが、$today_count $yesterday_count $day に当たります。
今までの $count は $total へ名称を変更しました。

日付は年と月、日にちだけで十分なのであとの要素は取得しません。

そして、$today に年月日を合わせて代入し、これが データの $day と異なる場合は日付が変わったと判断します。
日付が変わったのなら、本日のカウントを先日のカウントへ移し、本日のカウントはリセットします。
$day も更新することをお忘れなく。

$f (データ更新フラグ)とは、日付が変更されたりカウントが加算された場合など、
データの更新が必要になった場合に真を代入するための変数です。

あとは、カウントの方法とデータの保存方法を書き換えれば、前日比機能付きカウンターが完成します。

この方法を応用すれば、1週間のアクセス比を表示することも可能になります。

scriptEYE