做了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 相关文章推荐
一个用于mysql的数据库抽象层函数库
Oct 09 PHP
信用卡效验程序
Oct 09 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
Nov 07 PHP
基于wordpress主题制作的具体实现步骤
May 10 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
PHP使用内置dir类实现目录遍历删除
Mar 31 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
实例讲解PHP页面静态化
Feb 05 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 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
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
JS 控制非法字符的输入代码
2009/12/04 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
微信小程序 网络API发起请求详解
2016/11/09 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
js定时器实例分享
2016/12/20 Javascript
layui分页效果实现代码
2017/05/19 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
vue渲染方式render和template的区别
2020/06/05 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
python分析nignx访问日志脚本分享
2015/02/26 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
Python类super()及私有属性原理解析
2020/06/15 Python
Python发送邮件实现基础解析
2020/08/14 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
python+selenium小米商城红米K40手机自动抢购的示例代码
2021/03/24 Python
网络教育自我鉴定
2013/11/01 职场文书
项目专员岗位职责
2013/12/04 职场文书
个人贷款担保书
2014/04/01 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
2015年领班工作总结
2015/04/29 职场文书
Go归并排序算法的实现方法
2022/04/06 Golang
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers