做了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 相关文章推荐
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
用mysql内存表来代替php session的类
Feb 01 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
深入file_get_contents与curl函数的详解
Jun 25 PHP
php批量删除数据库下指定前缀的表以prefix_为例
Aug 24 PHP
php集成环境xampp中apache无法启动问题解决方案
Nov 18 PHP
php绘制一个矩形的方法
Jan 24 PHP
PHP的全局错误处理详解
Apr 25 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
PHP数据分析引擎计算余弦相似度算法示例
Aug 08 PHP
PHP array_reduce()函数的应用解析
Oct 28 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
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
mouse_on_title.js
2006/08/25 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
浅析Ajax语法
2016/12/05 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python爬取国外天气预报网站的方法
2015/07/10 Python
一步步解析Python斗牛游戏的概率
2016/02/12 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
python删除服务器文件代码示例
2018/02/09 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
python中altair可视化库实例用法
2021/01/26 Python
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
汽车专业求职信
2014/06/05 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
导游词之无锡梅园
2019/11/28 职场文书