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。怎么改写呢多台服务器用这个代码,希望记录哪些服务器访问了这个文件
1 回答

一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
因为客户端是通过浏览器直接请求的,并不通过你所谓的“服务器”,所以,不存在服务器的地址。你有两个办法,一个是
用_SERVER["HTTP_HOST"] 得到访问你这个PHP所请求的主机名,然后你自己维护一个域名到IP的列表,查表获得。
一个办法是,使用$_SERVER['HTTP_REFERER']获得用户请求这个地址之前的网页的地址,据此判断他是从哪个服务器跳转来了。得到了referer后,然后得到对应的域名,再解析出对应的IP。
没有找到匹配的内容?试试慕课网站内搜索吧
添加回答
举报
0/150
提交
取消