检索准确的外部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
答
你的代码似乎很好。这看起来像是一个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';
IPV6是一个实际的IP – 2016-12-01 02:49:22
我在寻找的IPV4 ,不是IPV6,但是,我知道。 –
我不认为你知道,因为只有少量的IPV6地址可以直接映射到IPV4 – 2016-12-01 02:56:38