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