我想要一个只记录以前没有记录到文本文件的IP地址的脚本。我希望能够在不使用MySQL或任何其他数据库的情况下完成此任务。
IP的存储方式如下:
IP: 127.0.0.1 15 May, 2015, 12:01 pm
基本上,我不希望日志看起来像这样:
IP: 127.0.0.1 15 May, 2015, 12:01 pm
IP: 127.0.0.1 15 May, 2015, 12:08 pm
IP: 127.0.0.1 15 May, 2015, 12:17 pm
现在,这是我的PHP代码:
$check = fopen("ip.txt", "r");
$ip = $_SERVER['REMOTE_ADDR'];
$exists = FALSE;
while ($ln = fgetcsv($check, 200, "\n") !== FALSE) {
if ($ln[1] == $_SERVER['REMOTE_ADDR']) {
$exists = TRUE;
}
}
fclose($check);
if ($exists == TRUE) {
// do nothing
}
else if ($exists == FALSE) {
$file = fopen("ip.txt", "a");
$date = date("j F, Y, g:i a");
$string = "IP: " . $ip . " " . $date . "\n";
fwrite($file, $string);
fclose($file);
}
以上内容目前无效,我的ip.txt
文件中有许多重复的IP地址。任何帮助将不胜感激。
答案 0 :(得分:1)
$ln = fgetcsv($check, 200, "\n") !== FALSE
由于比较(!==)具有更高的优先级然后赋值,上面的行等同于以下内容:
$ln = (fgetcsv($check, 200, "\n") !== FALSE)
虽然您可能希望它读取类似内容:
($ln = fgetcsv($check, 200, "\n")) !== FALSE
注意:我没有检查其余的代码。