Heim >Backend-Entwicklung >PHP-Tutorial >PHP中HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR的使用_PHP教程

PHP中HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR的使用_PHP教程

WBOY
WBOYOriginal
2016-07-20 11:15:591132Durchsuche

参考来源:http://qq398705749.iteye.com/blog/963818

1.REMOTE_ADDR:浏览当前页面的用户计算机的ip地址
2.HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关
3.:客户端的ip

在PHP 中使用 来取得客户端的 IP 地址。

但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 来读取。

不过要注意,并不是每个代理服务器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP。

还有一点需要注意的是:来访问,那么用$_SERVER["HTTP_X_FORWARDED_FOR"] 取到的值将是空的。

Php代码 复制代码 收藏代码PHP中HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR的使用_PHP教程if ($_SERVER['HTTP_X_FORWARDED_FOR'] && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_X_FORWARDED_FOR'])) {     

  •       $onlineip = $_SERVER['HTTP_X_FORWARDED_FOR'];     
  • elseif  ($_SERVER['HTTP_CLIENT_IP']  && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_CLIENT_IP'])) {     
  •       $onlineip = $_SERVER['HTTP_CLIENT_IP'];    
  • }   
  • if ($_SERVER['HTTP_X_FORWARDED_FOR'] && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_X_FORWARDED_FOR'])) {  
          $onlineip = $_SERVER['HTTP_X_FORWARDED_FOR'];  
    } elseif  ($_SERVER['HTTP_CLIENT_IP']  && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_CLIENT_IP'])) {  
          $onlineip = $_SERVER['HTTP_CLIENT_IP']; 
    } 
    



    获取用户IP地址的三个属性的区别 (HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR) :

    一、没有使用代理服务 器的情况

    = 您的 IP
    = 没数值或不显示
    = 没数值或不显示

    二、使用透明代理服务器的情 况:Transparent Proxies

    = 最后一个代理服务器 IP
    = 代理服务器 IP
    = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

    这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

    三、使用普通匿名代理服务器的情况:Anonymous Proxies

    = 最后一个代理服务器 IP
    = 代理服务器 IP
    = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

    隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

    四、使用欺骗性代理服务器的情况:Distorting Proxies

    = 代理服务器 IP
    = 代理服务器 IP
    = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

    告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

    五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

    = 代理服务器 IP
    = 没数值或不显示
    = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

    完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。 

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440138.htmlTechArticle参考来源:http://qq398705749.iteye.com/blog/963818 1. REMOTE_ADDR :浏览当前页面的用户计算机的ip地址 2. HTTP_X_FORWARDED_FOR : 浏览当前页面的用户计算机的...
    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn