做了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中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
php字符编码转换之gb2312转为utf8
Oct 28 PHP
一个严格的PHP Session会话超时时间设置方法
Jun 10 PHP
php读取csv数据保存到数组的方法
Jan 03 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
在WordPress中实现发送http请求的相关函数解析
Dec 29 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
Nov 10 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
Ajax请求PHP后台接口返回信息的实例代码
Aug 21 PHP
php将字符串转换为数组实例讲解
May 05 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
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
Python中的多重装饰器
2015/04/11 Python
Python实现快速计算词频功能示例
2018/06/25 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
python使用建议技巧分享(三)
2020/08/18 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
元旦文艺汇演主持词
2014/03/26 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
优秀员工自荐书
2015/03/06 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android