php 获取客户端IP地址
/**
* 获取真实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);
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。