訪問者のアクセスログ(ip)を取得する

cookieのvalueはGAっぽくします。KeyはAccessLogLDとのことでALID。

$min = 100000000;
$max = 999999999;
$value = "GA1." .rand($min, $max).".".rand($min, $max);

$valueは以下のようになります。
GA1.835471614.729296551

テキストファイルに書き込むので、brではなく\nをつかいます。

$min = 100000000;
$max = 999999999;
$value = "GA1." .rand($min, $max).".".rand($min, $max);

if(empty($_COOKIE['ALID'])){
	$time=date("Y/m/d H:i:s");
	$ip = $_SERVER['REMOTE_ADDR'];
	$hostname = @gethostbyaddr($ip);
	$log = $time ." ".$ip." ".$hostname."\n";

	$fp =@fopen('log.txt','a') or die("ファイルを取得できません");
		if(flock($fp,LOCK_EX)){
			fwrite($fp,$log);
		}
		flock($fp, LOCK_UN);
setcookie("ALID",$value, time()+1);
}

log.txt
2018/03/18 19:21:55 192.168.33.1 192.168.33.1

以下のように書くと、最新のデータが一番上にきます。

$content = file_get_contents('log.txt');
	$fp =@fopen('log.txt','w') or die("ファイルを取得できません");
		if(flock($fp,LOCK_EX)){
			fwrite($fp,$log.$content);
		}
		flock($fp, LOCK_UN);

log.txtで取得するログの数を制限したい場合は、fgetsで1行ずつ読み込めばOKですね。

$limit = 10;

echo $content;
$min = 100000000;
$max = 999999999;
$value = "GA1." .rand($min, $max).".".rand($min, $max);

if(empty($_COOKIE['ALID'])){
	$time=date("Y/m/d H:i:s");
	$ip = $_SERVER['REMOTE_ADDR'];
	$hostname = @gethostbyaddr($ip);
	$log = $time ." ".$ip." ".$hostname."\n";

    $fp = fopen('log.txt', 'r');
	for($i=0;$i <$limit;$i++){
		$content .= fgets($fp);
	}
	fclose($fp);

	$fp =@fopen('log.txt','w') or die("ファイルを取得できません");
		if(flock($fp,LOCK_EX)){
			rewind($fp);
			fwrite($fp,$log.$content);
		}
		flock($fp, LOCK_UN);
setcookie("ALID",$value, time()+1);
}

2018/03/18 20:25:06 192.168.33.1 192.168.33.1
2018/03/18 20:25:00 192.168.33.1 192.168.33.1
2018/03/18 20:24:59 192.168.33.1 192.168.33.1
2018/03/18 20:24:57 192.168.33.1 192.168.33.1
2018/03/18 20:24:53 192.168.33.1 192.168.33.1
2018/03/18 20:24:28 192.168.33.1 192.168.33.1
2018/03/18 20:23:26 192.168.33.1 192.168.33.1
2018/03/18 20:23:18 192.168.33.1 192.168.33.1
2018/03/18 20:23:13 192.168.33.1 192.168.33.1
2018/03/18 20:22:14 192.168.33.1 192.168.33.1
2018/03/18 20:21:45 192.168.33.1 192.168.33.1