Geotargeting PHP Code
IP Database Explanation
With the database ready, let's take a look at what each field means:
| Field | Type |
| IP_START | The start of the IP range. |
| IP_END | The end of the IP range. |
| IP_FROM | The start of the IP range, as a long number. |
| IP_TO | The end of the IP range, as a long number. |
| COUNTRY_CODE2 | A two-letter country code, such as 'UK'. |
| COUNTRY_NAME | The full country name, such as 'Germany'. |
Geotargeting PHP Code
The code is very simple:
- We get the visitor's IP address...
- ...and look it up in the database...
- ...and figure out which country the IP address belongs to.
And the code is:
$DatabaseServer = "YOUR_DATABASE_SERVER";
$Username = "YOUR_DATABASE_USERNAME";
$Password = "YOUR_DATABASE_PASSWORD";
$DatabaseName = "YOUR_DATABASE_NAME";
$link = mysql_connect($DatabaseServer, $Username, $Password) or die('Could not connect: ' . mysql_error());
mysql_select_db($DatabaseName) or die('Could not select database');
$IP = $_SERVER["REMOTE_ADDR"]; //Get the IP address
$res = mysql_query("SELECT country_code2,country_name FROM IPCountries WHERE IP_FROM<=inet_aton('$IP') AND IP_TO>=inet_aton('$IP')");//look up IP address
$Codes = mysql_fetch_array($res); //get result
$CountryCode = $Codes['country_code2']; //two-letter country code
$CountryName = $Codes['country_name']; //full country name
echo "$CountryCode - $CountryName"; //print it out, just as an example
mysql_close($link); //clean up
And what does it look like? For your IP address, this is its output:
Geographical location of IP address is:
United States
This code is used to display IP information at the PHPCounter reverse DNS and whois tool. (I'll show you where to get flag icons later.)
In this example, we simply printed out the country code and name. In a real-world example, you could use this information to target content. For example, to output content for IP addresses from France, you could use:
if($CountryCode == "FR"){
//echo contents for France
echo "Bonjour!"
}
else{
//default content
echo "Hello!"
}
Next page: Flags and closing remarks.
