--- fenglin/lib/client_addr.inc.php 2004/06/10 11:27:10 1.1 +++ fenglin/lib/client_addr.inc.php 2004/06/20 19:49:02 1.3 @@ -2,10 +2,41 @@ function Client_Address() { - if (isset($_SERVER["HTTP_X_CLIENT_ADDR"])) - return $_SERVER["HTTP_X_CLIENT_ADDR"]; - else - return $_SERVER["REMOTE_ADDR"]; + $proxy_ip = array( + "^61.129.42.22[01]$", + "^203.95.5.66$", + "^10.85.31.[0-9]{1,3}$", + "^192.168.176.57$" + ); + + foreach($proxy_ip as $ip) + { + if (ereg($ip,$_SERVER["REMOTE_ADDR"])) + { + if (isset($_SERVER["HTTP_X_CLIENT_ADDR"])) + { + $client_addr = explode(",",$_SERVER["HTTP_X_CLIENT_ADDR"]); + for($i=count($_SERVER["HTTP_X_CLIENT_ADDR"])-1;$i>=0;$i--) + { + $proxy = false; + foreach($proxy_ip as $ip) + { + if (ereg($ip,$_SERVER["REMOTE_ADDR"])) + $proxy = true; + } + if (!$proxy) + return trim($client_addr[$i]); + } + return trim($client_addr[0]); + } + else + { + return $_SERVER["REMOTE_ADDR"]; + } + } + } + + return $_SERVER["REMOTE_ADDR"]; } ?>