Вы находитесь на странице: 1из 3

Display Advertisement by Country Using PHP and MYSQL Database

Hexasoft Development Sdn. Bhd. (645996-K)


1-2-15 Mayang Mall Complex,
Jalan Mayang Pasir 1,
11950 Bandar Bayan Baru,
Penang, Malaysia.
URL: http://www.ip2location.com

{ sales@ip2location.com }

Online advertising is another way to promote company products. It’s very important to
show the right advertisements to the right consumers to have an optimum respond. A
company selling their products in Japan showing their advertisement to visitors from
United States is totally ineffective. On the other hand, localized advertisements catch
visitor attention and improve sales.

In this tutorial, we will learn how to switch advertisement to show base on visitor’s
origin. nstead of loading the full database with 50000+ records, we could simplify this
tutorial with assumption only two different IP address ranges in the world. IP addresses
0.0.0.0 - 126.255.255.255 originates from United States. Meanwhile, IP addresses
127.0.0.0 - 255.255.255.255 originate from Japan. Here we are creating a database
"IP2Location" with table "IPCountry" that consists of two IP address range records.

Step 1: Create and connect to 'IP2Location' database


mysql> CREATE DATABASE IP2Location
mysql> CONNECT IP2Location

Step 2: Create 'IPCountry' table


mysql> CREATE TABLE IPCountry
--> (
--> ipFROM DOUBLE NOT NULL,
--> ipTO DOUBLE NOT NULL,
--> countrySHORT VARCHAR(2) NOT NULL,
--> countryLONG VARCHAR(100) NOT NULL,
--> PRIMARY KEY(ipFROM, ipTO)
--> );

Step 3. Import the 'ipcountry.csv' database into table 'IPCountry'


mysql> INSERT INTO IPCountry VALUES (0, 2130706431,'US','UNITED STATES');
mysql> INSERT INTO IPCountry VALUES (2130706432,
4294967295,'JP','JAPAN');
The full version of IP-Country database is available for subscription at $49/year
from http://www.ip2location.com. If you have the full version of IP2Location?IP-
Country database, the import process is easier by using the LOAD DATA feature available
in MYSQL.

PC:

mysql> LOAD DATA INFILE "/IPCountry.csv" INTO TABLE IPCountry FIELDS


TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

Linux/Unix:

mysql> LOAD DATA INFILE "/IPCountry.csv" INTO TABLE IPCountry FIELDS


TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';

<?php
// Replace this MYSQL server variables with actual configuration
$mysql_server = "mysql_server.com";
$mysql_user_name = "UserName";
$mysql_user_pass = "Password";

// Retrieve visitor IP address from server variable REMOTE_ADDR


$ipaddress = getenv(REMOTE_ADDR);

// Convert IP address to IP number for querying database


$ipno = Dot2LongIP($ipaddress);

// Connect to the database server


$link = mysql_connect($mysql_server, $mysql_user_name, $mysql_user_pass)
or die("Could not connect to MySQL database");

// Connect to the IP2Location database


mysql_select_db("IP2Location") or die("Could not select database");

// SQL query string to match the recordset that the IP number fall between
the valid range
$query = "SELECT * FROM IPCountry WHERE $ipno <= ipTO AND $ipno>=ipFROM";

// Execute SQL query


$result = mysql_query($query) or die("IP2Location Query Failed");

// Retrieve the recordset (only one)


$row = mysql_fetch_object($result);

// Keep the country information into two different variables


$countrySHORT = $row->countrySHORT;
$countryLONG = $row->countryLONG;
// Free recordset and close database connection
mysql_free_result($result); mysql_close($link);

if ($countrySHORT == "JP")
{
// If the visitors are from JP, show advertisement from JP
echo "<img src="Japan.jpg" border="0" width="100" height="200">";
}
else {
// Otherwise, show other advertisement
echo "<img src="US.jpg" border="0" width="100" height="200">";
}
exit;

// Function to convert IP address (xxx.xxx.xxx.xxx) to IP number (0 to


256^4-1)
function Dot2LongIP ($IPaddr) {
if ($IPaddr == "")
{
return 0;
} else {
$ips = split ("\.", "$IPaddr");
return ($ips[3] + $ips[2] * 256 + $ips[1] * 256 * 256 + $ips[0] * 256 *
256 * 256);
}
}
?>

Hexasoft Development Sdn. Bhd. © 2001-2009 All Right Reserved


To obtain permission to reuse or republish this article, please write
to sales@ip2location.com. Republication is welcome for no charge.