アクセスログを簡易的に作成
// 有効な場合は書き込まない if (empty($_COOKIE['acsess'])){ //現在の日付を取得 $time = gmdate("Ymd",time()+60*60*9); //現在の時刻を取得 $time2 = gmdate("H:i",time()+60*60*9); //アクセスページを取得 //$access_url = 'http://' . $_SERVER[HTTP_HOST] . $_SERVER[REQUEST_URI]; //IPアドレスを取得 $ip=getenv("REMOTE_ADDR"); $ip=gethostbyaddr(getenv("REMOTE_ADDR")); //ホスト情報を取得 $host = getenv("REMOTE_HOST"); //実行しているファイル名を取得 $self=$_SERVER[PHP_SELF]; //リファラー(リンク元)を取得 $refur = $_SERVER['HTTP_REFERER']; //使用ブラウザ $ua=$_SERVER[HTTP_USER_AGENT]; $accessLog = $time." ".$time2."".$authuser." ".$ip." ".$host." ".$refur." ".$ua."\n"; // ログファイルの内容を取得 $lines = file('./log.cgi'); $fp = @fopen('./log.cgi', 'w') or die("ファイルを取得できません!"); // 俳他的ロック if (flock($fp, LOCK_EX)) {// 書き込み fwrite($fp, $accessLog); // 50行まで登録 if(count($lines) > 50 { $max_i = 50;} else { $max_i = count($lines); } for ($i = 0; $i < $max_i; $i++) { fwrite($fp, $lines[$i]); } } // ロック解除 flock($fp, LOCK_UN); // 有効時間(1800)30分 setcookie("access", 1, time() + 1800); }
こんな感じで、サーバーのログが取得できました。 あとは、解析用のプログラムファイルを作成するのですが、ブラウザ別やホスト別、日付別にいろいろやろうとすると、これが結構たいへん。 とりあえず、無料の解析スクリプトに上記で得たログを読み込ませていますが、個人的には『ユーザー別(ログインしてきたユーザーとその人数)※重複ユーザーは排除』も取得できるようなプログラムをつくりたいんです。 重複ユーザーをカウントしないようにするには、クッキーを使う方法もあるということだったので、近いうちに試してみよう。