做了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 相关文章推荐
相对路径转化成绝对路径
Apr 10 PHP
PHP三层结构(上) 简单三层结构
Jul 04 PHP
PHPCMS的使用小结
Sep 20 PHP
php中hashtable实现示例分享
Feb 13 PHP
PHP中session变量的销毁
Feb 27 PHP
php获取数组元素中头一个数组元素值的实现方法
Dec 20 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
Feb 26 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
php多文件上传功能实现原理及代码
2013/04/18 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
一个实用的php验证码类
2017/07/06 PHP
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
浅谈vue的第一个commit分析
2020/06/08 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
python实现朴素贝叶斯算法
2018/11/19 Python
python样条插值的实现代码
2018/12/17 Python
Python字符串的常见操作实例小结
2019/04/08 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
Python 画出来六维图
2019/07/26 Python
Pycharm激活方法及详细教程(详细且实用)
2020/05/12 Python
python em算法的实现
2020/10/03 Python
Python远程linux执行命令实现
2020/11/11 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
办公室副主任岗位职责
2013/11/25 职场文书
入党思想汇报
2014/01/05 职场文书
商家认证委托书格式
2014/10/16 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书