如何在 php 中获取真实的客户端 IP 或地理位置?
Posted
技术标签:
【中文标题】如何在 php 中获取真实的客户端 IP 或地理位置?【英文标题】:How to get real client ip or geolocation in php? 【发布时间】:2015-12-02 16:50:06 【问题描述】:我的网站上有一个用户注册系统。我正在使用 ip-api.com 的 xml ip api 来检测用户的位置。我的问题是我使用的 php 脚本返回了用户的代理或错误的 IP 地址,这就是为什么我无法在他们的个人资料中设置正确的位置。
我使用以下条件语句来获取 ip 地址:
$ip=$_SERVER["REMOTE_ADDR"];
if(empty($ip))
$ip=
$_SERVER["HTTP_X_FORWARDED_FOR"];
它为某些用户返回错误的 IP 地址。
有没有其他方法可以在 php 中获取真实的 ip 或地理位置?
【问题讨论】:
如果代理不想告诉您(并且任何真正的匿名代理都不会),则无法保证获得“真实”IP 地址。 What is the most accurate way to retrieve a user's correct IP address in PHP?的可能重复 【参考方案1】:你可以看到这个话题:How to get Real IP from Visitor?
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();
【讨论】:
如果您认为这个问题是重复的,请相应地标记它。但不要只是复制其他答案。以上是关于如何在 php 中获取真实的客户端 IP 或地理位置?的主要内容,如果未能解决你的问题,请参考以下文章
php获取了ip地址,用php怎么获取ip的地理位置?请大虾赐教!