您好,欢迎访问一九零五行业门户网

php如何获取客户端的ip地址?

一、如果没有使用代理服务器
remote_addr = 客户端ip
http_x_forwarded_for = 没数值或不显示
$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相关知识,请访问!
以上就是php如何获取客户端的ip地址?的详细内容。
其它类似信息

推荐信息