/** * Get IP * * @access public * @return string */ public static function getClientIP() { if (self::$ClientIP !== FALSE) { return self::$ClientIP; } $CieIP = (isset($_SERVER['HTTP_CLIENT_IP']) and $_SERVER['HTTP_CLIENT_IP'] != "") ? $_SERVER['HTTP_CLIENT_IP'] : FALSE; $RemIP = (isset($_SERVER['REMOTE_ADDR']) and $_SERVER['REMOTE_ADDR'] != "") ? $_SERVER['REMOTE_ADDR'] : FALSE; $ForIP = (isset($_SERVER['HTTP_X_FORWARDED_FOR']) and $_SERVER['HTTP_X_FORWARDED_FOR'] != "") ? $_SERVER['HTTP_X_FORWARDED_FOR'] : FALSE; if ($CieIP && $RemIP) { self::$ClientIP = $CieIP; } elseif ($RemIP) { self::$ClientIP = $RemIP; } elseif ($CieIP) { self::$ClientIP = $CieIP; } elseif ($ForIP) { self::$ClientIP = $ForIP; } if (strstr(self::$ClientIP, ',')) { $x = explode(',', self::$ClientIP); self::$ClientIP = end($x); } // checked IP address $CheckIP = new IPValidator(); if (!$CheckIP->isValid(self::$ClientIP)) { self::$ClientIP = '0.0.0.0'; } unset($CheckIP); unset($CieIP); unset($RemIP); unset($ForIP); return self::$ClientIP; }