做了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 相关文章推荐
swfupload 多文件上传实现代码
Aug 27 PHP
网友原创的PHP模板类代码
Sep 07 PHP
Look And Say 序列php实现代码
May 22 PHP
PHP面向对象概念
Nov 06 PHP
php对称加密算法示例
May 07 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
Jun 13 PHP
discuz目录文件资料汇总
Dec 30 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
php中bind_param()函数用法分析
Mar 28 PHP
PHP微信公众号开发之微信红包实现方法分析
Jul 14 PHP
php中file_get_contents()函数用法实例
Feb 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 中文乱码解决办法总结分析
2009/07/30 PHP
PHP 上传文件的方法(类)
2009/07/30 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
JS日历 推荐
2006/12/03 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
jquery实现触发时更新下拉列表内容的方法
2015/12/02 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
vue实现微信获取用户信息的方法
2019/03/21 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
如何基于Python实现数字类型转换
2020/02/07 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
客服专员岗位职责范本
2013/11/29 职场文书
高中毕业生生活的自我评价
2013/12/08 职场文书
安全生产先进个人材料
2014/02/06 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
机电系毕业生求职信
2014/07/11 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
廉政党课工作报告案例
2019/06/21 职场文书