萌新项目人 2018-01-09 08:34 采纳率: 100%
浏览 1040
已采纳

记录服务器端ip,记录这个ip第一次启动文件的时间,并且排除重复的ip


error_reporting(0); //抑制所有错误信息
@header("content-Type: text/html; charset=utf-8"); //语言强制

//获取用户IP地址
$ip = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$ip = ($ip) ? $ip : $_SERVER["REMOTE_ADDR"];
logResult($ip);

echo sprintf("你的IP地址是:%s",$ip);

function logResult($word='') {
    $fp = fopen("log.txt","a");
    flock($fp, LOCK_EX) ;
    fwrite($fp,"记录时间:".strftime("%Y%m%d%H%M%S",time()).",IP:".$word."\n");
    flock($fp, LOCK_UN);
    fclose($fp);
}?>

上面是记录访问者的ip并且写入log文本,目前我想实现记录服务器端ip而不是访客ip,然后记录这个ip第一次访问这段php文件的时间,并且排除里面重复的ip。怎么改写呢

多台服务器用这个代码,希望记录哪些服务器访问了这个文件

  • 写回答

3条回答 默认 最新

  • threenewbee 2018-01-09 10:22
    关注

    因为客户端是通过浏览器直接请求的,并不通过你所谓的“服务器”,所以,不存在服务器的地址。你有两个办法,一个是
    用_SERVER["HTTP_HOST"] 得到访问你这个PHP所请求的主机名,然后你自己维护一个域名到IP的列表,查表获得。
    一个办法是,使用$_SERVER['HTTP_REFERER']获得用户请求这个地址之前的网页的地址,据此判断他是从哪个服务器跳转来了。得到了referer后,然后得到对应的域名,再解析出对应的IP。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译