一、假如没有运用代办服务器
REMOTE_ADDR = 客户端IP HTTP_X_FORWARDED_FOR = 没数值或不显现(引荐进修:PHP视频教程)
$ip = $_SERVER['REMOTE_ADDR'];
二、运用通明代办
REMOTE_ADDR = 末了一个代办服务器 IP
HTTP_X_FORWARDED_FOR = 客户端实在 IP (经由多个代办服务器时,这个值相似:221.5.252.160, 203.98.182.163, 203.129.72.215)
这类代办还会将客户实在ip发送到要求对象,没法隐蔽实在ip。
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
三、运用一般匿名代办服务器
REMOTE_ADDR = 末了一个代办服务器 IP
HTTP_X_FORWARDED_FOR = 代办服务器 IP (经由多个代办服务器时,这个值相似:203.98.182.163, 203.98.182.163, 203.129.72.215)
如许就隐蔽了客户端的实在ip,但服务器会晓得客户端是经由过程代办服务器去接见的。
四、运用欺骗性代办服务器
REMOTE_ADDR = 代办服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP(经由多个代办服务器时,这个值相似:220.4.251.159, 203.98.182.163, 203.129.72.215)
服务器能够辨认到时经由过程代办服务器接见的,但发送给目的服务器的是子虚ip。
五、运用高匿名代办
REMOTE_ADDR = 代办服务器 IP HTTP_X_FORWARDED_FOR = 没数值或不显现
运用这类代办时,差别浏览器差别装备会返回差别的ip头信息,因而PHP运用$_SERVER["REMOTE_ADDR"] 、$_SERVER["HTTP_X_FORWARDED_FOR"] 猎取的值多是空值也多是“unknown”值。
PHP猎取ip代码以下:
public function ip() { //strcasecmp 比较两个字符,不辨别大小写。返回0,>0,<0。 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $ip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $ip = $_SERVER['REMOTE_ADDR']; } $res = preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : ''; echo $res; //dump(phpinfo());//一切PHP设置信息 }
以上就是php怎样猎取客户端ip地点的细致内容,更多请关注ki4网别的相干文章!