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 :

Fonction de géolocalisation des visiteurs (ip-api.com) qui ne marche plus


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Août 2003
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2003
    Messages : 111
    Points : 63
    Points
    63
    Par défaut Fonction de géolocalisation des visiteurs (ip-api.com) qui ne marche plus
    Bonjour,

    J'ai une fonction de géolocalisation basé sur l'api "ip-api.com" qui me sert a obtenir des infos sur la provenance des visiteurs et qui l'enregistre dans un fichier .txt

    Mais sans que je n'ai rien modifié elle ne marche plus.

    Pourtant si je saisi le lien de l'API généré par ma fonction dans un navigateur, j'accède bien au JSON exemple (http://ip-api.com/json/108.38.250.62)

    Je précise que mon site est hébergé chez OVH

    voici ma fonction :

    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
    	$url = "http://ip-api.com/json/".$_SERVER[REMOTE_ADDR];
     
    	$options = ["http"=>["timeout" => 20,],];
    	$contexte = stream_context_create($options);
    	@$Request = file_get_contents($url,FALSE, $contexte);
     
    	@$result = json_decode($Request,true);
    	@$Ville = $result['city'];
    	@$Pays = $result['country'];
    	@$Fournisseur = $result['isp'];
    	@$Latitude = $result['lat'];
    	@$Longitude = $result['lon'];
     
    	$Source = "Direct";
    		if (isset($_SERVER['HTTP_REFERER']))
    			{
    			$Source = $_SERVER['HTTP_REFERER'];
    			}
     
    	@$Phrase = date('Y-m-d H:i:s').",$_SERVER[PHP_SELF],$_SERVER[REMOTE_ADDR],$Ville,$Pays,$Fournisseur,$Source \r\n";
    	$monfichier = fopen('Logs/log.txt', 'a+');
    	fputs($monfichier, $Phrase);
    	fclose($monfichier);

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Salut,

    Que vaut ta variable $Request après le file_get_content() ?

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 888
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 888
    Points : 6 632
    Points
    6 632
    Par défaut
    La première chose à faire, c'est de virer tous les @ pour voir les messages d'erreurs. Ça te donnera déjà une piste.

  4. #4
    Invité
    Invité(e)
    Par défaut
    La 2ème est de mettre les apostrophes manquantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER[PHP_SELF],$_SERVER[REMOTE_ADDR]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SERVER['PHP_SELF'],$_SERVER['REMOTE_ADDR']

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Ce site a une limite de 15 requêtes max par minute. Essaie de soumettre l'IP de ton serveur ici.

  6. #6
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Août 2003
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2003
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Apparemment un problème entre OVH et IP-API.com

    En faisant une recherche "file_get_contents ovh" sur google je retrouve plusieurs cas similaire avec ip-api.com

    En local cette fonction tourne sans problème. J'ai fait les modifs conseillées mais rien de mieux.

    Sur le serveur OVH voici l'erreur retournée : Warning: file_get_contents(http://ip-api.com/json/xx.xxx.xxx.xx): failed to open stream: Connection timed out in /home/xxxxxxxxxxx/www/Functions/Log.php on line 14
    bool(false)

    Je continue mes investigations. Merci à vous 4 d'avoir pris le temps de répondre.

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Si ton site est hébergé sur un mutualisé et donc partage son IP avec des centaines (milliers?) d'autres sites, le timeout résulte bien d'un ban si un (ou plusieurs) sites ont abusé. Et il est possible que l'IP ait été bannie depuis un bon bout de temps.

  8. #8
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Août 2003
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2003
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Oui c'est ce que je me suis dit aussi. Mais ce qui est bizarre c'est que cela a marcher pendant plusieurs mois avant.

    De plus si je fait un var_dump($_SERVER['SERVER_ADDR']) et que je soumets l'adresse dans la page d'Unban IP ca me met Error: IP XXX.XXX.XXX.XXX is not banned

    Je vais tenter avec une autre api.

    Merci à toi

Discussions similaires

  1. [PHP 5.2] Fonction qui ne marche plus
    Par ronylicha dans le forum Langage
    Réponses: 4
    Dernier message: 14/10/2010, 11h32
  2. Réponses: 10
    Dernier message: 18/07/2007, 19h02
  3. Fonction qui marchait et qui ne marche plus(?)
    Par strat0 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/02/2007, 17h49
  4. [Mail] fonction mail () qui ne marche plus
    Par breizhgen dans le forum Langage
    Réponses: 6
    Dernier message: 01/09/2006, 19h53
  5. Fonction Length qui ne marche plus
    Par Manic dans le forum Langage
    Réponses: 4
    Dernier message: 03/05/2006, 13h52

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