Primero tienen que bajar el texto donde se encuentra toda la informacion de los paises
http://ip-to-country.webhosting.info/node/view/6
vas a darle un click al link que dice
Download the latest IP-to-Country Database (Last updated on June 03 2009)
Aquí esta el link directo para bajar el archivo http://ip-to-country.webhosting.info...ountry.csv.zip
Ese archivo lo actualizan una vez cada mes aproximadamente. A veces más tiempo.
Luego usas una funcion que te permite comparar el codigo con el ip de la persona. Aqui les indico el que yo uso, pero el unico problema es que tienes que cambiar 1 cosa del archivo que bajes de ip-to-country.webhosting.info
1. algunos lugares salen al final con
, U.S.
y debes quitarle la coma a esa parte, lo que tienes que hacer es un replace para que salga solamente
U.S.
Nota: Puede que en la ultima actualización que este en el momento hayan quitado esta parte del texto.
Ok este es el codigo que yo uso
Código PHP:
Ver original
<?php /** * This class generates the country name and its flag from its IP address * * * @author Rochak Chauhan */ class CountryFromIP { private $CountryIPDatabase = 'CountryIPDatabase.txt'; private $ip = ''; /** * Function to validate IP ( please modify it according to your needs) * * @param $ip - string * * @return boolean */ public function ValdateIP($ip) { echo "<font color='red' size='3'> <b>ERROR: </b> Invalid IP</font>"; return false; } else { return true; } } /** * Function to return Country name from the IPDatabase * * @param $ip string * * @return string - name of the country, false otherwise */ public function GetCountryName($ip) { $this->ip = $ip; if($ip >= $arrayOfLine[0] && $ip <= $arrayOfLine[1] ) { return $countryName = $arrayOfLine[4]; } } return false; } /** * Function to return local path to Country's flag * * @param $ip - string * * @return string - local path to flag image */ public function ReturnFlagPath() { return "flag/$countryName.gif"; } else { return false; } } } $ip = $_SERVER["REMOTE_ADDR"]; $object = new CountryFromIP(); $countryName = $object->GetCountryName($ip); $flagPath = $object->ReturnFlagPath();
Aqui vas a indicar donde se encuentra el archivo que bajaste yo le cambie el nombre a esto
private $CountryIPDatabase = 'CountryIPDatabase.txt';
pero puedes dejarle el nombre como sale originalmente, y con la extension .csv.
Lo unico que tienes que hacer para saber de que pais viene es escribir
echo $countryName;
Para que te funcione $flagPath tendrias que bajar todas las banderas y aqui estan
http://rapidshare.com/files/311065106/flag.zip