IP dels comentaris a un WordPress

WordPress per defecte enregistra l’adreça IP del proxy de qui envia comentaris, no la real. Les connexions d’alguns proveïdors d’ADSL passen per proxy-cau, cosa que fa que molts comentaris tenguin la mateixa adreça IP. Per canviar aquest detall, basta fer una petita modificació a wp-comments-post.php.

Cal localitzar la línia $user_ip = $_SERVER['REMOTE_ADDR']; i comentar-la o esborrar-la. A continuació, heu d’entrar el codi que recollirà l’adreça IP de qui fa el comentari:

if (preg_match('/^(d{1,3}.){3}d{1,3}$/s', $_SERVER["HTTP_CLIENT_IP"])) {
  $user_ip = $_SERVER["HTTP_CLIENT_IP"];
  } else {
    if (preg_match('/^(d{1,3}.){3}d{1,3}$/s', $_SERVER["HTTP_X_FORWARDED_FOR"])) {
      $user_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
      } else {
        if (preg_match('/^(d{1,3}.){3}d{1,3}$/s', $_SERVER["REMOTE_HOST"])) {
          $user_ip = $_SERVER["REMOTE_HOST"];
          } else {
            $user_ip = $_SERVER["REMOTE_ADDR"];
          }
      }
  }

En comptes d’usar sempre la variable REMOTE_ADDR, en primer lloc cerca la IP a HTTP_CLIENT_IP, després a HTTP_X_FORWARDED_FOR i finalment a REMOTE_HOST. Es quedarà amb la primera que trobi. HTTP_CLIENT_IP i HTTP_X_FORWARDED_FOR solen desar la del visitant, però el detall pot canviar en algunes connexions. Ho podeu veure amb la funcio phpinfo().

L’expressió regular comprova que es tracta d’una adreça IPv4: una cadena que comença (^) amb 3 seqüències de entre 1 i 3 dígits separades per un punt i que finalitza ($) amb entre 1 i 3 dígits més.

El codi no és cosa meva. L’he trobat a varis webs cercant experiències amb els proxy-cau i les IP —aquí un. Al web de PHP hi ha una discussió sobre com recollir l’adreça IP i més codi vàlid. Tot plegat és fàcil d’entendre i correcte, així que endavant amb els copipastes 🙂

Entrades relacionades

Deixa un comentari

This site uses Akismet to reduce spam. Learn how your comment data is processed.