ポンクソフト

アクセス解析1 - PHPでアクセスカウンタ&解析

前ページ PHPでアクセスカウンタ&解析 TOP 次ページ

目次

  1. PHPでアクセスカウンタ&解析
  2. テキストカウンタ
  3. 画像カウンタ
  4. アクセス解析1
  5. アクセス解析2
  6. アクセス解析3
  7. アクセス解析4

アクセス解析

アクセス解析とは、ページのアクセス状況を解析してグラフなどで統計を取ることです。取得できる情報には以下のようなものがあります。
-アクセス日時
-OS・ブラウザの種類・バージョン
-IPアドレス・ホスト名
-どのページのリンクから来たか(リファラ)

ページの作成

まずカウンタを表示するページを作成します。page1.php を開き
あなたは<?php require "counter1.php" ?>人目のお客様です。
の部分を
あなたは<?php require "counter3.php" ?>人目のお客様です。
に書き換えて「page3.php」という名前でサーバにアップしてください。

カウンタプログラムの作成

次にアクセスカウンタのプログラムを作成します。以下のソースを入力してください。
<?php
// アクセスカウンタ3

if ($_GET['log'] == 'yes') {
  print "<html><body>\n";
  $logs = file("log.txt");
  foreach ($logs as $l) print "$l<br>\n";
  print "</body></html>\n";
  exit();
}

$fp = @fopen("counter3.txt", "r+") or die("Counter Error");
flock($fp, LOCK_EX);
$count = fgets($fp);
$count++;
rewind($fp);
fputs($fp, $count);
fclose($fp);

$log = date("Y/m/d H:i:s") . "\t";
$log .= $_SERVER['HTTP_USER_AGENT'] . "\n";
$fp = @fopen("log.txt", "a") or die("Log Error");
flock($fp, LOCK_EX);
fputs($fp, $log);
fclose($fp);

print "<a href='counter3.php?log=yes'>$count</a>";
?>
入力が終わったら「counter3.php」という名前でサーバにアップします。

カウンタファイルの作成

次に先ほどと同じくアクセスカウントを保存するためのファイルを作成します。新規テキストファイルを作成し
0
とだけ記述して(改行は入れない)、「counter3.txt」という名前でサーバにアップします。その後、FTPソフトの「属性変更」から「その他」に書込許可属性を与えます。

ログファイルの作成

次にアクセス解析の結果を保存するためのログファイルを作成します。新規テキストファイルを作成し何も書かずに「log.txt」という名前でサーバにアップします。その後、FTPソフトの「属性変更」から「その他」に書込許可属性を与えます。

実行

以上の用意ができたら、page3.php をブラウザでアクセスしてみてください。カウンタのリンクをクリックすると、アクセス解析の結果が表示されます。

counter3.php ソースの解説

if ($_GET['log'] == 'yes') {
下で記述しますが、counter3.php の GET パラメータ log に yes という文字列が入っていたときにアクセス解析のログを表示するモードになります。
$logs = file("log.txt");
ログファイル log.txt の内容を一行ずつ配列にして $logs に格納します。
foreach ($logs as $l) print "$l<br>\n";
$logs 配列の要素をひとつずつ $l に代入してそれを画面に出力しています。
exit();
ログ表示モードの場合はここで終了します。
$fp = @fopen("counter3.txt", "r+") or die("Counter Error");
flock($fp, LOCK_EX);
$count = fgets($fp);
$count++;
rewind($fp);
fputs($fp, $count);
fclose($fp);
上記の部分は counter1.php とファイル名を除いて全く同じです。counter3.txt のカウントをひとつ増やして書き込みしています。
$log = date("Y/m/d H:i:s") . "\t";
アクセスログを作成するために、まず date 関数によって現在日時を変数 $log に格納します。さらに、ログの項目ごとの境界を明確にするためにタブで区切ります。
$log .= $_SERVER['HTTP_USER_AGENT'] . "\n";
ユーザーエージェントを $log に追加しています。ユーザーエージェントとは、OSやブラウザの種類やバージョンが入るサーバの環境変数です。
$fp = @fopen("log.txt", "a") or die("Log Error");
ログファイルをアペンド(追加)モードでオープンします。アペンドモードにすることによって、ログの末尾に追加して行くことができます。
fputs($fp, $log);
今回のアクセス記録をログファイルに書き出しています。
print "<a href='counter3.php?log=yes'>$count</a>";
カウンタのリンクがクリックされたときは、GET パラメータ log に yes を格納して自分自身を呼び出しています(ログ表示モードになる)。
前ページ PHPでアクセスカウンタ&解析 TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0