Question

How can I get the user's country and forward them to a URL based on it?

I am looking specifically at Australia, New Zealand, USA, UK and Other.

Preferably with PHP, but can use Javascript if necessary.

Was it helpful?

Solution

This may help you to get country then you can redirect accordingly.

<?PHP

  function visitor_country()
  {
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];
    $result  = "Unknown";
    if(filter_var($client, FILTER_VALIDATE_IP))
    {
       $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
      $ip = $forward;
    }
    else
    {
      $ip = $remote;
    }

    $ip_data = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip));

    if($ip_data && $ip_data->geoplugin_countryName != null)
    {
       $result = $ip_data->geoplugin_countryName;
    }

    return $result;
}

echo visitor_country(); // Output Coutry name [Ex: United States]

?>

OR in Javascript.

<html>
<head>
  <script language="JavaScript" src="http://www.geoplugin.net/javascript.gp" type="text/javascript"></script>
</head>
<body>
  <script language="Javascript"> 
document.write("Welcome to our visitors from "+geoplugin_city()+", "+geoplugin_countryName()); 
// window.location = "http://www.yoururl.com";  /* you can forward user to url using this line of code according to your conditions
  </script>
</body>
</html>

OTHER TIPS

Please check the below link.

How can I detect visitor's country and redirect he/she to an specific website?

May be it will help you.. :)

You can use PECL's geoip_country_by_name() with the user's ip address to get their country:

<?php


    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }

    $country = geoip_country_name_by_name($ip);
    if ($country) {
        echo 'This host is located in: ' . $country;
        //header("Location: " . $somelocation);
    }
    ?>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top