954,180 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

find county using ip address

$url=$_POST['url'];
$ip = gethostbyname($url);
$long1 = ip2long($ip)

if ($long1 == -1 || $long1 == FALSE)
{ echo 'Invalid IP, please try again';
}
else {

print $url;
echo $ip ?>

bu this code i get ip address but i need the country name aslo with this ip address. is thers any function to get country?
thanks

aarya
Junior Poster
139 posts since Sep 2005
Reputation Points: 11
Solved Threads: 0
 

There is no function that identifies a country using the IP address. You will need to use a GeoIP (also called GeoLocation) database.

There are several freebie GeoIP databases available.
http://www.maxmind.com/app/geoip_country
http://ip-to-country.webhosting.info/

TopDogger
Junior Poster in Training
87 posts since Aug 2005
Reputation Points: 15
Solved Threads: 5
 

Use to get ip to country and other useful information.

attadaved
Newbie Poster
5 posts since Oct 2007
Reputation Points: 10
Solved Threads: 0
 

Hi Aatya,

U can use the following function to get the country name from IP address.

function countryCityFromIP($ipAddr)
{
//function to find country and city from IP address
//Developed by Roshan Bhattarai  <a href="http://roshanbh.com.np">http://roshanbh.com.np</a> 

//verify the IP address for the
ip2long($ipAddr)== -1 || ip2long($ipAddr) === false ? trigger_error("Invalid IP", E_USER_ERROR) : "";
$ipDetail=array(); //initialize a blank array

//get the XML result from hostip.info
$xml = file_get_contents("http://api.hostip.info/?ip=".$ipAddr);

//get the city name inside the node <gml:name> and </gml:name>
preg_match("@<Hostip>(\s)*<gml:name>(.*?)</gml:name>@si",$xml,$match);

//assing the city name to the array
$ipDetail['city']=$match[2]; 

//get the country name inside the node <countryName> and </countryName>
preg_match("@<countryName>(.*?)</countryName>@si",$xml,$matches);

//assign the country name to the $ipDetail array
$ipDetail['country']=$matches[1];

//get the country name inside the node <countryName> and </countryName>
preg_match("@<countryAbbrev>(.*?)</countryAbbrev>@si",$xml,$cc_match);
$ipDetail['country_code']=$cc_match[1]; //assing the country code to array

//return the array containing city, country and country code
return $ipDetail;

}


plz try it let me know what's result?

kuldeep04
Newbie Poster
9 posts since Jul 2008
Reputation Points: 10
Solved Threads: 0
 

Hi Aatya,

U can use the following function to get the country name from IP address.

~~~~~~

plz try it let me know what's result?

Hi kuldeep,

I used your script (with minor modifications - needed only to show the country) and it worked splendid.

thanks pal.

Desolator
Newbie Poster
1 post since Mar 2009
Reputation Points: 10
Solved Threads: 0
 

Thanks KULDEEP04 !

I've copied and paste your code, set the Google IP and sure enough while running it, I can display the answer:
City: Mountain View, CA Country UNITED STATES!

That's great, Im going to use your code and leave your reference (URL) in it.
My goal is to record myself from where and when the users hit my pages...

I have a problem..
Maybe you can help me:

To apply this code I must change my pages form ext: .HTML to .PHP:
DO YOU KNOW IF THAT WILL AFFECT the ranking of my pages on search engines?

Gravimotion

gravimotion
Newbie Poster
1 post since Oct 2009
Reputation Points: 10
Solved Threads: 0
 

The file extension will not affect a new site, but it will affect an existing site that has already been indexed. The old page URLs in the search engines will generate 404 status codes (Page Not Found) unless you use a 301 redirect to redirect the old pages to the new pages.

If you leave the file names the same and only change the extensions, you should be able to add the following to the .htaccess file to take care of the redirection. This will only work on an Apache web server.

RewriteRule ^(.*)\.html$ /$1.php [R=301,L]

Test it with a few pages to make sure it is working correctly. If you enter an old URL with the .html extension, you should see it change to the new .php page in your browser's address window.

TopDogger
Junior Poster in Training
87 posts since Aug 2005
Reputation Points: 15
Solved Threads: 5
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You