如何让我的PHP脚本记录所有访问者的IP?

时间:2014-07-17 20:26:01

标签: php html logging

我有一个我正在使用PHP编写的脚本,它记录了访问该特定页面的访问者的IP地址。这只是一个原型。我编写的脚本正在运行,但是当它创建包含IP的TXT文件时,它只会执行一行。如何为每位访客添加一条线路,无论他们是重复访问者,我该怎么做呢?我不太确定该怎么做,我是PHP的新手。

这是我到目前为止所做的:

<?PHP
    $ip = getenv("REMOTE_ADDR");
    $date = date("d") . " " . date("F") . " " . date("Y");
    $intofile = $ip . "n" . $date;
    $hfile = fopen("ip-address.txt", "w");
    fwrite($hfile, $intofile);
    fclose($hfile);
?>

<!DOCTYPE html>
<html language="en-us">
    <head>
        <title>IP Address Logging Software</title>

        <link rel="stylesheet" type="text/css" href="Source/Stylesheet/DefaultPage.css" />
        <link rel="stylesheet" type="text/css" href="Source/Stylesheet/DefaultPage.css" />
        <link rel="stylesheet" type="text/css" href="Source/Stylesheet/DefaultPage.css" />

        <script type="text/javascript" src="Source/Javascript/DefaultScript.css"></script>
        <script type="text/javascript" src="Source/Javascript/DefaultScript.css"></script>
        <script type="text/javascript" src="Source/Javascript/DefaultScript.css"></script>
    </head>
    <body language="en-us">
        <?PHP
            $ip=$_SERVER['REMOTE_ADDR'];
            echo "<strong>Your IP Address <em>$ip</em> Has Been Logged</strong>";
        ?>
    </body>
</html>

2 个答案:

答案 0 :(得分:2)

$hfile = fopen("ip-address.txt", "w");

请参阅fopen的手册:

  

&#39; W&#39;仅供写作;将文件指针放在开头   该文件并将文件截断为零长度。如果文件没有   存在,试图创造它。

每次打开文件时都会被截断。请改用'a+'或其他将打开文件并附加的文件,而不是删除已存在的文件。

答案 1 :(得分:0)

或者使用file_put_contents(http://php.net/manual/en/function.file-put-contents.php)。它基本上是一个辅助函数,与调用fopen()fwrite()fclose()一样。

要确保附加内容,只需添加FILE_APPEND标记:

file_put_contents('file.txt', 'Hello World', FILE_APPEND);