function GetIP(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp( getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv ("REMOTE_ADDR"); else if (isset($_SERVER[REMOTE_ADDR]) && $_SERVER[REMOTE_ADDR] && strcasecmp($_SERVER[REMOTE_ADDR], "unknown")) $ip = $_SERVER[REMOTE_ADDR]; else $ip = "unknown"; return($ip); } Even if the user accesses the Internet through a proxy server, his IP can be found. But the type of proxy server is required to be transparent. If the proxy server is anonymous or high anonymous, HTTP_X_FORWARDED_FOR cannot do anything.