If the user uses a proxy server, the real IP is not in the HTTP_CLIENT_IP header, but needs to be parsed through the http header HTTP_X_FORWARDED_FOR.
The following php function:
-
- function GetIP() { //Get IP
- if ($_SERVER["HTTP_X_FORWARDED_FOR"])
- $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
- else if ( $_SERVER["HTTP_CLIENT_IP"])
- $ip = $_SERVER["HTTP_CLIENT_IP"];
- else if ($_SERVER["REMOTE_ADDR"])
- $ip = $_SERVER["REMOTE_ADDR"];
- else if (getenv( "HTTP_X_FORWARDED_FOR"))
- $ip = getenv("HTTP_X_FORWARDED_FOR");
- else if (getenv("HTTP_CLIENT_IP"))
- $ip = getenv("HTTP_CLIENT_IP");
- else if (getenv("REMOTE_ADDR"))
- $ip = getenv("REMOTE_ADDR");
- else
- $ip = "Unknown";
- return $ip;
- }
- ?>
Copy code
|