使用PHP记录唯一的IP地址

时间:2015-05-15 23:06:55

标签: php

我想要一个只记录以前没有记录到文本文件的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地址。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

$ln = fgetcsv($check, 200, "\n") !== FALSE

由于比较(!==)具有更高的优先级然后赋值,上面的行等同于以下内容:

$ln = (fgetcsv($check, 200, "\n") !== FALSE)

虽然您可能希望它读取类似内容:

($ln = fgetcsv($check, 200, "\n")) !== FALSE

注意:我没有检查其余的代码。