Geo coding php pour google maps ou autre

Contenu du snippet

Il sert à localiser l'utilisateur "géographiquement" par coordonnés latitude longitude et pour lui afficher des infos spécifiques pour sa région par exemple.
Il utilise le site hostip pour récupérer certaines informations.
Il utilise une base de données mysql pour y stocker les ips et les coordonnées associés pour éviter de trop pomper le site hostip. ( je vous conseille d'y participer d'ailleurs )
Il utilise les cookies pour limiter les requêtes mysql.

Source / Exemple :


// Base mysql à creer :
/*
CREATE TABLE `geocodes` (
  `id` int(20) NOT NULL auto_increment,
  `ip` varchar(30) NOT NULL default '',
  `ville` varchar(255) NOT NULL default '',
  `latitude` varchar(15) NOT NULL default '0',
  `longitude` varchar(15) NOT NULL default '0',
  PRIMARY KEY  (`id`)
)

  • /
// Connection $host = ""; $user = ""; $pass = ""; $bdd = ""; $link=mysql_connect($host,$user,$pass) or die("Impossible de se connecter à la base de données"); // Le @ ordonne a php de ne pas afficher de message d'erreur mysql_select_db($bdd, $link) or die("Impossible de se connecter à la base de données"); // Lance la fonction au début d'un script geocode(); // La fonction function geocode() { // Test si les infos (ip..) sont dans un cookie if ($_COOKIE["session"]!="") { $session=split('|',$_COOKIE["session"]); //echo "RECUPERATION DU GEOCODE DANS LE COOKIE<br>"; $ip=$session[0]; $ville=$session[1]; $latitude=$session[2]; $longitude=$session[3]; } else { // Test si l'ip est dans la base //echo "RECUPERATION DU GEOCODE DANS LA BASE<br>"; $ip=$_SERVER['REMOTE_ADDR']; $query="SELECT * FROM geocodes WHERE ip='".$ip."'"; $mysql_result = mysql_query($query,$link); $nom_table = mysql_fetch_array($mysql_result); $num_rows = mysql_num_rows($mysql_result); if ($num_rows>0) {$ville=$nom_table['ville'];$latitude=$nom_table['latitude'];$longitude=$nom_table['longitude'];} // Si elle n'est pas dans la base on va l'y ajouter if ($num_rows==0) { //echo "CREATION DU GEOCODE DANS LA BASE<br>"; ob_start(); // on recupere notre ville et latitude longitude sur le site hostip // je vous conseille d'ailleurs d'y participer include('http://api.hostip.info/get_html.php?ip='.$ip.'&position=true'); $geocode=ob_get_contents(); ob_end_clean(); $tab_geocode=split ("\n", $geocode, 5); $vil_geocode=split (" ", $tab_geocode[1], 5); $lat_geocode=split (" ", $tab_geocode[2], 5); $lon_geocode=split (" ", $tab_geocode[3], 5); $ville=$vil_geocode[1]; $latitude=$lat_geocode[1]; $longitude=$lon_geocode[1]; $query="INSERT INTO geocodes VALUES('','".$ip."','".$ville."','".$latitude."','".$longitude."')"; //echo $query; $mysql_result = mysql_query($query,$link); } // Création du cookie qui expire à la fin de la session s'il n'existe pas pour éviter/économiser les requêtes //echo "CREATION DU GEOCODE DANS LE COOKIE<br>"; setcookie("session",$ip."|".$ville."|".$latitude."|".$longitude); } }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.