2010-12-12 48 views
3

J'ai une adresse IP ($_SERVER['REMOTE_ADDR']) et je dois recevoir (apprendre) le nom du pays et ce serait bien si je peux recevoir (apprendre) le nom de la ville aussi. Et n'oubliez pas C'est PHP-projet, API utile - très bien.Comment créer une fonctionnalité GeoIP dans un projet PHP?

P.S. C'est un projet open-source et nous devons utiliser uniquement des outils libres et open-source.

+0

http: //php.net/manual/fr/book.geoip.php – infinity

Répondre

1

PHP a quelques fonctionnalités utiles GeoIP-functions. Ils devraient être suffisants:

$details = geoip_record_by_name($_SERVER['REMOTE_ADDR']); 
echo $details['city']; 
+2

Ce n'est pas parce qu'ils sont dans le manuel qu'ils sont intégrés, vous savez ... Celui-ci ne l'est pas. –

4

Aucun (seul le fichier 'GeoIP.dat' est nécessaire). Pour télécharger une base de données gratuite GeoIP Standard Country , aller à http://maxmind.com/download/geoip/database/

Installer

Il suffit de placer le fichier 'geoip.inc' quelque part conformément à la directive 'include_path' de votre fichier 'php.ini', ou placez-le simplement dans le même répertoire que vos scripts PHP.

Utilisation

gets nom du pays par le nom d'hôte:

include("geoip.inc"); 

$gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD); 

echo geoip_country_code_by_addr($gi, "24.24.24.24") . "\t" . 
    geoip_country_name_by_addr($gi, "24.24.24.24") . "\n"; 
echo geoip_country_code_by_addr($gi, "80.24.24.24") . "\t" . 
    geoip_country_name_by_addr($gi, "80.24.24.24") . "\n"; 

HTH.

+1

Merci! M'a aidé une tonne, +1. Mais notez que vous devez 'geoip_close()' et que vous aurez besoin des autres bases de données pour rassembler des noms de villes et d'ASN (leur FAI) et le support IPv6 nécessite que les bases de données soient suffixées par "v6". –

+1

Cela devrait être la meilleure réponse. services gratuits comme 'ipinfo.io' ne sont pas fiables J'ai toujours eu un message d'erreur et un certain temps, ils interdisent l'adresse IP. Enfin, ils utilisent la même DB à partir de leur site "Ce produit comprend des données GeoLite2" –

0

Dans un environnement Linux 1. sudo yum install php56-devel geoip geoip-devel php-pear 2. sudo pecl install geoip 3. Extension = geoip.so (ajoutez cette ligne dans le fichier php.ini) 4. Déplacez le fichier .dat dans/usr/share/dossier GeoIP

dans un environnement Windows 1. déplacer .dll dans le dossier ext 2. déplacer le fichier .dat dans le dossier apache/bin 3. Ajouter l'extension dll dans php.ini