begin process at 2012 05 27 21:37:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > GEO CODING PHP POUR GOOGLE MAPS OU AUTRE

GEO CODING PHP POUR GOOGLE MAPS OU AUTRE


 Information sur la source

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :google, maps, géolocalisation, geocoding, geocode Niveau :Initié Date de création :14/04/2007 Date de mise à jour :23/04/2007 20:12:59 Vu :19 718

Auteur : falken80

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

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

  • // 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);
  • }
  • }
// 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);
	}
}



 Historique

15 avril 2007 00:01:41 :
Echos en commentaires
23 avril 2007 20:11:49 :
Rectification "$session=split('|',$_COOKIE["session"]);" et non $session==split('|',$_COOKIE["session"]); ;)
23 avril 2007 20:12:59 :
_

 Sources de la même categorie

Source avec une capture MODULE JOOMLA 1.5 NOW LISTENING par Alcantornet
Source avec Zip Source avec une capture UPLOAD CENTER par basssem81
Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture GÉOLOCALISATION par pgl10
Source avec Zip GDATA CLASS par darkis
Source avec Zip TRADUCTION DE FICHIERS DE LANGUE AVEC GOOGLE GTRANSLATE par madislak
Source avec une capture AFFICHAGE RESULTATS RECHERCHE TYPE GOOGLE par mdc888fr
Source avec Zip Source avec une capture N/X API: GOOGLE MAPS DEPUIS PHP VALID W3C par GillesWebmaster

Commentaires et avis

Commentaire de jeje11991 le 15/04/2007 21:31:29

Bonjour,
Ton script ne fonctionne pas comme je n'arrive pas à faire l'include de la page.
l'erreur :
Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/olympe-network/xx/xxxxx.php on line 14

Warning: include(http://api.hostip.info/get_html.php?ip=xxxxx&position=true) [function.include]: failed to open stream: no suitable wrapper could be found in /home/olympe-network/xxx/xxxxx.php on line 14

Warning: include() [function.include]: Failed opening 'http://api.hostip.info/get_html.php?ip=xxxxxx&position=true' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/olympe-network/xxx/xxxxxxx.php on line 14

Commentaire de FhX le 15/04/2007 21:42:55

URL file-access is disabled in the server configuration


C'est marqué pourquoi ca ne marche pas chez toi.
C'est pas de sa faute.

Commentaire de jeje11991 le 15/04/2007 21:50:46

oui oui, je ne savais pas qu'il éxistait encore des hébergeur qui n'autaurisait pas les include externe, mais sur un autre ca a fonctionné

9/10

Commentaire de oox le 22/04/2007 12:22:02

Erreur dans le code :
$session==split('|',$_COOKIE["session"]);

Ne serait-ce pas plutôt :
$session=split('|',$_COOKIE["session"]);

Commentaire de falken80 le 23/04/2007 20:09:53

Si tout a fait, je rectifie cela :)

Commentaire de 6000charleroi le 12/08/2007 16:13:43

Ce code est très intéressant. Merci.
Une chose saute cependant aux yeux : la structure de la base de données des irrationnelles. Il n'est pas utile de stocker le nom de la ville + latitude et longitude pour chaque IP.

Il faudrait donc une table "villes" comprenant un ID unique, le nom, la latitude et la longitude (et pourquoi pas le pays, ce serait utile),et la table "geocodes" devrait contenir uniquement l'adresse IP et l'ID de la ville.

Dans plusieurs pays, on peut trouver sur les sites des Postes des listes complètes des localités du pays, avec leur code postal (souvent sous forme de fichiers Excel, qu'on peut récupérer facilement dans une table MySQL). Pour la France, avec le code postal on connaît aussi la région.
On devrait donc pouvoir créer sans trop de difficulté une table avec toutes les localités des pays dont proviennent la plupart des visites sur un site, avec nom de la ville, code postal (donc région) et bien entendu latitude et longitude. A partir de là, afficher une carte ou une photo satellite devient relativement enfantin avec l'aide de Google Maps.

Commentaire de 6000charleroi le 12/08/2007 16:16:23

Sorry. Ci-dessus, bien lire :
"la structure de la base de données est irrationnelle".

Si, si j'avais relu, je le jure !   :-)

Commentaire de kymm le 04/03/2008 17:37:08

Pour les webmasters qui le désirent, je fournis un script PHP sur mon site Internet http://www.WeLive.fr dans la rubrique Géolocalisation par IP.
Le script PHP vous retourne les informations sous forme de variables PHP : Pays, Drapeau du pays, Région-Département-Code Postal pour la France, Ville.
Celui-ci nécessite une inscription préalable aux fins d'éviter que n'importe qui l'utilise.

A bientôt

WeLive.fr

Commentaire de falken80 le 19/07/2011 11:33:14

Hum 6000charleroi  tu sais une ville couvre plusieurs latitudes et longitudes et donc on est obligé de le faire par IP.
Ce qui rend aussi beaucoup plus précise la localisation.
Bien sûr la base du coups est amenée à grossir énormément ou d'avoir des résultats incorrects pour les réseaux d'entreprise à IP unique et sur plusieurs villes mais sinon ça fonctionne.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Google Maps (Distance) [ par kakoo ] Bonjour,J'ai beau chercher, je n'arrive pas à trouver de classes (ou un bout de source) me permettant de récupérer la distance (voir le temps de parco Google Maps - Forum PHPBB [ par 4lman78 ] Bonjour,Je souhaite rajouter à mon site : www.poussieresdepistes.com une carte avec tous les membres.J'ai un site avec un forum phpbb 3.4, j'ai rajout API GOOGLE MAPS [ par 4lman78 ] Bonjour à tous, J'ai un fichier de 1600 adresses à localiser sur une carte avec l'API google MAPS. Y-a t-il une source qui pourrait m'aider? Passe PHP et Google maps API [ par jofer1989 ] bonjour Je possède un site de chambres d'hôtes (1500 chambres répertoriées dans une BDD) et je voudrais mettre pour chacune d'elle une localisation G Google mpas api et php [ par easysofts ] Bonjour,Généralement je ne poste pas et je trouve ma réponse tous seul, mais mon niveau de débutant, ne me permet pas de trouver pour ceci,je veux aff Google Maps Api [ par lammiiaa ] Bonjour,Je travaille avec google maps api et je veux afficher un point sur le map en utilisant GlatLng,mais les coordonnees en parametres de GlatLng s Google Maps! probleme de texte [ par totalhackerz ] Bonjour, je voudrai incorporai dans mon site Google Maps! j'ai donc suivi un tuto aucun probleme pour le tuto mais le s Google maps meteo [ par DrMaboul71 ] Bonjour,Je doit creer une application web avec l'API goolge mapsJ'ai eu une idée je voudrais rajouter un module de meteo genre un lien sur lequel l'ut Problème fonction et coordonnées BDD [ par gnut ] Bonjour, Je suis nouveau ici et novice en PHP. Voila je souhaite faire le lien entre les coordonnées de ma BDD et le script google MAP API. Trop de Google Maps API & PHP [ par begueradj ] Bonjour, Peut-on utiliser Google Maps plusieurs fois sur son site par une même clé ?


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales