Done
<?php
define('FILE_NAME', 'list.dat');
define('MAX_BREAK', 30);
function write($file, $ip, $time)
{
fwrite($file, $ip . '|' . $time . "\n");
}
$new_ip = /*$REMOTE_ADDR*/ $_SERVER['REMOTE_ADDR'];
$file = fopen(FILE_NAME, 'w+');
flock($file, LOCK_EX | LOCK_SH);
$array = file(FILE_NAME, FILE_IGNORE_NEW_LINES);
$contains = false;
foreach ($array as $record)
{
$values = explode('|', $record);
$ip = $values[0];
$time = $values[1];
if ($ip == $new_ip)
{
$time = time();
$contains = true;
}
if (time() - $time < MAX_BREAK)
write($file, $ip, $time);
}
if (!$contains)
write($file, $new_ip, time());
flock($file, LOCK_UN);
fclose($file);
?>
$ arrayは空ですが、fileには1行が含まれているため、この配列は空ではありません。 アイデアは何故ですか?関数ファイルが空の配列を返すのはなぜですか?
彼はファイルに書き込むために 'fopen()'を呼び出しています。 – BoltClock