【发布时间】:2014-03-19 15:21:44
【问题描述】:
我有这个国家的 IP 范围。我正在检查此范围内的用户 IP 地址,如果为真,那么他能够看到该站点,否则他不会。 我使用了以下代码,
$ip = $_SERVER['REMOTE_ADDR'];
if(ip2long($ip) >= $ipstart && ip2long($ip) <= $ipend){
return true;
}
我的问题是,如果有人来自不同的国家,假设 ABC 带着他的笔记本电脑/笔记本到另一个国家假设 XYZ,那么 上面的代码可以工作吗? 在同一台笔记本电脑上。
上面的 ipv4 和 ipv6 场景怎么可能?
[编辑]
$_SERVER['REMOTE_ADDR']取哪个IP地址,是机器IP还是连接IP,这样我们才能知道他现在在这个国家?
谢谢
【问题讨论】:
-
您需要一个第三方 API 来查找 IP 国家/地区表
-
使用这个 $countryName = geoip_country_name_by_name($_SERVER['REMOTE_ADDR']); PHP构建的查找国家名称的方法
-
IPLocate.io 提供免费 API:iplocate.io/api/lookup/8.8.8.8 - PHP 示例:
$result = json_decode(file_get_contents('https://www.iplocate.io/api/lookup/8.8.8.8')); echo $result->country;- 免责声明:我运行此服务。