Как найти страну, используя IP-адрес в PHP?

У меня есть IP-диапазоны страны. И я проверяю IP-адрес пользователя в пределах этих диапазонов, если true, тогда он может видеть сайт, иначе он не будет. Я использую следующий код,

$ip = $_SERVER['REMOTE_ADDR']; if(ip2long($ip) >= $ipstart && ip2long($ip) <= $ipend){ return true; } 

Мой вопрос заключается в том, что, если кто-то приходит из разных стран, предположим, что ABC со своим ноутбуком / ноутбуком в другую страну предположит, что XYZ будет работать над кодом? на том же ноутбуке.

Как это будет возможно для вышеуказанного сценария для ipv4 и ipv6?

[РЕДАКТИРОВАТЬ]

Какой IP-адрес $_SERVER['REMOTE_ADDR'] выбирается, будет ли это IP-адрес устройства или IP-адрес подключения, чтобы мы могли знать, что он сейчас в этой стране?

благодаря

используйте этот 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; 

Для этого у Php нет функции. Вы должны либо построить базу данных, либо просто использовать внешний api, чтобы найти это.

http://ip-api.com Вот хороший / бесплатный. Просто проанализируйте ответы от этого.

См. Эту ссылку

вы можете найти название страны из 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']; 

Надеюсь, что это поможет вам…