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