You are on page 1of 3

Redirect Web Visitors By Country Using ASP and MS-SQL 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 }

There are times when it is useful to redirect a visitor to different default web page based
on the visitor's country of origin. One practical usage is to redirect visitor to web page
with the language recognized by the visitor. This article shows you how to build up such
a system using ASP (server side scripting language) and MS-SQL (IP address to country
lookup database).

Let us take a simple case study. Company XYZ is multi-national company with major
customers from United States and Japan. The company official website is developed in
both English and Japanese languages. The default page is in English language and visitor
can switch to Japanese by changing the default language option. There exists a potential
risk when a Japanese visitor does not understand English and he could not navigate the
web site.

So, let us develop a simple solution to help Company XYZ redirecting all Internet traffic
from country Japan to the Japanese language site. Meanwhile it drives the traffic from
the rest of the world to the corporate web site in English.

In this tutorial, we use the IP2Location™ IP-Country database to lookup country of origin
from the visitor's IP address. Instead 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 originate 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: Start SQL Query Analyzer. Create and connect to 'IP2Location' database
CREATE DATABASE IP2Location;
USE IP2Location;

Step 2: Create 'IPCountry' table


CREATE TABLE [dbo].[IPCountry] (
[ipFROM] [float] NOT NULL ,
[ipTO] [float] NOT NULL ,
[countrySHORT] [nvarchar] (2),
[countryLONG] [nvarchar] (64)
) ON [PRIMARY]
GO

Step 3. Insert dummy records to the database.


INSERT INTO IPCountry VALUES (0, 2130706431,'US','UNITED STATES');
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, import process is easy done by using the Database Transformation
Service (DTS) in MS-SQL. Let's assume the English web page as http://www.google.com
and Japanese web page as http://www.google.co.jp. We implement a simple script
default.asp to detect visitor's country of origin. If the visitor is from Japan (with IP
address range from 127.0.0.0 - 255.255.255.255), then the page redirects visitor to
google web site in Japan, otherwise the United States. Simple? Here is the code and the
comments serve as explanation default.asp

<%
Dim conn, myDSN, mySQL, rs

' SQL database connection. NOTE: Replace servername, username and


password to your own values.
Set conn = Server.CreateObject("ADODB.Connection")

myDSN=
"DRIVER={SQLServer};SERVER=servername;UID=username;PWD=password;DATABASE=I
P2Location"

conn.open myDNS

' retrieve visitor IP address and translate it to IP address number


IPno = Dot2LongIP(Request.ServerVariables("REMOTE_ADDR"))

' SQL query to lookup valid range of IP address


mySQL = "SELECT countrySHORT FROM IPCountry WHERE " & IPno & " BETWEEN
ipFROM AND ipTO"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open mySQL, conn

' assign country name for reference


countryName = rs("countrySHORT")

' close and free connections


rs.close
conn.close
set rs = nothing
Set conn = nothing

If CountryName = "JP" Then


' Visitor is from Japan
' Redirect the URL to Google Japanese site
Response.Redirect "http://www.google.co.jp"
Else
' Visitor is not from Japan
' Redirect the URL to Google international site
Response.Redirect "http://www.google.com"
End If

Function Dot2LongIP (ByVal DottedIP)


Dim i, pos
Dim PrevPos, num
If DottedIP = "" Then
Dot2LongIP = 0
Else
For i = 1 To 4
pos = InStr(PrevPos + 1, DottedIP, ".", 1)
If i = 4 Then
pos = Len(DottedIP) + 1
End If
num = Int(Mid(DottedIP, PrevPos + 1, pos - PrevPos - 1))
PrevPos = pos
Dot2LongIP = ((num Mod 256) * (256 ^ (4 - i))) + Dot2LongIP
Next
End If
End Function
%>

Place this script as the default script of the web site. All visitors will go through this
screening before redirect to an appropriate web page.

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.

You might also like