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

PHP & Base de données Discussion :

Géolocalisez mes visiteurs grâce à leur IP [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Par défaut Géolocalisez mes visiteurs grâce à leur IP
    Salut à tous,

    je développe en ce moment un site web( http://www.africacultureassociation.com/ ) dans lequel j'ai inséré un système de dédicaces. Je voudrais récupérer automatiquement le pays du visiteur qui saisit la dédicace sans lui demander de saisir son pays. après maintes recherches, je suis tombé sur un tutoriel. Après implémentation je me rend compte qu'en local j'ai l'erreur suivante :

    Notice: Undefined index: in C:\wamp\www\www.xxxxxxxxxx.com\exemple.php on line 12
    En production, c'est seulement une page blanche qui s'affiche et j'arrive toujours a récupéré le pays vu que echo $pays ne ramène rien.

    ci-dessous le code :

    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
     
    <?php
    include("geoipcity.inc");
    include("geoipregionvars.php");
     
    $gi = geoip_open(realpath("GeoLiteCity.dat"),GEOIP_STANDARD);
     
    //$ip = $_SERVER['REMOTE_ADDR'];
     
    $record = geoip_record_by_addr($gi,$_SERVER['REMOTE_ADDR']);
     
    echo $record['country_name'] . "\n";
    echo $GEOIP_REGION_NAME[$record['country_code']][$record['region']]. "\n";
    echo $record['city'] . "\n";
    echo $record['postal_code'] . "\n";
    echo $record['latitude'] . "\n";
    echo $record['longitude'] . "\n";
     
    $pays = $record['country_name'];
     
    echo $pays;
     
     
    geoip_close($gi);
     
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut debuguer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $record = geoip_record_by_addr($gi,$_SERVER['REMOTE_ADDR']);
    var_dump($_SERVER['REMOTE_ADDR']);
    var_dump($record);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tu devrais LIRE le tutoriel (que tu cites) !

    On peut y lire :
    Si votre site tourne en local, à l'aide de Wamp par exemple, vous vous retrouverez face à une page vide vu que <?php $_SERVER['REMOTE_ADDR'] ; ?> retournera 127.0.0.1.

    Pour récupérer l'IP du visiteur, j'ai trouvé une petite fonction simple :
    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
    <?php
    // VISITOR - récupération de l'adresse IP du visiteur
    function get_visitor_ip( )
    {
    	// -----------------
    	// on cherche d'abord à savoir si il est derrière un proxy
    	if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
    		$ip 	= $_SERVER['HTTP_X_FORWARDED_FOR'];
    	} elseif( isset($_SERVER['HTTP_CLIENT_IP']) ) {
    		$ip  	= $_SERVER['HTTP_CLIENT_IP'];
    	} else {
    		$ip 	= $_SERVER['REMOTE_ADDR'];
    	}
    	// -----------------
    	return $ip;
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ip = get_visitor_ip( );
    Reste à contrôler le retour.

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Par défaut
    Salut,

    Merci à tous pour vos réponses. Voici le code définitif qui me permet de récupérer le pays du visiteur. J'ai eu un petit souci avec les pays comportant des apostrophes raison pour laquelle j'ai utiliser la fonction str_replace. Si vous avez des suggestions je suis toujours disponible.

    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
     
    <?php
    include("geoipcity.inc");
    include("geoipregionvars.php");
     
    // VISITOR - récupération de l'adresse IP du visiteur
    function get_visitor_ip( )
    {
    	// -----------------
    	// on cherche d'abord à savoir si il est derrière un proxy
    	if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
    		$ip 	= $_SERVER['HTTP_X_FORWARDED_FOR'];
    	} elseif( isset($_SERVER['HTTP_CLIENT_IP']) ) {
    		$ip  	= $_SERVER['HTTP_CLIENT_IP'];
    	} else {
    		$ip 	= $_SERVER['REMOTE_ADDR'];
    	}
    	// -----------------
    	return $ip;
    };
     
    $gi = geoip_open(realpath("GeoLiteCity.dat"),GEOIP_STANDARD);
     
    $ip = get_visitor_ip( );
     
    $record = geoip_record_by_addr($gi,$ip);
     
    $pays = $record->country_name;
     
    $pays2 = strtoupper(str_replace("'"," ",$pays));
     
    var_dump($pays2);
     
    geoip_close($gi);
     
    ?>

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Par défaut
    Problème résolu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $pays2 = strtoupper(str_replace("'","\'",$pays));
     
    var_dump($pays2);
     
    geoip_close($gi);

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

Discussions similaires

  1. replacer mes vues dans leur positions d'origines
    Par delas dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 02/10/2007, 12h35
  2. [Système] Connaitre la ville de mes visiteurs
    Par boux2 dans le forum Langage
    Réponses: 5
    Dernier message: 05/04/2007, 15h19
  3. [PHP-JS] Savoir où vont mes visiteurs après mon site
    Par Poustik dans le forum Langage
    Réponses: 6
    Dernier message: 20/01/2007, 00h04
  4. [SimpleXML] Filtrer des balises grâce à leurs attributs
    Par tatayecorp dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 15/08/2006, 20h06
  5. Réponses: 5
    Dernier message: 16/02/2006, 16h27

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