做了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 相关文章推荐
一个简单的自动发送邮件系统(二)
Oct 09 PHP
PHP 类型转换函数intval
Jun 20 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
Jun 21 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
php模拟用户自动在qq空间发表文章的方法
Jan 07 PHP
PHP遍历数组的三种方法及效率对比分析
Feb 12 PHP
PHP、Java des加密解密实例
Apr 27 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
PHP count()函数讲解
Feb 03 PHP
PHP文件类型检查及fileinfo模块安装使用详解
May 09 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实现MVC开发得最简单的方法――模型
2007/04/10 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
JavaScript中this函数使用实例解析
2020/02/21 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
python通过shutil实现快速文件复制的方法
2015/03/14 Python
Python脚本暴力破解栅栏密码
2015/10/19 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
《小池塘》教学反思
2014/02/28 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
婚前协议书
2014/04/15 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
如何写辞职书
2015/02/26 职场文书
Mysql如何查看是否使用到索引
2022/12/24 MySQL