IP dels comentaris a un WordPress

/ 25 octubre 04 / Programari, Pràctic
Babel: Español / English / Français

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 :)

Deixau un comentari (o no)

PHVsPjxsaT48c3Ryb25nPndvb19hYm91dDwvc3Ryb25nPiAtIEJsb2cgZGUgQmVuamFtw60gVmlsbG9zbGFkYSwgYml0w7JsZWcgaSB0b3RlcjwvbGk+PGxpPjxzdHJvbmc+d29vX2Fib3V0bGluazwvc3Ryb25nPiAtIGh0dHA6Ly9ibG9nLmJpdGFzc2EuY2F0L2F1dG9yLzwvbGk+PGxpPjxzdHJvbmc+d29vX2Fkc19yb3RhdGU8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfMTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtMS5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV8yPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMTI1eDEyNS0yLmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzM8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTMuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfNDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtNC5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF91cmxfMTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8yPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzM8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hZF91cmxfNDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FsdF9zdHlsZXNoZWV0PC9zdHJvbmc+IC0geWVsbG93LmNzczwvbGk+PGxpPjxzdHJvbmc+d29vX2N1c3RvbV9jc3M8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fZmF2aWNvbjwvc3Ryb25nPiAtIGh0dHA6Ly9ibG9nLmJpdGFzc2EuY2F0L3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvNC1mYXZpY29uLmljbzwvbGk+PGxpPjxzdHJvbmc+d29vX2ZlZWRidXJuZXJfdXJsPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZ29vZ2xlX2FuYWx5dGljczwvc3Ryb25nPiAtIDxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPg0KdmFyIGdhSnNIb3N0ID0gKChcImh0dHBzOlwiID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sKSA/IFwiaHR0cHM6Ly9zc2wuXCIgOiBcImh0dHA6Ly93d3cuXCIpOw0KZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoXCIlM0NzY3JpcHQgc3JjPVwnXCIgKyBnYUpzSG9zdCArIFwiZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanNcJyB0eXBlPVwndGV4dC9qYXZhc2NyaXB0XCclM0UlM0Mvc2NyaXB0JTNFXCIpKTsNCjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCI+DQp0cnkgew0KdmFyIHBhZ2VUcmFja2VyID0gX2dhdC5fZ2V0VHJhY2tlcihcIlVBLTIyOTcxOC03XCIpOw0KcGFnZVRyYWNrZXIuX3RyYWNrUGFnZXZpZXcoKTsNCn0gY2F0Y2goZXJyKSB7fTwvc2NyaXB0Pg0KPCEtLSBTdGFydCBvZiBTdGF0Q291bnRlciBDb2RlIC0tPg0KPGEgaHJlZj1cImh0dHA6Ly93d3cuc3RhdGNvdW50ZXIuY29tL1wiIHRhcmdldD1cIl9ibGFua1wiPjxpbWcgc3JjPVwiaHR0cDovL2MxMS5zdGF0Y291bnRlci5jb20vY291bnRlci5waHA/c2NfcHJvamVjdD0xMTUzMjAxJmFtcDtqYXZhPTAmYW1wO3NlY3VyaXR5PWJiYzU1Zjk2JmFtcDtpbnZpc2libGU9MVwiIGFsdD1cIndlYiBzdGF0cyBhbmFseXNpc1wiIGJvcmRlcj1cIjBcIiAvPjwvYT4NCjwhLS0gRW5kIG9mIFN0YXRDb3VudGVyIENvZGUgLS0+PC9saT48bGk+PHN0cm9uZz53b29faG9tZTwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29faG9tZV9hcmNoaXZlczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfZmxpY2tyX2NvdW50PC9zdHJvbmc+IC0gMTA8L2xpPjxsaT48c3Ryb25nPndvb19ob21lX2ZsaWNrcl91cmw8L3N0cm9uZz4gLSBodHRwOi8vZmxpY2tyLmNvbS9waG90b3MvYmVuamFtaTwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfZmxpY2tyX3VzZXI8L3N0cm9uZz4gLSA4NTEyNDY5OEBOMDA8L2xpPjxsaT48c3Ryb25nPndvb19ob21lX2xpZmVzdHJlYW08L3N0cm9uZz4gLSAxMDA8L2xpPjxsaT48c3Ryb25nPndvb19ob21lX3Bvc3RzPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fbG9nbzwvc3Ryb25nPiAtIGh0dHA6Ly9ibG9nLmJpdGFzc2EuY2F0L3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvMy1sb2dvLWJpdGFzc2EucG5nPC9saT48bGk+PHN0cm9uZz53b29fbWFpbnJpZ2h0PC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19tYW51YWw8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vc3VwcG9ydC90aGVtZS1kb2N1bWVudGF0aW9uL2lycmVzaXN0aWJsZS88L2xpPjxsaT48c3Ryb25nPndvb19uYXY8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX3Nob3J0bmFtZTwvc3Ryb25nPiAtIHdvbzwvbGk+PGxpPjxzdHJvbmc+d29vX3RhYnM8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX3RoZW1lbmFtZTwvc3Ryb25nPiAtIElycmVzaXN0aWJsZTwvbGk+PGxpPjxzdHJvbmc+d29vX3VwbG9hZHM8L3N0cm9uZz4gLSBhOjI6e2k6MDtzOjYwOiJodHRwOi8vYmxvZy5iaXRhc3NhLmNhdC93cC1jb250ZW50L3dvb191cGxvYWRzLzQtZmF2aWNvbi5pY28iO2k6MTtzOjY1OiJodHRwOi8vYmxvZy5iaXRhc3NhLmNhdC93cC1jb250ZW50L3dvb191cGxvYWRzLzMtbG9nby1iaXRhc3NhLnBuZyI7fTwvbGk+PGxpPjxzdHJvbmc+d29vX3ZpZGVvPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjwvdWw+ web stats analysis