Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/11/2011, 15:27
Avatar de hackjose
hackjose
 
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años, 7 meses
Puntos: 131
Obtener el pais del visitante con PHP

He buscado y lo encontre, solo que no se por que no funciona.

Vi un aporte de abimaelrc y con ese estoy tratando solo que no me queda.

codigo php

Código PHP:
Ver original
  1. <?php
  2. $ip = "189.143.104.60";
  3.  
  4. $obj = new CountryFromIP();
  5.  
  6. $countryName = $obj->GetCountryName($ip);
  7. $flagPath =  $obj->ReturnFlagPath();
  8.  
  9. if($countryName == "MEXICO")
  10. {
  11. echo "<meta http-equiv='Refresh' content='0;URL=http://www.google.com.mx/' />";
  12. }
  13. elseif($countryName == "ARGENTINA")
  14. {
  15. echo "<meta http-equiv='Refresh' content='0;URL=http://www.google.com.ar/' />";
  16. }
  17. elseif($countryName == "CHILE")
  18. {
  19. echo "<meta http-equiv='Refresh' content='0;URL=http://www.google.com.cl/' />";
  20. }
  21. else
  22. {
  23. echo "<meta http-equiv='Refresh' content='0;URL=http://www.google.cl/' />";
  24. }
  25.  
  26. /**
  27.  * This class generates the country name and its flag from its IP address
  28.  *
  29.  *
  30.  * @author Rochak Chauhan
  31.  */
  32. class CountryFromIP {
  33.  
  34.     private $CountryIPDatabase = 'ip-to-country.csv';
  35.     private $ip = '';
  36.  
  37.     /**
  38.      * Function to validate IP ( please modify it according to your needs)
  39.      *
  40.      * @param $ip - string
  41.      *
  42.      * @return boolean
  43.      */
  44.     public function ValdateIP($ip) {
  45.         $ipArray = explode(',',$ip);
  46.  
  47.         if(count($ipArray) != 5) {
  48.             echo "<font color='red' size='3'> <b>ERROR: </b> Invalid IP</font>";
  49.             return false;
  50.         }
  51.         else {
  52.             return true;
  53.         }
  54.     }
  55.  
  56.     /**
  57.      * Function to return Country name from the IPDatabase
  58.      *
  59.      * @param $ip string
  60.      *
  61.      * @return string - name of the country, false otherwise
  62.      */
  63.     public function GetCountryName($ip) {
  64.         $this->ip = $ip;
  65.         $ip = sprintf("%u", ip2long($ip));
  66.  
  67.         $csvArray = file($this->CountryIPDatabase);
  68.  
  69.         for($i=0; $i<count($csvArray); $i++){
  70.             $setCsv = str_replace("\"", "", $csvArray[$i]);
  71.             $arrayOfLine = explode(',', $setCsv);
  72.             if($ip >= $arrayOfLine[0] && $ip <= $arrayOfLine[1] ) {
  73.                 return $countryName = $arrayOfLine[4];
  74.             }
  75.         }
  76.         return false;
  77.     }
  78.  
  79.     /**
  80.      *  Function to return local path to Country's flag
  81.      *
  82.      * @param $ip - string
  83.      *
  84.      * @return string - local path to flag image
  85.      */
  86.     public function ReturnFlagPath() {
  87.  
  88.         if($countryName = trim(ucwords(strtolower($this->GetCountryName($this->ip))) )) {
  89.             $countryName = str_replace(' ','%20',$countryName);
  90.             return "flag/$countryName.gif";
  91.         }
  92.         else {
  93.             return false;
  94.         }
  95.     }
  96.  
  97. }
  98. ?>

falla en la parte de los if's a la hora de redireccionar, en que esta mal?
direccion del .csv
http://ip-to-country.webhosting.info...ountry.csv.zip

aporte
http://www.forosdelweb.com/f18/aport...visita-708776/