检索准确的外部IPV4地址PHP

时间:2016-12-01 02:45:26

标签: php cloudflare php-5.2

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

var filtered = $("selector for form elements").filter(function(){
    return this.value.trim() !== "";
});

//and now work on the filtered elements
$(filtered).serializeArray();

我&#34;回声&#34;以后的数据......

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

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

1 个答案:

答案 0 :(得分:0)

您的代码似乎很好。这看起来像Cloudflare设置。转到Cloudflare - &gt; (您的域名) - &gt;网络。然后将IPv6兼容性设置为OFF。

建议您将此设置保持为ON,因为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';