1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Use PHP to Redirect a User based on their Geographic location

Discussion in 'Cloaking and Content Generators' started by paperchaser, Nov 7, 2008.

  1. paperchaser

    paperchaser Guest

    I was going crazy today trying to put together a nice cloak/redirect script for a facebook ad. I came across this, enjoy!

    This snippet originally is used for targetting ad banners depending on the geographic location of the visitor, but can be used for other purposes. Its originally used for the US and the rest of the world, but you can add checks for other countries too.

    PHP:
    <?php
      
    /**
       * Original code from svn://hostip.info/hostip/api/trunk. Optimized & enhanced by Quang Pham @ Saoma, 06.01.07.
       */   
      
    function isPrivateIP($ip) {
        list(
    $a$b$c$d) = sscanf($ip"%d.%d.%d.%d");
        return  
    $a === null || $b === null || $c === null || $d === null ||
                
    $a == 10    ||
                
    $a == 239   ||
                
    $a == 0     ||
                
    $a == 127   ||
               (
    $a == 172 && $b >= 16 && $b <= 31) ||
               (
    $a == 192 && $b == 168);
      }   
       
      function 
    getIP() {
        
    $default false;
       
        if (isset(
    $_SERVER)) {
          
    $default_ip $_SERVER["REMOTE_ADDR"];     
          
    $xforwarded_ip $_SERVER["HTTP_X_FORWARDED_FOR"];
          
    $client_ip $_SERVER["HTTP_CLIENT_IP"];   
        } else {
          
    $default_ip getenv('REMOTE_ADDR');
          
    $xforwarded_ip getenv('HTTP_X_FORWARDED_FOR');
          
    $client_ip getenv('HTTP_CLIENT_IP');
        }
       
        if (
    $xforwarded_ip != "") {
          
    $result $xforwarded_ip;
        } else if (
    $client_ip != "") {
          
    $result $client_ip;
        } else {
          
    $default true;
        }
       
        if (!
    $default) { // additional check for private ip numbers
          
    $default isPrivateIP($result);
        }
       
        if (
    $default) {
          
    $result $default_ip;
        }
       
        return 
    $result;
      }
     
      function 
    showUSContent() {
        
    // show US content here, for ex. Yahoo! ads 
      
    }
     
      function 
    showInternationalContent() {
        
    // show international content here, for ex. Google ads
      
    }
     
      function 
    showGeoTargetContent() {
        
    // make a valid request to the hostip.info API 
        
    $url "http://api.hostip.info/country.php?ip=".getIP();
     
        
    // fetch with curl
        
    $ch curl_init();
     
        
    curl_setopt($chCURLOPT_URL$url);
        
    curl_setopt($chCURLOPT_HEADER0);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    $country curl_exec($ch);
     
        
    curl_close ($ch);
     
        
    // display according geotarget
        
    if ($country == "US") {
          
    showUSContent();
        } else {   
          
    showInternationalContent();
        }
      } 

      
    showGeoTargetContent();
    ?>
     
    • Thanks Thanks x 3