首页 > Web开发 > 详细

php 获取客户端IP地址

时间:2014-03-20 21:38:18      阅读:474      评论:0      收藏:0      [点我收藏+]

/**
* 获取真实IP地址
*/
/*
在PHP中getenv(参数)函数是一个用于获取环境变量的函数,根据提供不同的参数可以获取不同的环境变量,

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

表示如果getenv("HTTP_X_FORWARDED_FOR") 取到的值存在不为空(即客户端使用代理服务器的情况下),则变量$ip等于getenv("HTTP_X_FORWARDED_FOR") 取到的真实IP值。

如果上面的else if(getenv("HTTP_X_FORWARDED_FOR"))取得的值为空(即没有使用代理服务器),则不会执行下面的$ip = getenv("HTTP_X_FORWARDED_FOR");这一行语句。

REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。
HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。
$_SERVER[‘REMOTE_ADDR‘]; //访问端(有可能是用户,有可能是代理的)IP
$_SERVER[‘HTTP_CLIENT_IP‘]; //代理端的(有可能存在,可伪造)
$_SERVER[‘HTTP_X_FORWARDED_FOR‘]; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)
http://www.cnblogs.com/jackluo/archive/2013/03/03/2941411.html
*/
function get_ip()
{
$ip = false;
if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else
$ip = false;
return $ip;
}

/**
* 添加管理员日志
*/
function create_admin_log($action)
{
$create_time = time();
$ip = $this->get_ip();

$sql = "INSERT INTO " . $this->table(‘admin_log‘) . " (id, create_time, user_id, action ,ip)" .
" VALUES (NULL, ‘$create_time‘, ‘$_SESSION[user_id]‘, ‘$action‘, ‘$ip‘)";
$this->query($sql);
}

php 获取客户端IP地址,布布扣,bubuko.com

php 获取客户端IP地址

原文:http://www.cnblogs.com/tudoudaqiang/p/3610652.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!