PHP利用CDN获取用户真实IP的解决办法

内容摘要
这篇文章主要为大家详细介绍了PHP利用CDN获取用户真实IP的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
asp函数代码:
文章正文

这篇文章主要为大家详细介绍了PHP利用CDN获取用户真实IP的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!

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_ADDRdim client_ipif checkip(Request.ServerVariables(”HTTP_CLIENT_IP”))=true thenget_cli_ip = checkip(Request.ServerVariables(”HTTP_CLIENT_IP”))elseMyArray = split(Request.ServerVariables(”HTTP_X_FORWARDED_FOR”),”,”)if ubound(MyArray)>=0 thenclient_ip = trim(MyArray(0))if checkip(client_ip)=true thenget_cli_ip = client_ipexit functionend ifend ifget_cli_ip = Request.ServerVariables(”REMOTE_ADDR”)end ifend 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'];}

注:关于PHP利用CDN获取用户真实IP的简单示例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!