IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Localiser un internaute [PHP 5.0]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 38
    Par défaut Localiser un internaute
    Bonjour à tous,

    J'aimerais ajouter dans ma page un endroit ou est inscrit la ville de connexion de l'internaute. Après une recherche sur google j'ai vu que ceci était possible via l'adresse IP. J'ai ensuite chercher un web service d'ip locator. Mais il sont tous payant.

    Alors mes questions sont les suivantes :
    - Ne peut on localiser un internaute que par son IP ?
    - Existe t'il des web service ou API gratuite ?

    Merci d'avance pour votre aide,

    C

  2. #2
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    Le plus simple est de demander à ton hébergeur d'activer les fonctions de géolocalisation (s'il est gros sans même sans doute déjà le cas), ainsi tu pourras récupérer toutes les infos que tu souhaite dans la globale $_SERVER.

    Après, ces données ne sont vraiment pas fiables, il n'existe aucun moyen 100% fiable de le faire. Tu ne pourras jamais récupérer qu'une région approximative (celle où se situe le premier proxy du visiteur), parfois très loin de chez lui.

    Bon courage !

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 38
    Par défaut
    Merci beaucoup.

    Sinon en fouillant un peu plus j'ai trouve un script que j'ai adapté.

    Pas très propre, mais il fonctionne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    $a=array();
    // verification proxy
    if ($_SERVER['REMOTE_PORT'] == 80) { 
     
    $ip_avant = $_SERVER["REMOTE_ADDR"];
    //get localisation
    $ip2country = @ip2country($ip_avant);
    }
     
    print_r($ip2country["city"] );
     
    function ip2country($ipadress)
    {
    $surl = "http://whatismyipaddress.com/ip/". $ipadress;
    $data = "LOOKUPADDRESS=" . $ipadress;
    $geolocalisation = do_post_request($surl, $data);
     
    preg_match("#<tr><th>City:</th><td>(.*?)</td></tr>#is", $geolocalisation, $city, PREG_OFFSET_CAPTURE);
     
    $a = array ("city" => trim($city[1][0]), "lat" => trim($lat[1][0]), "lng" => trim($lng[1][0]));
    return $a;
    }
     
    function do_post_request($url, $data, $optional_headers = null) {
    $start = strpos($url,'//')+2;
    $end = strpos($url,'/',$start);
    $host = substr($url, $start, $end-$start);
    $domain = substr($url,$end);
    $fp = pfsockopen($host, 80);
    if(!$fp) return null;
    fputs ($fp,"POST $domain HTTP/1.1\n");
    fputs ($fp,"Host: $host\n");
    if ($optional_headers) {
    fputs($fp, $optional_headers);
    }
    fputs ($fp,"Content-type: application/x-www-form-urlencoded\n");
    fputs ($fp,"Content-length: ".strlen($data)."\n\n");
    fputs ($fp,"$data\n\n");
    $response = "";
    while(!feof($fp)) {
    $response .= fgets($fp, 1024);
    }
    fclose ($fp);
    return $response;
    }

  4. #4
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    J'imagine que tu as vu ça

    Deux petites remarques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $surl = "http://whatismyipaddress.com/ip/". $ipadress;
    l'IP de ton serveur va vite être blacklistée, si tu as de nombreuses requêtes à faire cherche un moyen plus légal (et regarde vraiment si dans ton $_SERVER tu n'as pas déjà quelque chose, c'est vraiment probable si tu es hébergé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ip_avant = $_SERVER["REMOTE_ADDR"];
    Pour récupérer l'IP de ton visiteur, utilise plutôt ceci

  5. #5
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 38
    Par défaut
    Merci beaucoup. Je vais trouver un web service pour être plus dans la légalité.

    Merci pour tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Google Maps] localisation internaute (ville ou département)
    Par Crystal73 dans le forum APIs Google
    Réponses: 1
    Dernier message: 15/06/2013, 13h15
  2. Réponses: 4
    Dernier message: 18/01/2011, 18h00
  3. Réponses: 19
    Dernier message: 31/10/2005, 15h04
  4. [VB6] Localiser un dossier spécial de Windows
    Par Rohan Michel dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 05/10/2004, 08h20
  5. Localisation d'une base Postgresql sur mdk 9.1
    Par Gregco dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 10/06/2003, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo