php无法获取真实ip-php教程

资源魔 25 0

1、猎取用户实在IP地点

 public static function getClientIp()
 {
 if (getenv('HTTP_CLIENT_IP')) {
  $ip = getenv('HTTP_CLIENT_IP');
 }
 if (getenv('HTTP_X_REAL_IP')) {
  $ip = getenv('HTTP_X_REAL_IP');
 } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
  $ip = getenv('HTTP_X_FORWARDED_FOR');
  $ips = explode(',', $ip);
  $ip = $ips[0];
 } elseif (getenv('REMOTE_ADDR')) {
  $ip = getenv('REMOTE_ADDR');
 } else {
  $ip = '0.0.0.0';
 }

 return $ip;
 }

留意:

$_SERVER以及getenv的区分,getenv没有支持IIS的isapi形式运转的php。getenv(“REMOTE_ADDR”)函数正在 apache下能失常猎取ip地点,而正在iis中不作用,而$_SERVER['REMOTE_ADDR']函数,既可正在apache中胜利猎取访客的ip地点,正在iis下也一样无效。

2、对于REMOTE_ADDR

这个变量猎取到的是《间接起源》的 IP 地点,所谓《间接起源》指的是间接申请该地点的客户端 IP 。这个 IP 正在单效劳器的状况下,很精确的是客户端 IP ,无奈捏造。当然并非一切的顺序都肯定是单效劳器,比方正在采纳负载平衡的状况(比方采纳 haproxy 或许 nginx 进行负载平衡),这个IP就是转发机械的IP,由于进程是客户端->负载平衡->效劳端。是由负载平衡间接拜访的效劳端而没有是客户端。

3、对于 HTTP_X_FORWARDED_FOR 以及 HTTP_CLIENT_IP

正在负载平衡的状况下间接应用 REMOTE_ADDR 是无奈猎取客户端 IP 的,这就是一个成绩,必需处理。于是就衍生出了负载平衡端将客户端 IP 退出到 HEAD 中发送给效劳端,让效劳端能够猎取到客户真个实在 IP 。当然也就孕育发生了列位所说的捏造,究竟结果 HEAD 除了了协定里固定的那几个数据,其余数据都是可自界说的。

保举教程:PHP视频教程

以上就是php无奈猎取实在ip的具体内容,更多请存眷资源魔其它相干文章!

标签: php 获取 php开发教程 php开发资料 php开发自学 ip 真实

抱歉,评论功能暂时关闭!