在全局魔术变量$_SERVER中,有三个量存储了ip
第一个:
HTTP_X_FORWARDED_FOR有clientip,proxy1,proxy2....代理ip。使用逗号,进行分隔。所以使用他获取用户的ip。
第二个:
HTTP_CLIENT_IP这个是一个可能存在的ip
第三个:
REMOTE_ADDR可以通过代理伪装起来,但是这个ip是与你的服务器真正进行连接的服务器。
按照上面的顺序依次获取ip
获取ip的代码如下:
$ip = ''; if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], 'unknown')) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; strpos($ip, ',') && list($ip) = explode(',', $ip); } else if (!empty($_SERVER['HTTP_CLIENT_IP']) && strcasecmp($_SERVER['HTTP_CLIENT_IP'], 'unknown')) { $ip = $_SERVER['HTTP_CLIENT_IP']; } else if (!empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $ip = $_SERVER['REMOTE_ADDR']; } return $ip;