做了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 相关文章推荐
实用函数4
Nov 08 PHP
PHP+MySQL 手工注入语句大全 推荐
Oct 30 PHP
初次接触php抽象工厂模式(Elgg)
Mar 21 PHP
php使用strtotime和date函数判断日期是否有效代码分享
Dec 25 PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
php实现无限级分类查询(递归、非递归)
Mar 10 PHP
Yii2.0表关联查询实例分析
Jul 18 PHP
php PDO实现的事务回滚示例
Mar 23 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
Oct 23 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实现查询功能(数据访问)
2017/05/23 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
PHP date_default_timezone_set()设置时区操作实例分析
2020/05/16 PHP
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
BootStrap selectpicker
2016/06/20 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
js html实现计算器功能
2018/11/13 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
Python3遍历目录树实现方法
2015/05/22 Python
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
2014年社区庆元旦活动方案
2014/03/08 职场文书
公司管理建议书范文
2014/03/12 职场文书
2014中考励志标语
2014/06/05 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
大学生村官入党自传
2015/06/26 职场文书
教你如何用cmd快速登录服务器
2022/06/10 Servers