做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)


Posted in PHP onApril 13, 2013

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'];
}
PHP 相关文章推荐
dedecms 制作模板中使用的全局标记图文教程
Mar 11 PHP
用php过滤危险html代码的函数
Jul 22 PHP
PHP访问MYSQL数据库封装类(附函数说明)
Dec 04 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
PHP解析RSS的方法
Mar 05 PHP
php计算给定时间之前的函数用法实例
Apr 03 PHP
php中关于socket的系列函数总结
May 18 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
php中分页及SqlHelper类用法实例
Jan 12 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 PHP
PHP根据key删除数组中指定的元素
Feb 28 PHP
phpinfo的知识点总结
Oct 10 PHP
php检测图片木马多进制编程实践
Apr 11 #PHP
谈谈关于php的优点与缺点
Apr 11 #PHP
如何用PHP实现插入排序?
Apr 10 #PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 #PHP
克隆一个新项目的快捷方式
Apr 10 #PHP
str_replace只替换一次字符串的方法
Apr 09 #PHP
apache和php之间协同工作的配置经验分享
Apr 08 #PHP
You might like
用PHP生成自己的LOG文件
2006/10/09 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
高校十八大报告感想
2014/01/27 职场文书
优秀广告词大全
2014/03/19 职场文书
成绩单公证书
2014/04/10 职场文书
药店采购员岗位职责
2014/09/30 职场文书
事业单位个人总结
2015/02/12 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python
TensorFlow的自动求导原理分析
2021/05/26 Python
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
使用Java去实现超市会员管理系统
2022/03/18 Java/Android
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers