使用$ _SERVER [" REMOTE_ADDR"]获取正确的IP地址

时间:2015-06-24 07:48:35

标签: php server cloudflare

我正在使用以下代码:

kinit -kt `whoami`.keytab `whoami`@INTRANET.SERVER.COM

我的IP地址为echo $_SERVER["REMOTE_ADDR"]; ,位于美国的某个地方。我的实际IP地址是108.162.225.189。是因为我使用的是CloudFlare吗? CloudFlare也说

  

CloudFlare位于访问者和Web服务器之间。因此,连接IP的CloudFlare仅适用于直接从Web服务器读取日志的任何程序(如awstats)。

CloudFlare会导致此问题吗?如何获得正确的IP地址?

2 个答案:

答案 0 :(得分:0)

是的,显示的IP(108.162 ...)是CloudFlare IP。但CloudFlare应该提供附加信息。试试这个:

$ip = 
  isset($_SERVER["HTTP_CF_CONNECTING_IP"])?
     $_SERVER["HTTP_CF_CONNECTING_IP"]:
     $_SERVER["REMOTE_ADDR"]
  ;
echo $ip;

更多信息:https://support.cloudflare.com/hc/en-us/articles/200170856-How-do-I-restore-original-visitor-IP-with-vBulletin-

答案 1 :(得分:0)

由于cloudflare代理,您通常无法查看地址。

但无论如何,您可以尝试通过以下脚本抓取它

if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])){
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}

让我知道它是否有效。 资料来源:http://wp2x.com/get-cloudflare-visitor-ips-php/