Did CDN get the user real IP function code of PHP and Asp Settings

  • 2020-06-01 08:24:48
  • OfStack

asp function code:


function checkip(checkstring)' Judge with regularity IP Is it legal 
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()' Take a real IP Function, first  HTTP_CLIENT_IP  again  HTTP_X_FORWARDED_FOR  again  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 forum takes the real IP php code, other similar, please refer to slightly modify

(discuz modified include/common. inc. php)
Use this code:


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

Replace this code:


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'];
}


Related articles: