PHP - geoIP country redirect

Newbie Member
20Feb2011,07:47   #1
webdevel's Avatar
I could really use some help with a problem I'm having. I've read as many posts as i can find on this topic but unfortunatly I still cant get it to work.

I would like to redirect visitors to different sites depending on their country. I just can't get this to work. Any help would be very much appreciated. Here is what I've got:

Code:
<?php
require_once('geoip.inc');
$gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
 
if ($country == 'ca') { 
header('Location: example.ca');
}
if ($country == 'nz') { 
header('Location: example.co.nz');
}
if ($country == 'uk') { 
header('Location: example.co.uk');
}
if ($country == 'us') { 
header('Location: example.info');
}
?>

Last edited by shabbir; 20Feb2011 at 08:30.. Reason: Code blocks
Invasive contributor
21Feb2011,18:03   #2
lionaneesh's Avatar
Quote:
Originally Posted by webdevel View Post
I could really use some help with a problem I'm having. I've read as many posts as i can find on this topic but unfortunatly I still cant get it to work.

I would like to redirect visitors to different sites depending on their country. I just can't get this to work. Any help would be very much appreciated. Here is what I've got:

Code:
<?php
require_once('geoip.inc');
$gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
 
if ($country == 'ca') { 
header('Location: example.ca');
}
if ($country == 'nz') { 
header('Location: example.co.nz');
}
if ($country == 'uk') { 
header('Location: example.co.uk');
}
if ($country == 'us') { 
header('Location: example.info');
}
?>
The code looks perfectly fine to me...
Whats the error can you specify..
Newbie Member
23Feb2011,04:38   #3
webdevel's Avatar
I figured out that I could fix my problem with the following:

<?php
require_once('geoip.inc');
$gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
$my_countries = 'us';
if (strtolower($country) == $my_countries) {
header('Location: example.us');
}
$my_countriess = 'nz';
if (strtolower($country) == $my_countriess) {
header('Location: example.co.nz);
}
$my_countriesss = 'uk';
if (strtolower($country) == $my_countriesss) {
header('Location: example.co.uk');
}
$my_countriessss = 'ca';
if (strtolower($country) == $my_countriessss) {
header('Location: example.ca');
}
?>

Thanks anyway for your help
Light Poster
24Mar2011,07:08   #4
etiergjt's Avatar
hmm,where did you find that ip range file?can you send me a copy?
Newbie Member
24Mar2011,09:31   #5
webdevel's Avatar
Go to maxmind.com
shabbir likes this
Light Poster
24Mar2011,09:39   #6
etiergjt's Avatar
Quote:
Originally Posted by webdevel View Post
Go to maxmind.com
thanks for your reply,but it's expensive,any cheaper solution for this?
Newbie Member
24Mar2011,09:57   #7
webdevel's Avatar
It's free. What you want to download is GeoLite Country. It's 99.5% accurate
Light Poster
24Mar2011,15:16   #8
etiergjt's Avatar
Quote:
Originally Posted by webdevel View Post
It's free. What you want to download is GeoLite Country. It's 99.5% accurate
oh,I see
I didn't notice the free/opensource link
Thanks
Newbie Member
2Aug2011,22:28   #9
pidge1992's Avatar
but that code is not working for me

anyone can help ?