检索准确的外部 IPV4 地址 PHP

Retrieve Accurate External IPV4 Address PHP

我正在观看有关如何在 [YT:DewClarke] 中收集 用户 的真实外部 IP 地址的视频视频。他的代码在他的网站上运行完美,但在我的网站上生成了 IPV6 版本:2701:0564:d210:5be4: 5b0b:8630:4c99:a3be(出于隐私原因随机分配)。 如何获得像 216.3.128.12 这样的 IPV4(出于隐私原因随机分配)?

<?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();
?>

我"echo"数据稍后下线...

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

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

您的代码看起来不错。这似乎是 Cloudflare 设置。转到 Cloudflare ->(您的域)-> 网络。然后将 IPv6 兼容性设置为关闭。

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

您可能也有兴趣使用此代码来获取 Cloudflare 提供的连接用户的 IP 地址和国家/地区:

$_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';