$_SERVER参数HTTP_X_FORWARDED_FOR & REMOTE_ADDR与获取IP

2019-08-05 18:18栏目:编程学习

在PHP 中使用 $_SERVER["REMOTE_ADDR"] 来获得客户端的 IP 地址,但假诺客户端是应用代理服务器来拜会,那取到的正是代理服务器的 IP 地址,并不是实在的客户端 IP 地址。要想经过代理服务器获得客户端的实在 IP 地址,将要动用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。

一、未有动用代理服务器的景况:

可是要稳重的事,实际不是种种代理服务器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真正 IP,有个别用此办法读取到的如故是代理服务器的 IP。

      REMOTE_ADDR = 您的 IP
      HTTP_VIA = 没数值或不出示
      HTTP_X_FORWARDED_FO凯雷德 = 没数值或不显得

 

二、使用透秦代理服务器的情状:Transparent Proxies

再有点亟待注意的是:要是客户端从未经过代理服务器来拜访,那么用$_SERVER["HTTP_X_FORWARDED_FOR"] 取到的值将是空的。由此,假诺要在先后中央银行使此办法,能够这么管理:

      REMOTE_ADDRAV4 = 最终一个代理服务器 IP
      HTTP_VIA = 代理服务器 IP
      HTTP_X_FORWARDED_FO哈弗 = 您的忠实 IP ,经过八个代理服务器时,这几个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

 代码如下

   那类代理服务器依然将您的音讯转载给您的拜谒对象,不能达到遮蔽真实身份的目标。

<?php

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

if ($_SERVER["HTTP_X_FORWARDED_FOR"]==”")

      REMOTE_ADDCRUISER = 最终三个代理服务器 IP
      HTTP_VIA = 代理服务器 IP
      HTTP_X_FORWARDED_FO景逸SUV = 代理服务器 IP ,经过多少个代理服务器时,这一个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

{

   掩饰了您的诚实IP,不过向访谈对象揭露了你是利用代理服务器访谈他们的。

$user_ip=$_SERVER["REMOTE_ADDR"];

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

}

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

else

   告诉了会见对象您使用了代理服务器,但编造了一个假冒伪造低劣的任意IP替代您的真实IP棍骗它。

$user_ip=$_SERVER["HTTP_X_FORWARDED_FOR"];

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

?>

      REMOTE_ADDHaval = 代理服务器 IP
      HTTP_VIA = 没数值或不出示
      HTTP_X_FORWARDED_FO中华V = 没数值或不出示 ,经过八个代理服务器时,那个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

即:假诺客户端通过代理服务器,则取 HTTP_X_FORWARDED_FO奇骏的值,假设没通过代理服务器,就取 REMOTE_ADDR 的值。

   完全用代理服务器的音讯代替了你的装有音讯,就象您便是完全选拔那台代理服务器间接访问对象

得到客户端真实的IP地址

事例1(获取用户真正IP地址)

 代码如下

HP获取用户真正IP地址代码如下

function GetIP(){

 代码如下

if (getenv(“HTTP_CLIENT_IP”) && strcasecmp(getenv(“HTTP_CLIENT_IP”), “unknown”))

 function getIp() {

$ip = getenv(“HTTP_CLIENT_IP”);

  if($_SERVER['HTTP_CLIENT_IP']) {

else if (getenv(“HTTP_X_FORWARDED_FOR”) && strcasecmp(getenv(“HTTP_X_FORWARDED_FOR”), “unknown”))

  $ip = $_SERVER['HTTP_CLIENT_IP'];    //PHP获取IP

$ip = getenv(“HTTP_X_FORWARDED_FOR”);

  } elseif ($_SERVER['HTTP_X_FORWARDED_FOR']) {

else if (getenv(“REMOTE_ADDR”) && strcasecmp(getenv(“REMOTE_ADDR”), “unknown”))

  $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

$ip = getenv(“REMOTE_ADDR”);

  } else {

else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], “unknown”))

  $ip = $_SERVER['REMOTE_ADDR'];    //PHP获取IP

$ip = $_SERVER['REMOTE_ADDR'];

  }

else

  }

$ip = “unknown”;

例子2

return($ip);

 代码如下

}

<?php

得到用户IP地址的多少个天性的界别 (HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
一、未有应用代理服务器的情事:

/*

REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不出示
HTTP_X_FORWARDED_FOCR-V = 没数值或不显得

mktime:2012/9/9

二、使用透西晋理服务器的动静:Transparent Proxies

*/
//获取用户实际IP
function get_client_ip() {
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else
if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else
if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else
if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return ($ip);
}
echo $ip=get_client_ip();//那就是您的ip地址
?>

REMOTE_ADD奥迪Q3 = 最后三个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOSportage = 您的看名称就能想到其意义 IP ,经过多少个代理服务器时,这么些值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

那类代理服务器仍旧将你的音信转载给您的拜候对象,不可能实现掩盖真实身份的指标。

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

REMOTE_ADD奥迪Q5 = 最终三个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOWrangler = 代理服务器 IP ,经过七个代理服务器时,那么些值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

躲藏了你的真实性IP,但是向访谈对象表露了您是利用代理服务器访谈他们的。

四、使用欺诈性代理服务器的事态:Distorting Proxies

REMOTE_ADDOdyssey = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOLacrosse = 随机的 IP ,经过多少个代理服务器时,那么些值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

报告了拜访对象您使用了代理服务器,但编造了多少个虚假的率性IP替代您的真人真事IP期骗它。

五、使用高无名代理服务器的状态:High Anonymity Proxies (Elite proxies)

REMOTE_ADD瑞鹰 = 代理服务器 IP
HTTP_VIA = 没数值或不出示
HTTP_X_FORWARDED_FOENCORE = 没数值或不出示 ,经过三个代理服务器时,这一个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

统统用代理服务器的新闻替代了你的享有音讯,就象您正是完全采纳这台代理服务器直接待上访谈对象。

 代码如下

<?php
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif (getenv("HTTP_X_FORWARDED_FOR"))
{
$ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP"))
{
$ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("REMOTE_ADDR"))
{
$ip = getenv("REMOTE_ADDR");
}
else
{
$ip = "Unknown";
}
echo "你的IP:".$ip ;
?>

版权声明:本文由威尼斯人app发布于编程学习,转载请注明出处:$_SERVER参数HTTP_X_FORWARDED_FOR & REMOTE_ADDR与获取IP