检索准确的外部IPV4地址PHP

问题描述:

我正在看一个视频如何收集真实的外部IP地址的用户 [YT:DewClarke]的视频。他的代码完美地工作在自己的网站,但导致与矿山的IPv6版本:2701:0564:D210:5be4:5b0b:8630:4c99:a3be(随机隐私原因)。 如何获取IPV4,如216.3.128.12(因隐私原因而随机分配)?检索准确的外部IPV4地址PHP

<?php 
    function getUserIP(){ 
     $client = @$_SERVER['HTTP_CLIENT_IP']; 
     $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; 
     $remote = $_SERVER['REMOTE_ADDR']; 
     if(filter_var($client, FILTER_VALIDATE_IP)){ 
     $ip = $client; 
     }elseif(filter_var($forward, FILTER_VALIDATE_IP)){ 
     $ip = $forward; 
     }else{ 
     $ip = $remote; 
     } 
     return $ip; 
    } 
    $user_ip = getUserIP(); 
?> 

我“回声”中的数据后下了线......

<div id="LoggedAs"><span><?php echo $user_ip;?></span></div> 

一些有用的信息,我使用000WebHost.com,通过CloudFlare.com运行它,它是用PHP编写的,我在该页面上强制使用SSL。 DewClarke的源代码可以在这里找到:DewClarke's Source Code

+0

IPV6是一个实际的IP – 2016-12-01 02:49:22

+0

我在寻找的IPV4 ,不是IPV6,但是,我知道。 –

+0

我不认为你知道,因为只有少量的IPV6地址可以直接映射到IPV4 – 2016-12-01 02:56:38

你的代码似乎很好。这看起来像是一个Cloudflare设置。去Cloudflare - >(你的域名) - >网络。然后将IPv6兼容性设置为OFF。

虽然建议您将此设置保持为ON,因为IPv6对于全球网络连接的增长至关重要。

您可能也有兴趣,而不是使用此代码用于获取连接的用户的IP地址和国家通过的CloudFlare提供:

$_SERVER['REMOTE_ADDR'] = isset($_SERVER['HTTP_CF_CONNECTING_IP']) ? $_SERVER['HTTP_CF_CONNECTING_IP'] : $_SERVER['REMOTE_ADDR']; 
$_SERVER['REMOTE_COUNTRY'] = isset($_SERVER['HTTP_CF_IPCOUNTRY']) ? $_SERVER['HTTP_CF_IPCOUNTRY'] : 'Unknown';