We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 28173
    • 409 Posts
    Si c’est juste pour récupérer le résultat de ta requête tu peux faire quelque chose comme ça
    Oui c’est exactement ce bout de code qui me manquait pour comprendre !
    Merci smiley
      • 28173
      • 409 Posts
      Je remonte ce topic car j’ai un petit problème avec le bout de code que j’ai ajouté.
      Rappel du script original et de mon ajout (en rouge):

      // CountPageHit - plugin for MODx 0.9.x
      // maintains a count of page views
      // 08-2006 [email protected]
      // Released to Public Domain
      // uses onWebPagePrerender system event
      // Manager users’ visits will not be counted.
      // Documents set to not Log Visits will not be counted.
      // requires PageHitCounter module to create the page_hit_counter table

      function get_client_ip_address() {
      $remote_addr = $_SERVER["REMOTE_ADDR"];
      if ( ( $remote_addr == "127.0.0.1" || $remote_addr == $_SERVER["SERVER_ADDR"] ) && $_SERVER["HTTP_X_FORWARDED_FOR"] ) {
      $remote_addrs = explode( ", ", $_SERVER["HTTP_X_FORWARDED_FOR"] );
      $remote_addr = $remote_addrs[0];
      }
      return $remote_addr;
      }

      $remote_ip = get_client_ip_address();


      global $table_prefix;

      if(!isset($_SESSION[’usertype’])) { $_SESSION[’usertype’] = ’’; }

      if($modx->documentObject[’donthit’] != 1 && $_SESSION[’usertype’] != ’manager’) {

      $sql = "INSERT INTO ".$table_prefix."page_hit_counter (page_id, page_count, page_last_ip) VALUES ($modx->documentIdentifier, 1, \"$remote_ip\")
      ON DUPLICATE KEY UPDATE page_count=page_count+1";
      $modx->db->query($sql);
      }
      return;
      L’idée, comme expliquée plus haut, est de loguer l’IP du dernier visiteur afin d’éviter une incrémentation du compteur suite à de multiples refreshs.

      Maintenant mon problème.
      Comme vous le voyez dans la partie en rouge, je déclare une fonction get_client_ip_address()
      En local, je n’avais pas de pb mais sur le serveur distant (sans doute mieux paramétré pour assurer une bonne sécurité), ça bloque : aucune page de mon site ne peut s’afficher : c’est la page blanche !
      Devant ce résultat qui est, reconnaissons-le, on ne peut plus "clair", voire même "épuré"... je suis allé voir dans le log du serveur :
      PHP Parse error:  syntax error, unexpected T_STRING in /home/mydomain/www/manager/includes/document.parser.class.inc.php(748) : eval()'d code on line 128
      PHP Fatal error:  Cannot redeclare get_client_ip_address() (previously declared in /home/mydomain/www/manager/includes/document.parser.class.inc.php(724) : eval()'d code:11) in /home/mydomain/www/manager/includes/document.parser.class.inc.php(724) : eval()'d code on line 10


      Première réaction : "ah bon ? elle était déjà déclarée ? Mais alors pourquoi mon compteur de visites refusait-il de fonctionner sans cette déclaration ?"
      J’ai donc essayé de supprimer la déclaration. Tjrs la page blanche.

      Deuxième réaction : "eh beh je vais renommer la déclaration de mon code en get_client_ip_address_compteur() pour voir!"
      Toujours la page blanche.

      Et là je bloque undecided
        • 20488
        • 353 Posts
        
        if (!function_exists('get_client_ip_address'))
        {
        function get_client_ip_address() {
              $remote_addr = $_SERVER["REMOTE_ADDR"];
              if ( ( $remote_addr == "127.0.0.1" || $remote_addr == $_SERVER["SERVER_ADDR"] ) && $_SERVER["HTTP_X_FORWARDED_FOR"] ) {
                 $remote_addrs = explode( ", ", $_SERVER["HTTP_X_FORWARDED_FOR"] );
                 $remote_addr = $remote_addrs[0];
              }
              return $remote_addr;
           }
        }
        


        As tu essayé ca ?
          • 28173
          • 409 Posts
          As tu essayé ca ?
          J’ai essayé, et même résultat :page blanche.
          Mais il y a plus intéressant : le serveur n’a pas du tout aimé !
          Je n’ai pas encore eu accès au fichier log, mais le fait est que j’ai trouvé 4 fichiers core de 150Mo chacun daté précisément de l’heure à laquelle j’ai fait le test !
          J’ai farfouillé un peu dedans et c’est clair que c’est MODx qui les a généré.

          Il faudrait voir le log pour plus de détail, mais je suis quasi persuadé que ce n’est pas tout à fait le code adéquat smiley