IE6-8 is Not Supported

PHP を使って簡易的なログの取得をしてみる

PHP とテキストファイルを使った超簡易的なログ取得。
こちらの記事 を元に少しだけ改良して作ってみました。

基本的な作りは同じですが、デフォルトタイムジーンを日本にセット、日付ごとの保存 + アクセスごとの改行を加えてあります。

<?php
if (empty($_COOKIE['cookie'])) {
	// 日付の取得
	date_default_timezone_set('Asia/Tokyo');
	$time = date('Y-m-d H:i:s');
	// URLの取得
	$requestUrl = $_SERVER['REQUEST_URI'];
	// リクエストメソッドの取得
	$requestMethod = $_SERVER['REQUEST_METHOD'];
	// ブラウザ情報の取得
	$requestbrowser = $_SERVER['HTTP_USER_AGENT'];
	// IPアドレスの取得 (::1は自分を示す)
	$requestIp = $_SERVER['REMOTE_ADDR'];
	// ホスト名の取得
	$hostName = @gethostbyaddr($requestIp);
	// リファラーの取得
	$httpReferer = $_SERVER['HTTP_REFERER'];
	if (!isset($httpReferer)) { $httpReferer = 'NULL'; }
	// Log 書き込み
	$log = 'Date: '.$time."\r\n".'URL: '.$requestUrl."\r\n".'Request: '.$requestMethod."\r\n".'Browser: '.$requestbrowser."\r\n".'IP Address: '.$requestIp."\r\n".'Hostname: '.$hostName."\r\n".'Referer: '.$httpReferer;
	$fp = @fopen('./'.date('Y-m-d').'.txt', 'a') or die('Not Connected');
	if(flock($fp, LOCK_EX)) {
		fwrite($fp, $log."\r\n\r\n");
	}
	flock($fp, LOCK_UN);
	setcookie('cookie', 1, time() + 1);
}
?>

もちろん詳細なログは Google アナリティクスを使ったほうがいいですが、PHP が動くサーバーなら簡単に導入できて IP も取得できる点はわりと便利。ただアクセス数の多いサイトには不向きなので、使うならログを取りたいページだけに書くのが無難かと思われます。

Reference: 【php】ログの取得 ~クライアントの情報をテキストファイルに出力する~ – FOR SE

ads by google