asp函数代码:
复制代码 代码如下:
function checkip(checkstring)"用正则判断IP是否合法
dim re1
set re1=new RegExp
re1.pattern=”^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$”
re1.global=false
re1.Ignorecase=false
checkip=re1.test(checkstring)
set re1=nothing
end function
function get_cli_ip()"取真实IP函数,先 HTTP_CLIENT_IP 再 HTTP_X_FORWARDED_FOR 再 REMOTE_ADDR
dim client_ip
if checkip(Request.ServerVariables(”HTTP_CLIENT_IP”))=true then
get_cli_ip = checkip(Request.ServerVariables(”HTTP_CLIENT_IP”))
else
MyArray = split(Request.ServerVariables(”HTTP_X_FORWARDED_FOR”),”,”)
if ubound(MyArray)>=0 then
client_ip = trim(MyArray(0))
if checkip(client_ip)=true then
get_cli_ip = client_ip
exit function
end if
end if
get_cli_ip = Request.ServerVariables(”REMOTE_ADDR”)
end if
end function
discuz论坛取真实IP的php代码,其它类似,请参考稍做修改
(discuz修改include/common.inc.php)
用以下这段代码:
复制代码 代码如下:
if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown")) {
$onlineip = getenv("HTTP_CLIENT_IP");
} elseif(getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),
"unknown")) {
$testip = explode(".", getenv("HTTP_X_FORWARDED_FOR"));
if ($testip[0]=="192′ && $testip[1]=="168′) {
$onlineip = getenv("REMOTE_ADDR");
}
elseif($testip[0]=="10′) {
$onlineip = getenv("REMOTE_ADDR");
}
else {
$onlineip = getenv("HTTP_X_FORWARDED_FOR");
}
//gamesir hack end} elseif(getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"),
"unknown")) {
$onlineip = getenv("REMOTE_ADDR");
} elseif(isset($_SERVER["REMOTE_ADDR"]) && $_SERVER["REMOTE_ADDR"] && strcasecmp($_SERVER
["REMOTE_ADDR"],"unknown")) {
//by Johnny
$tmp_ip = explode(",",$_SERVER["HTTP_X_FORWARDED_FOR"]);
$tmp_ip1 = explode(",",$tmp_ip[0]);
if ($tmp_ip1[0] =="192′ && $tmp_ip1[1] =="168′) {
$onlineip = getenv("REMOTE_ADDR");
}else if($tmp_ip1[0]=="10′) {
$onlineip = getenv("REMOTE_ADDR");
}
else{
$onlineip = $tmp_ip[0];
}
unset($tmp_ip);unset($tmp_ip1);
}
替换这段代码:
复制代码 代码如下:
if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown")) {
$onlineip = getenv("HTTP_CLIENT_IP");
} elseif(getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),
"unknown")) {
$onlineip = getenv("HTTP_X_FORWARDED_FOR");
} elseif(getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"),"unknown")) {
$onlineip = getenv("REMOTE_ADDR");
} elseif(isset($_SERVER["REMOTE_ADDR"]) && $_SERVER["REMOTE_ADDR"] && strcasecmp($_SERVER
["REMOTE_ADDR"],"unknown")) {
$onlineip = $_SERVER["REMOTE_ADDR"];
}