Partage
  • Partager sur Facebook
  • Partager sur Twitter

je n'arrive à télécharger l'API PHP

    28 mai 2017 à 17:27:35

    Bonsoir!

    -Dans ma gestion de localisation de mes visiteurs, j'ai lu le tuto de Professeur Mateo;

    mais les fichiers(geoip.inc,geoipcity.inc et geoipregionvars.php)qu'il soumet à télécharger ne corresponde pas à ce qui est téléchargé(php-1.11.tar) après le décompression;

    pardon aidez moi si quelqu’un a un bon lien car je suis parti sur le site officiel, n'ai rien compris;

    -Encore je voudrais une explication sur comment transformer GeoLiteCity.dat  qui est un fichier binaire, en mode ASCII.

    merci d'avance!

    -
    Edité par sandaff 28 mai 2017 à 17:28:33

    • Partager sur Facebook
    • Partager sur Twitter
      29 mai 2017 à 23:02:09

      J'ai reçu à télécharger les trois fichiers mais il y a un autre problème;

      il ne reconnait pas les fonctions geoip_open() et geoip_record_by_addr();

      voici le message d'erreur du premier:

      Fatal error: Call to undefined function geoip_open() in D:\wamp\www\celerite\emplois.php on line 4



      • Partager sur Facebook
      • Partager sur Twitter
        7 juin 2017 à 2:17:02

        mes professeurs, vous m'aviez abandonné?
        • Partager sur Facebook
        • Partager sur Twitter
          9 juin 2017 à 1:26:00

          Salut !

          Tu dois dire d'une manière ou d'une autre dans tes scripts leur dire qu'il y a de nouveaux fichiers qui contiennent de nouvelles fonctions. Le plus simple est probablement d'utiliser require_once.

          • Partager sur Facebook
          • Partager sur Twitter
            9 juin 2017 à 15:03:24

            Merci  Monsieur Ymox!

            voici le code en entier:

            <?php
            include("geoloc/geoipcity.inc");
            include("geoloc/geoipregionvars.php");
            $gi = geoip_open(realpath("GeoLiteCity.dat"),GEOIP_STANDARD);
            $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";
            
            geoip_close($gi);
            
            ?>

            Je ne crois donc pas si require_once a sa place ici;

            dejà là ou on peut l'utiliser il y a include() laba

            merci!

            • Partager sur Facebook
            • Partager sur Twitter
              15 juin 2017 à 15:59:13

              Quelsqu'un peux m'aide pour la librairie geoip_open() et geoip_record_by_addr()?

              merci

              • Partager sur Facebook
              • Partager sur Twitter
                15 juin 2017 à 16:07:31

                Si tu remplaces tes include par require_once, tu aurais peut-être une erreur qui te permettrait d'avancer…

                • Partager sur Facebook
                • Partager sur Twitter
                  15 juin 2017 à 18:42:43

                  Bonsoir Monsieur;

                  voici le code à nouveau:

                  <?php
                  require_once 'geoloc/geoipcity.inc';
                  require_once 'geoloc/geoipregionvars.php';
                  /*include("geoloc/geoipcity.inc");
                  include("geoloc/geoipregionvars.php");*/
                  $gi = geoip_open(realpath("GeoLiteCity.dat"),GEOIP_STANDARD);
                  $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";
                  
                  geoip_close($gi);
                  
                  ?>

                  voici le code erreur:

                  #if defined _geoipcity_included #endinput #endif #define _geoipcity_included /** * @section IP addresses can contain ports, the ports will be stripped out. */ /** * Gets the GeoIP record from an IP address. * * @param ip Ip to determine the country code. * @param city Destination string buffer to store the city name. (45 characters max) * @param region The region/province/state name. (45 characters max) * @param country_name The country name. (45 characters max) * @param country_code The two character country code. (US, CA, etc) * @param country_code3 The three character country code. (USA, CAN, etc) * @return True on success, false if no record found. */ native bool:GeoipGetRecord(const String:ip[], String:city[45], String:region[45], String:country_name[45], String:country_code[3], String:country_code3[4]); /** * @endsection */ /** * Do not edit below this line! */ public Extension:__ext_geoipcity = { name = "GeoIPCity", file = "geoipcity.ext", #if defined AUTOLOAD_EXTENSIONS autoload = 1, #else autoload = 0, #endif #if defined REQUIRE_EXTENSIONS required = 1, #else required = 0, #endif }; #if !defined REQUIRE_EXTENSIONS public __ext_geoipcity_SetNTVOptional() { MarkNativeAsOptional("GeoipGetRecord"); } #endif
                  ( ! ) Fatal error: Call to undefined function geoip_open() in D:\wamp\www\celerite\emplois.php on line 6
                  Call Stack
                  #	Time	Memory	Function	Location
                  1	0.0010	147872	{main}( )	..\emplois.php:0




                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 juin 2017 à 11:26:11

                    Les commentaires de la ligne 1 font partie du message d'erreur ? On dirait du code C… Et c'est pas vraiment normal, à mon avis.

                    -
                    Edité par Ymox 16 juin 2017 à 11:28:19

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 juin 2017 à 1:29:22

                      Bonsoir;

                      Comme c'est ma première fois d'implémenter ce code, ça me donne aussi la migraine;

                      quand je test il affiche ce que vous voyez puis le message d'erreur sur la ligne 2;

                      quand je mets en commentaire 

                      $gi = geoip_open(realpath("GeoLiteCity.dat"),GEOIP_STANDARD);

                      ça affiche:

                      #if defined _geoipcity_included #endinput #endif #define _geoipcity_included /** * @section IP addresses can contain ports, the ports will be stripped out. */ /** * Gets the GeoIP record from an IP address. * * @param ip Ip to determine the country code. * @param city Destination string buffer to store the city name. (45 characters max) * @param region The region/province/state name. (45 characters max) * @param country_name The country name. (45 characters max) * @param country_code The two character country code. (US, CA, etc) * @param country_code3 The three character country code. (USA, CAN, etc) * @return True on success, false if no record found. */ native bool:GeoipGetRecord(const String:ip[], String:city[45], String:region[45], String:country_name[45], String:country_code[3], String:country_code3[4]); /** * @endsection */ /** * Do not edit below this line! */ public Extension:__ext_geoipcity = { name = "GeoIPCity", file = "geoipcity.ext", #if defined AUTOLOAD_EXTENSIONS autoload = 1, #else autoload = 0, #endif #if defined REQUIRE_EXTENSIONS required = 1, #else required = 0, #endif }; #if !defined REQUIRE_EXTENSIONS public __ext_geoipcity_SetNTVOptional() { MarkNativeAsOptional("GeoipGetRecord"); } #endif 

                      puis erreur:

                       ! ) Fatal error: Call to undefined function geoip_record_by_addr() in D:\wamp\www\celerite\emplois.php on line 7
                      Call Stack
                      #	Time	Memory	Function	Location
                      1	0.2550	146584	{main}( )	..\emplois.php:0





                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 juin 2017 à 3:41:35

                        Où est-ce qu'on peut télécharger exactement les mêmes fichiers ?

                        J'aimerais le lien vers la page qui contient le lien direct, ainsi que le lien direct (donc deux liens, j'insiste).

                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 juin 2017 à 17:32:06

                          voici le lien du tuto:https://openclassrooms.com/courses/geolocalisez-vos-visiteurs-grace-a-leur-ip;

                          moi aussi j'ai tout fait pour télécharger avec le lien du tuto: téléchargez l'API PHP  qui n'a pas marché;

                          j'ai fait des recherches un a un sur google pour les télécharger car le site officiel étais incompréhensible pour moi à cause de l'anglais;

                          Je voudrais vous envoyer les trois fichiers mais comment? je vois pas de lien envois de fichier sur zero.

                          voici mon mail:sandaff2009@yahoo.fr;

                          je pourrais vous les envoyer à travers yahoo;

                          merci!


                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 juin 2017 à 22:53:36

                            La version de l'API PHP est vraiment vieille, on en est à une version 2.5, c'est la version 1.11 que tu sembles avoir utilisée.

                            Mais il y a une chose que je crois avoir compris : le fichier .inc est un plug-in qui pourrait être inclus dans PHP quand on compile ce dernier manuellement. Autrement, il n'est pas utile. Tu devrais pouvoir enlever la ligne 2 de ton nouveau code, à mon avis.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 juin 2017 à 1:39:38

                              Bonsoir Monsieur Ymox;

                              Je suis aller dans WAMPSERVER puis PHP et version;je trouve que la version est:5.4.16;

                              ensuite j'ai enleve cette ligne: require_once 'geoloc/geoipcity.inc';

                              ça n'affiche plus le code C mais il revois toujours l'erreur:

                               ! ) Fatal error: Call to undefined function geoip_open() in D:\wamp\www\celerite\emplois.php on line 6
                              Call Stack
                              #	Time	Memory	Function	Location
                              1	0.1420	147112	{main}( )	..\emplois.php:0

                              merci!

                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 juin 2017 à 10:38:40

                                Est-ce que le fichier sample_region.php que tu as dans l'archive fonctionne chez toi ? Je n'arrive pas à trouver le fichier .dat sur le site de MaxMind, seulement ceux pour la nouvelle version de leur API.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 juin 2017 à 16:05:51

                                  Bonsoir Monsieur ymox;

                                  Je ne sais pas de quelle fichier parlez vous?

                                  j'ai geoip.inc, geoipcity.inc, geoipregionvars.php, GeoLiteCity.dat;

                                  tout ces fichiers sont présent dans le dossier geoloc ;je ne sais pas comment le tester autrement

                                  merci;

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 juin 2017 à 16:09:35

                                    Dans l'archive que j'ai téléchargé depuis le lien que tu m'as donné, il n'y a pas que ces 4 fichiers. Parmi ceux-ci, il y a des "échantillons" (samples). Il faudrait déjà que ceux-ci fonctionnent.

                                    Et je parle du fichier sample_region.php.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      20 juin 2017 à 20:18:14

                                      Bonsoir Monsieur ymox;

                                      Alors là je ne sais pas comment et où vous aviez téléchargé ça?

                                      Dans la partie:<<Voici maintenant, le lien que vous attendez tous... le lien de téléchargement de la base de données GeoLite. Eh bien, le voici !>> j'ai labas  GeoLiteCity.dat.gz et en decompressant j'ai GeoLiteCity.dat;

                                      et dans la partie:<<Maintenant, téléchargezl'API PHPet décompressez là. Nous allons avoir besoins des fichiers suivant :

                                      • geoip.inc

                                      • geoipcity.inc

                                      • geoipregionvars.php

                                      >> j'ai php-1.11.tar.gz et en decompressant j'ai  php-1.11.tar;

                                      En gros je ne sais pas comment les utilisés car je n'ai pas les fichiers geoip.inc, geoipcity.inc, geoipregionvars.php;

                                      donc je suis aller dans google les cherchés un à un;

                                      Comment aviez vous fait?

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        21 juin 2017 à 1:08:06

                                        Les fichiers .tar.gz sont des "doubles archives", donc décompresser juste une fois ne sert à rien, il faut aussi le faire avec le fichier .tar.

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          21 juin 2017 à 6:26:19

                                          Bonsoir Monsieur Ymox;
                                          j'ai décompressé comme vous m'aviez dit et j'ai ramené les trois fichiers dans geoloc;
                                          geoipcity.inc
                                          geoipregionvars.php
                                          sample_region.php
                                          mais ce fichier:
                                          GeoLiteCity.dat n'existe pas dedans donc j'ai gardé la copie que j'ai téléchargé sur google;
                                          ça ramène maintenant cette erreur:
                                          Warning: fopen(): Filename cannot be empty in D:\wamp\www\celerite\geoloc\geoip.inc on line 385
                                          merci!
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            21 juin 2017 à 16:41:33

                                            Le code que tu utilises est toujours le même ?

                                            Est-ce que tu as une pile d'appel complète, ou juste cette erreur sans autre ligne ? Parce que ce serait intéressant de savoir quel appel de ton code pose problème.

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              21 juin 2017 à 21:31:02

                                              Quand on enlève la ligne geoipcity.inc ça renvois

                                              les mêmes errerurs:

                                              Call to undefined function geoip_open() in D:\wamp\www\celerite\emplois.php on line 4



                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                21 juin 2017 à 22:24:57

                                                Tu n'as pas répondu à ma question.

                                                La ligne que tu as tenté d'enlever est nécessaire, vu que c'est ce qui permet de faire en sorte que la fonction geoip_open() est définie.

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  22 juin 2017 à 21:29:37

                                                  Bonsoir Monsieur Ymox;

                                                  Bon je vous ai dèjà dit que je ne sais pas comment tester le bon  fonctionnement de sample_region.php

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    22 juin 2017 à 22:11:13

                                                    Ce fichier, c'est un script PHP qui peut être ouvert comme tout autre script PHP. Seulement, il se base sur les régions, alors que si j'ai bien compris, tu veux les villes. C'est donc sample_city.php qui nous intéresse ici.

                                                    Pour le tester, il faut donc le placer quelque part sur le serveur avec les fichiers geoip.inc et geoipregionvars.php dans le même dossier. Il faut aussi y mettre le fichier GeoLiteCity.dat. Ensuite, il faut modifier la ligne 10 du fichier sample_city.php pour que dans la chaîne de caractères en premier paramètre de geoip_onel() il ne reste plus que le nom du fichier.
                                                    Ensuite de quoi, tu utilises ton navigateur pour accéder au script comme si c'était une page d'un site, et tu regardes ce qui en sort.

                                                    Tout ça pour dire qu'au final, il doit y avoir un problème avec le chemin du fichier GeoLiteCity.dat, parce que chez moi, ça fonctionne. Ce fichier.dat, il est où par rapport au script donné ici ? utiliser realpath() ne va pas faire que le fichier soit magiquement trouvé. Avec le code mentionné, il faut que le fichier soit au même endroit que le script qui en a besoin. Si ce n'est pas le cas, ça ne fonctionnera pas.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      23 juin 2017 à 16:01:13

                                                      Bonsoir Monsieur Ymox;

                                                      Je suis nul en php mais pas aussi au point d'oublier de mettre dans le dossier dans le quels je travail, les fichiers que j'ai besoin;

                                                      je veux savoir comment vous aviez eus le fichier GeoLiteCity.dat?

                                                      car moi je l'ai eus en cherchant dans google et comme vous l'aviez dit c'est là le problème c'est pas un bon fichier.

                                                      après avoir décompressé le dossier .tar.gz comme vous m'aviez dit et j'ai ramené les trois fichiers dans geoloc mais je n'ai pas trouvé le fichier  GeoLiteCity.dat dedans;

                                                      mais aussi le problème n'est pas finit car je veux savoir si l'erreur liée à geoipcity.inc est lié aussi au même problème;

                                                      Vous aviez dit que si vous aviez compris que j'ai besoin des villes;

                                                      je dit non mais j’aurai besoin aussi dans un autre projet les villes; pour l'instant je veux récupérer les pays de chaque user pour lui charge 

                                                      la page qui lui concerne;

                                                      mais dans mon second projet je dois aussi récupérer les villes des contactes;

                                                      merci!

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        23 juin 2017 à 16:29:29

                                                        Alors GeoLiteCity.dat n'est effectivement pas fourni dans l'archive, il faut le télécharger à côté depuis cette page. A noter que, comme le nom l'indique, c'est un fichier qui ne contient que les villes, il en faudra un autre pour les pays (à télécharger au même endroit).

                                                        L'erreur liée à geoipcity.inc vient de ce que ce fichier est obligatoire. S'il te plait, prends le temps de regarder les exemples (les fichiers nommés sample_*.php) pour comprendre comment utiliser l'outil.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          26 juin 2017 à 4:37:50

                                                          Bonsoir Monsieur Ymox;

                                                          Dans tout ça le chemin d'accès étais mal indiqué:$gi = geoip_open(realpath("geoloc/GeoLiteCity.dat"),GEOIP_STANDARD);

                                                          Après tout ça passe sauf les erreurs de récupération des données:

                                                           Notice: Trying to get property of non-object in D:\wamp\www\celerite\emplois.php on line 7
                                                          Call Stack
                                                          #	Time	Memory	Function	Location
                                                          1	0.0020	147880	{main}( )	..\emplois.php:0
                                                          
                                                          ( ! ) Notice: Trying to get property of non-object in D:\wamp\www\celerite\emplois.php on line 8
                                                          Call Stack
                                                          #	Time	Memory	Function	Location
                                                          1	0.0020	147880	{main}( )	..\emplois.php:0
                                                          
                                                          ( ! ) Notice: Trying to get property of non-object in D:\wamp\www\celerite\emplois.php on line 8
                                                          Call Stack
                                                          #	Time	Memory	Function	Location
                                                          1	0.0020	147880	{main}( )	..\emplois.php:0
                                                          
                                                          ( ! ) Notice: Undefined index: in D:\wamp\www\celerite\emplois.php on line 8
                                                          Call Stack
                                                          #	Time	Memory	Function	Location
                                                          1	0.0020	147880	{main}( )	..\emplois.php:0
                                                          
                                                          ( ! ) Notice: Trying to get property of non-object in D:\wamp\www\celerite\emplois.php on line 9
                                                          Call Stack
                                                          #	Time	Memory	Function	Location
                                                          1	0.0020	147880	{main}( )	..\emplois.php:0
                                                          
                                                          ( ! ) Notice: Trying to get property of non-object in D:\wamp\www\celerite\emplois.php on line 10
                                                          Call Stack
                                                          #	Time	Memory	Function	Location
                                                          1	0.0020	147880	{main}( )	..\emplois.php:0
                                                          
                                                          ( ! ) Notice: Trying to get property of non-object in D:\wamp\www\celerite\emplois.php on line 11
                                                          Call Stack
                                                          #	Time	Memory	Function	Location
                                                          1	0.0020	147880	{main}( )	..\emplois.php:0
                                                          
                                                          ( ! ) Notice: Trying to get property of non-object in D:\wamp\www\celerite\emplois.php on line 12



                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            26 juin 2017 à 12:30:21

                                                            Les erreurs, c'est bien, avec le code qui les cause, c'est encore mieux

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              30 juin 2017 à 3:25:12

                                                              Bonsoir Monsieur Ymox;

                                                              j'ai cherché le problème mais je 'arrive pas;

                                                              c'est cette partie qui créer le problème:

                                                              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";
                                                              



                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              je n'arrive à télécharger l'API PHP

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown