手机
当前位置:查字典教程网 >编程开发 >php教程 >php 获取客户端的真实ip
php 获取客户端的真实ip
摘要:复制代码代码如下:functionGetIP(){if(getenv("HTTP_CLIENT_IP")&&strcasecmp(geten...

复制代码 代码如下:

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);

}

regist=off的问题

if ($register_globals!=1) {

@extract($_SERVER, EXTR_SKIP);

@extract($_COOKIE, EXTR_SKIP);

@extract($_SESSION, EXTR_SKIP);

@extract($_POST, EXTR_SKIP);

@extract($_FILES, EXTR_SKIP);

@extract($_GET, EXTR_SKIP);

@extract($_ENV, EXTR_SKIP);

}

其中REMOTE_ADDR比较好理解,php手册上有说明它是预定的变量;而HTTP_x_FORWARDED_FOR呢,在网上找了一些资料,是这么说的

在PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。

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

至于HTTP_CLIENT_IP,有篇贴子上说

'HTTP_CLIENT_IP'是用户的IP,'HTTP_X_FORWARDED_FOR'是代理的IP

这些IP头消息未必能够取得到(因为不同的浏览器不同的网络设备,可能发不同的IP头消息).所以PHP就尝试把每个IP头消息判断一下,若有,则取其中的一个.

【php 获取客户端的真实ip】相关文章:

MVC模式的PHP实现

在php中取得image按钮传递的name值

Yii获取当前url和域名的方法

php微信公众平台开发类实例

php获取系统变量方法小结

PHP获取客户端真实IP地址的5种情况分析和实现代码

php使用for语句输出三角形的方法

php获取twitter最新消息的方法

php输出全球各个时区列表的方法

在php中使用sockets:从新闻组中获取文章

精品推荐
分类导航