做了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 相关文章推荐
php去除HTML标签实例
Nov 06 PHP
php阻止页面后退的方法分享
Feb 17 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
kohana框架上传文件验证规则写法示例
Jul 14 PHP
详解PHP中的PDO类
Jul 06 PHP
学习PHP session的传递方式
Jun 15 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
Aug 17 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
Aug 04 PHP
laravel 实现划分admin和home 模块分组
Oct 15 PHP
php的无刷新操作实现方法分析
Feb 28 PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 21 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中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
Django logging配置及使用详解
2019/07/23 Python
pyCharm 实现关闭代码检查
2020/06/09 Python
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
幼儿园教师国培感言
2014/02/02 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
大学生简历求职信
2014/06/24 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
mysql主从复制的实现步骤
2021/10/24 MySQL
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫