<?php
$record = geoip_record_by_name('192.1.1.1');
if ($record) {
print_r($record);
}
?>
cet exemple affichera:
Code : Tout sélectionner
Array
(
[continent_code] => NA
[country_code] => US
[country_code3] => USA
[country_name] => United States
[region] => CA
[city] => Marina Del Rey
[postal_code] =>
[latitude] => 33.9776992798
[longitude] => -118.435096741
[dma_code] => 803
[area_code] => 310
)
J'avoue la doc manque d'exemples mais ce n'est pas très compliqué à mettre en place :salut,
merci pour le lien j'ai regardé et le tout à l'air très bien mais me semble assez complexe est lour n'a t il pas plus simple pour pouvoir avoir la ville du visiteur du site via son ip ?
require_once 'src/autoload.php';
$geocoder = new \Geocoder\Geocoder();
$adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
$result = $geocoder->registerProvider(new \Geocoder\Provider\HostIpProvider($adapter))
->geocode('78.223.254.30');
var_dump($result->getCity()); // Nantes
L'avantage c'est que tu peux changer de fournisseur de données simplement en remplaçant son nom par celui indiqué sur le site geocoder...
Après avoir relu des messagas au-dessus, je me donne une question, tout ce qu'il concerne est hord de ma connaissance. Et je m'a appris quelques mes aims dont les réponds n'étaient pas clair.
<?php
// on va chercher le fichier
require_once 'src/autoload.php';
$geocoder = new \Geocoder\Geocoder();
$adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
$result = $geocoder->registerProvider(new \Geocoder\Provider\HostIpProvider($adapter))
// test avec mon ip
->geocode($_SERVER["REMOTE_ADDR"]);
// je prefere avec echo :)
echo $result->getCity();
?>
<?php
// on va chercher le fichier
require_once 'src/autoload.php';
$geocoder = new \Geocoder\Geocoder();
$adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
$result = $geocoder->registerProvider(new \Geocoder\Provider\GeoPluginProvider($adapter))
// test avec mon ip
->geocode($_SERVER["REMOTE_ADDR"]);
echo $result->getCity();
Un truc important, il faut que tu évalues ton besoin pour être sûr que tu ne dépasses pas ce qui est possible de faire gratuitement car tous ces services ont une offre de base gratuite mais sont limitées en nombre de requêtes, par exemple GeoPlugin est limité à 120 demandes de géolocalisation par minutes, au delà, ils ont une version payante. Ou alors, il faut regarder du côté des autres fournisseurs, c'est pour cela qu'il est souvent nécessaire de créer un compte pour avoir une clé d'API.<?php
include("geoipcity.inc");
include("geoipregionvars.php");
$gi = geoip_open(realpath("GeoLiteCity.dat"),GEOIP_STANDARD);
$record = geoip_record_by_addr($gi,$_SERVER['REMOTE_ADDR']);
$la = $record->latitude;
$lo = $record->longitude;
$url = "http://maps.google.com/maps/geo?output=csv&q=".$la.",".$lo;
if($csv = file_get_contents($url))
{
if(substr($csv,0,3)!=200)
{
die("Erreur");
}
else
{
$adresse = substr($csv, 7, -1);
echo $adresse;
}
}
else
{
echo "Erreur";
}
geoip_close($gi);
?>
Va peut être falloir que tu lises la doc du script que je te recommande car il y a une raison si je te l'ai recommandéSalut alors ca tombe juste avec ton script nikel c pil poil la ou jabite sachant que c'est un village de 2000 habitants c'est pas mal.
Mamind à l'air bien mais petit problème la précision à l'air d'être faible.
Maitenant grace au script je recupere sous la forme d'une variable la ville et je pourrais associé ce nom de ville à un code postal et faire ainsi un affichage au visiteur en fonction de sa localisation.
getCoordinates() will return an array with latitude and longitude values;
getLatitude() will return the latitude value;
getLongitude() will return the longitude value;
getBounds() will return an array with south, west, north and east values;
getStreetNumber() will return the street number/house number value;
getStreetName() will return the street name value;
getCity() will return the city;
getZipcode() will return the zipcode;
getCityDistrict() will return the city district, or sublocality;
getCounty() will return the county;
getCountyCode() will return the county code (county short name);
getRegion() will return the region;
getRegionCode() will return the region code (region short name);
getCountry() will return the country;
getCountryCode() will return the ISO country code;
getTimezone() will return the timezone.
Ah, je croyais que tu voulais le code postal uniquement pour en ressortir la latitude, longitude par un autre moyen.ui ca me renvoi bien les infos jsui d'accord mais pas le code postal.
j'ai peut etre pas compris ce ke tu ma dis