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

$_SERVER参数HTTP_X_FORWARDED_FOR & REMOTE_ADDR与获取IP_PHP教程

1.remote_addr:浏览当前页面的用户计算机的ip地址2.http_x_forwarded_for: 浏览当前页面的用户计算机的网关3.http_client_ip:客户端的ip
在php 中使用 $_server[remote_addr] 来取得客户端的 ip 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 ip 地址,而不是真正的客户端 ip 地址。要想透过代理服务器取得客户端的真实 ip 地址,就要使用 $_server[http_x_forwarded_for] 来读取。
不过要注意的事,并不是每个代理服务器都能用 $_server[http_x_forwarded_for] 来读取客户端的真实 ip,有些用此方法读取到的仍然是代理服务器的 ip。
还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用$_server[http_x_forwarded_for] 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理:
 代码如下 复制代码
即:如果客户端通过代理服务器,则取 http_x_forwarded_for 的值,如果没通过代理服务器,就取 remote_addr 的值。
获得客户端真实的ip地址
 代码如下 复制代码
function getip(){
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);
}
获取用户ip地址的三个属性的区别 (http_x_forwarded_for,http_via,remote_addr)
一、没有使用代理服务器的情况:
remote_addr = 您的 ip
http_via = 没数值或不显示
http_x_forwarded_for = 没数值或不显示
二、使用透明代理服务器的情况:transparent proxies
remote_addr = 最后一个代理服务器 ip
http_via = 代理服务器 ip
http_x_forwarded_for = 您的真实 ip ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。
三、使用普通匿名代理服务器的情况:anonymous proxies
remote_addr = 最后一个代理服务器 ip
http_via = 代理服务器 ip
http_x_forwarded_for = 代理服务器 ip ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
隐藏了您的真实ip,但是向访问对象透露了您是使用代理服务器访问他们的。
四、使用欺骗性代理服务器的情况:distorting proxies
remote_addr = 代理服务器 ip
http_via = 代理服务器 ip
http_x_forwarded_for = 随机的 ip ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机ip代替您的真实ip欺骗它。
五、使用高匿名代理服务器的情况:high anonymity proxies (elite proxies)
remote_addr = 代理服务器 ip
http_via = 没数值或不显示
http_x_forwarded_for = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。
 代码如下 复制代码
http://www.bkjia.com/phpjc/444656.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/444656.htmltecharticle1.remote_addr:浏览当前页面的用户计算机的ip地址2.http_x_forwarded_for: 浏览当前页面的用户计算机的网关3.http_client_ip:客户端的ip 在php 中使用 $_...
其它类似信息

推荐信息