做了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程序之die调试法 快速解决错误
Sep 17 PHP
php file_get_contents函数轻松采集html数据
Apr 22 PHP
Smarty foreach控制循环次数的实现详解
Jul 03 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
php里array_work用法实例分析
Jul 13 PHP
php上传大文件失败的原因及应对策略
Oct 20 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
一个简单的php MVC留言本实例代码(必看篇)
Sep 22 PHP
php实现评论回复删除功能
May 23 PHP
PHP随机数函数rand()与mt_rand()的讲解
Mar 25 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
php和asp语法上的区别总结
2019/05/12 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
分享Angular http interceptors 拦截器使用(推荐)
2019/11/10 Javascript
在Python的Django框架中包装视图函数
2015/07/20 Python
Python中字符串的修改及传参详解
2016/11/30 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
表达自我的市场:Society6
2018/08/01 全球购物
管事部库房保管员岗位职责
2014/02/21 职场文书
分层教学实施方案
2014/03/19 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
第一书记观后感
2015/06/08 职场文书
安全生产培训心得体会
2016/01/18 职场文书
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js