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

Get correct IP address using $_SERVER["REMOTE_ADDR"]

我正在使用以下代码:

echo $_SERVER["REMOTE_ADDR"];

我将我的 IP 地址回显为 108.162.225.189,它在美国某处。我的实际 IP 地址是 59.179.64.246。是因为我使用的是 cloudFlare 吗? CloudFlare 还说

CloudFlare sits between your visitor and web server. So, the CloudFlare connecting IP matters only for any programs that read logs directly from your web server (like awstats).

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

是的,显示的 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-

由于使用了 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/