Solved

Script to geolocate user and redirect them to the local website

Posted on 2010-09-10
4
800 Views
Last Modified: 2012-05-10
Hello,

We are looking for a script that we can drop into our site that will geolocate a user downloading a web page a redirect them to a localised version of the website. For example, if a person in UK access the site then they should be redirected to the .co.uk version of the site.

Thanks
0
Comment
Question by:PlumInternet
  • 2
4 Comments
 
LVL 82

Accepted Solution

by:
leakim971 earned 167 total points
ID: 33651138
You may use : navigator.userLanguage

Some links :

http://www.cryer.co.uk/resources/javascript/script9.htm
http://xrdp.sourceforge.net/documents/keymap/rfc1766.html
http://www.cryer.co.uk/resources/javascript/script9.htm
http://www.w3.org/TR/html401/references.html#ref-ISO3166
http://fr.wikipedia.org/wiki/ISO_3166-1
http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
http://www.ietf.org/rfc/rfc1766.txt

example of using :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Language" content="en-us" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>IPHONE REDIRECT PAGE</title>

<script language="javascript">
  switch(navigator.userLanguage.toLowerCase()) {
      case "en-us": window.location = 'http://www.domain.us';break;
      case "en-gb": window.location = 'http://www.domain.co.uk';break;
      case "fr-fr": window.location = 'http://www.domain.fr';break;
      case "de-ch": window.location = 'http://www.domain.ch';break;
      default:      window.location = 'http://www.domain.com';break;
  }
</script>

</head>

<body>

<p>see this - redirect did not work</p>

</body>

</html>

Open in new window

0
 
LVL 10

Assisted Solution

by:bugada
bugada earned 167 total points
ID: 33652703
there is another solution based on IP detection: some sites offer a donwloadble database with association between IP and location.

A free site is http://ip-to-country.webhosting.info/
 
you can download it regularly  using following code to insert it in your database (maybe put this php in crontab).

Then in your home page retrieve the ip of the visitor and ask to db the country associated, do proper redirection.
<?php



require_once('pclzip.lib.php');

ini_set('max_execution_time', 0);



echo "updating ip2location database...";



copy('http://ip-to-country.webhosting.info/downloads/ip-to-country.csv.zip', 'downloads/ip-to-country.csv.zip');



$archive = new PclZip('./downloads/ip-to-country.csv.zip');

$list = $archive->extract(PCLZIP_OPT_PATH, '.');



$db = mysql_connect("localhost", "root", "password");

mysql_select_db("free2design", $db);



$query = "DELETE FROM free_ip_locations";

$result = mysql_query($query, $db);



$values = '';

$lines = file('ip-to-country.csv');

foreach ($lines as $line) {



$data = explode(',', $line);



$ip_from = trim($data[0], "\"");

$ip_to = trim($data[1], "\"");

$code = trim($data[2], "\"");

$name = trim(trim($data[4]), "\"");



$query = "INSERT INTO free_ip_locations (ip_from, ip_to, code, name) VALUES ($ip_from,$ip_to,'$code','$name')";

$result = mysql_query($query, $db);

}

mysql_close($db);



echo "done";

exit();



?>

Open in new window

0
 
LVL 6

Assisted Solution

by:birwin
birwin earned 166 total points
ID: 33657528
A simple method, using the Google API, can be found at:
http://designshack.co.uk/articles/javascript/detecting-location-using-google-ajax-api#more-1546
I used a more sophisticated method  for a client, of downloading an open source database, and searching it. The results were good, but not consistantly good.
Unless you are willing to pay a monthly fee for the most advanced, commercial databases, and update your database weekly, do not trust the results, and make sure that you have a "Plan B". I had written some code, expecting to always get a location answer, and had to rewrite it, after getting results that I couldn't duplicate. The issue was that some hosts don't supply usable IP address data, so what works on your machine, with your host, won't work on all.
So depending on your need for accuracy you can try:
A free database is available at http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
A PHP class to read it is available at:
http://phpweby.com/software/ip2country

0
 
LVL 82

Expert Comment

by:leakim971
ID: 33659425
You're welcome! Thanks for the points!
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

I've been asked to discuss some of the UX activities that I'm using with my team. Here I will share some details about how we approach UX projects.
Any business that wants to seriously grow needs to keep the needs and desires of an international audience of their websites in mind. Making a website friendly to international users isn’t prohibitively expensive and can provide an incredible return…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now