Dotclear : patch pour loger les IP réelle des clients utilisants un proxy (sauf les IP privées)
Par Fred le vendredi 27 février 2009, 08:29 - Lien permanent
Dans le fichier inc/clearbricks/common/lib.http.php
***************
*** 129,134 ****
--- 129,150 ----
*/
public static function realIP()
{
+ if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
+ $rfc1918 = array(
+ 167772160, /* 10.0.0.0/8 */
+ 2886729728, /* 172.16.0.0/20 */
+ 3232235520, /* 192.168.0.0/16 */
+ );
+ $ip = ip2long($_SERVER['HTTP_X_FORWARDED_FOR']);
+ $private_ip = false;
+ foreach($rfc1918 as $reseau)
+ if ($ip & $reseau == $reseau) {
+ $private_ip = true;
+ break;
+ }
+ if (!$private_ip) return($_SERVER['HTTP_X_FORWARDED_FOR']);
+ }
+
return isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null;
}




Commentaires