如何将访问我网站的人的 IP 保存到 logs.txt?

How do I Save IP's of Those Who Visit My Website to logs.txt?

我有一个网站,我想用它来记录访问者的 ip。现在,我想我有一些代码可以完成这项工作(我从 here 获得):

<?php  
    function getIPAddress() {  
    //whether ip is from the share internet  
     if(!emptyempty($_SERVER['HTTP_CLIENT_IP'])) {  
                $ip = $_SERVER['HTTP_CLIENT_IP'];  
        }  
    //whether ip is from the proxy  
    elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR'])) {  
                $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];  
     }  
//whether ip is from the remote address  
    else{  
             $ip = $_SERVER['REMOTE_ADDR'];  
     }  
     return $ip;  
}  
$ip = getIPAddress();  
echo 'User Real IP Address - '.$ip;  
?>  

我希望它最终做的是将访问我网站的每个人的 IP 地址和日期保存到 log.txt 文件中。我认为您使用fwrite命令来执行此操作,但我真的不知道。 我对 php 一无所知,所以我正在寻找一本书(如果有任何建议,我们将不胜感激)。 php 有很多看似过时或直接错误的教程,我很乐意避免这些。

感谢任何帮助!

$ip = getIPAddress(); 

$handle = fopen("logs.txt","a");

$text = date("Y-m-d H:i:s")."\t".$ip;

fwrite($handle,$text);
fwrite($handle,PHP_EOL);

fclose($handle);

echo 'User Real IP Address - '.$ip;

解释:

  1. 获取IP地址。
  2. 使用追加模式打开句柄 (fopen)
  3. 创建您要记录的文本(此时日期格式和 IP 地址)
  4. 用 fwrite 写入该文本。
  5. 关闭在步骤 2 中创建的句柄

检查你的logs.txt

$ip = getIPAddress();
$logFile = 'log.txt';
$log = file_get_contents($logFile);
$log .= "User Real IP Address - ".$ip."\n";
file_put_contents($log);

file_get_contents() 将整个文件读入一个字符串 ($log) 然后向其添加更多 ip 然后通过 [= 再次写入18=]().

您可以使用 file_put_contents() 来完成。不要忘记使用锁来避免数据丢失。

$ip = getIpAdress();
$now = date('c');
$new_line = "{$now} {$ip}\r\n";
file_put_contents('/path/to/ips.log', $new_line, LOCK_EX | FILE_APPEND);

https://php.net/file-put-contents