我有国家的IP范围。我正在检查此范围内的用户IP地址,如果为真,那么他能够看到该网站,否则他不会。 我使用以下代码,
$ip = $_SERVER['REMOTE_ADDR'];
if(ip2long($ip) >= $ipstart && ip2long($ip) <= $ipend){
return true;
}
我的问题是,如果有人来自不同的国家,假设ABC和他的笔记本电脑/笔记本电脑到另一个国家,假设XYZ然后上面的代码会在同一台笔记本电脑上工作吗?。
ipv4和ipv6的上述情况怎么可能?
[编辑]
获取哪个IP地址$_SERVER['REMOTE_ADDR']
,它是机器IP还是连接IP,以便我们知道他现在在这个国家?
由于
答案 0 :(得分:6)
使用此API http://ipinfo.io
function ip_details($IPaddress)
{
$json = file_get_contents("http://ipinfo.io/{$IPaddress}");
$details = json_decode($json);
return $details;
}
$IPaddress = $_SERVER['REMOTE_ADDR'];
$details = ip_details("$IPaddress");
//echo $details->city; #Tamilnadu
//echo $details->country;
//echo $details->org;
//echo $details->hostname;
答案 1 :(得分:1)
Php没有此功能。您应该构建数据库,或者只使用外部API来查找数据库。
http://ip-api.com 这是一个很好的/免费的。 只需解析那个响应。
答案 2 :(得分:1)
请参阅此link
您可以使用此功能从ip找到国家/地区名称,
function getLocationInfoByIp($ip_addr)
{
$return_data = array('country'=>'', 'city'=>'');
$ip_data = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip_addr));
if($ip_data && $ip_data->geoplugin_countryName != null)
{
$return_data['country'] = $ip_data->geoplugin_countryCode;
$return_data['city'] = $ip_data->geoplugin_city;
}
return $return_data;
}
在此功能中传递IP地址,您将获得国家/地区信息...
对于IP地址,您可以使用以下地址之一作为IP地址,
$client_ip = @$_SERVER['HTTP_CLIENT_IP'];
$forward_ip = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote_ip = @$_SERVER['REMOTE_ADDR'];
希望这会对你有帮助......