User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the PHP section within the Web Development category of DaniWeb, a massive community of 391,548 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 2,541 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our PHP advertiser: Lunarpages PHP Web Hosting
Views: 5019 | Replies: 1
Reply
Join Date: Apr 2006
Posts: 116
Reputation: alpha2006 is an unknown quantity at this point 
Rep Power: 3
Solved Threads: 5
alpha2006's Avatar
alpha2006 alpha2006 is offline Offline
Junior Poster

IP-to-Country converter (php script)

  #1  
Jun 17th, 2006
Hi,

I am looking for a PHP script that can take an ip address and return the country where that ip address belongs to.
If you know or have been using such a script, please let me know.

Thanks
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Sep 2005
Posts: 639
Reputation: digital-ether has a spectacular aura about digital-ether has a spectacular aura about 
Rep Power: 5
Solved Threads: 38
Moderator
digital-ether's Avatar
digital-ether digital-ether is offline Offline
Practically a Master Poster

Re: IP-to-Country converter (php script)

  #2  
Jun 17th, 2006
Originally Posted by alpha2006
Hi,

I am looking for a PHP script that can take an ip address and return the country where that ip address belongs to.
If you know or have been using such a script, please let me know.

Thanks


HI alpha2006,

What you need first is to get a database that matches IPs to countries/cities/locations.

Since IP to country is used alot in log analysis, you probably already have one installed on your php server if you rent one. Cpanel (common web based linux server administration panel) for example usually comes together with Awstats (analyses raw linux log files) which has an IP-country database.

Theres a couple listed at the ODP under log analysis:
http://dmoz.org/Computers/Software/I...ted_Utilities/

You can also find some at sourceforge.net or hotscripts.com

The php script of course will be specific to the database structure of the IP-to-Country Database you are using. Some databases will already have premade scripts too.

An easy way to get IPs converted to countries withought setting up the IP-to-country database and writing the php script for the db, is to use a webservice that does this for you and provides an API interface to geocoding (converting data to a location) IP addresses.

I've used http://www.hostip.info/ and they are really easy to use. Theres many others too.

With http://www.hostip.info/ if you dont require much functionality, you can just use a simple html based API for converting an IP to the contry flag.

Exaple:

[HTML]<A HREF="http://www.hostip.info">
<IMG SRC="http://api.hostip.info/flag.php" BORDER="0" ALT="IP Address Lookup">
</A>[/HTML]

Will automatically show the visitors contry flag.

To get just the contry via http, you can send http://www.hostip.info a get request to the url http://api.hostip.info/country.php

Example:

http://api.hostip.info/country.php

You can test this by clicking the link above.

The request to http://api.hostip.info/country.php returns the Country Code/Abbrev. in the HTTP Content of their HTTP Response.
So retrieving it via php is quite easy.

example:

[PHP]
<?php

$country = file_get_contents('http://api.hostip.info/country.php');
echo $country;


?>
[/PHP]

This however will return your server location, since the IP would be set as your server IP.

So you'll have to get the visitors IP via the REMOTE_ADDR which is available in PHP as a "predefined variable". Then append their IP to the country endpoint of their API.

Example:

http://api.hostip.info/country.php?ip=xxx.xxx.xxx.xxx

Example PHP:

[PHP]
<?php

$country = file_get_contents('http://api.hostip.info/country.php?ip='.$_SERVER['REMOTE_ADDR'];
echo $country;

?>
[/PHP]

Note: usually you wouldn't just use $_SERVER['REMOTE_ADDR'] as that is sent to your server as a HTTP Header, and can be tampered with (unlikely but still). So you should treat it as user submitted data and "clean" it. Also, theres a few different predefined variables that get the IP, for different setups, theres a few functions out there just for getting the right one.

Using a web services is easier I believe, and avoids having a huge database and load on your server, but it is a bit slower and dependant on the availablility of the remote server that you are connecting to.

Hope that starts you off...
www.fijiwebdesign.com - web design and development and fun
Cpanel Email - Let users Register email accounts on your website upon registration
Ajax Chat - Fully browser based chat!
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

DaniWeb PHP Marketplace
Thread Tools Display Modes

Similar Threads
Other Threads in the PHP Forum

All times are GMT -4. The time now is 9:01 pm.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC