I have IP ranges of the country. And I am checking the the user IP address within this ranges if true then he is able to see the site otherwise he wont. I have use following code,
$ip = $_SERVER['REMOTE_ADDR'];
if(ip2long($ip) >= $ipstart && ip2long($ip) <= $ipend){
return true;
}
My question is that if somebody comes from different country suppose ABC with his laptop/notebook to another country suppose XYZ then will above code works? on the same laptop.
How will it be possible for the above scenario for ipv4 and ipv6?
[EDIT]
Which IP address $_SERVER['REMOTE_ADDR']
fetch, will it be the machine IP or the connection IP, so that we can know that he now in this country?
Thanks
You may also use 3rd party websites such as Geobytes or Dnsstuff to lookup the IP address. The whois lookup will reveal name of the ISP who owns that IP address, and the country where it is originated from. If you're lucky, you might also find the city of orgin.
Just send HTTP GET request to https://api.ipgeolocationapi.com with different parameters and get the JSON result. For example, the following HTTP GET request will give you a location of the specified IP address. The following request returns the country information specified by the ISO country code.
Get Location from IP Address using PHPUse the IP Geolocation API to get the user's location from IP using PHP. Call API via HTTP GET request using cURL in PHP. Convert API JSON response to array using json_decode() function. Retrieve IP data from API response.
Through a useful internet tool called IP Geolocation Lookup, you can track an IP address close to someone's exact location. You can get pretty close, depending on a variety of factors, to finding the physical location of someone's IP address.
use this 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 doesn't have a function for this. You should either build a database or just use an external api to find that out.
http://ip-api.com Here is a good / free one. Just parse responses from that one.
See this link
you can find country name from ip using this function,
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;
}
Pass IP address in this function and you will get country info...
For ip address, you can use one of following address as ip address,
$client_ip = @$_SERVER['HTTP_CLIENT_IP'];
$forward_ip = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote_ip = @$_SERVER['REMOTE_ADDR'];
Hope this will help you...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With