php实现ip白名单黑名单功能


Posted in PHP onMarch 12, 2015

这个是一个检测ip是否非法的php函数,适应于白名单,黑名单功能开发,主要场景应用于:api来源限制,访问限制等.

/**

 * 安全IP检测,支持IP段检测

 * @param string $ip 要检测的IP

 * @param string|array $ips  白名单IP或者黑名单IP

 * @return boolean true 在白名单或者黑名单中,否则不在

 */

function is_safe_ip($ip="",$ips=""){ 

    if(!$ip) $ip = get_client_ip();  //获取客户端IP

    if($ips){

        if(is_string($ips)){ //ip用"," 例如白名单IP:192.168.1.13,123.23.23.44,193.134.*.*

            $ips = explode(",", $ips);

        }

    }else{ //读取后台配置 白名单IP

        $obj = new Setting();

        $ips = explode(",", $obj->getConfig("whiteip"));  

    }

    if(in_array($ip, $ips)){

        return true;

    }

    $ipregexp = implode('|', str_replace( array('*','.'), array('\d+','\.') ,$ips));  

    $rs = preg_match("/^(".$ipregexp.")$/", $ip);  

    if($rs) return true;

    return ;

}

获取ip地址,这里引用thinkphp内置函数

//应网友要求,贴出 get_client_ip() 函数

/**

 * 获取客户端IP地址

 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字

 * @param boolean $adv 是否进行高级模式获取(有可能被伪装) 

 * @return mixed

 */

function get_client_ip($type = 0,$adv=false) {

    $type       =  $type ? 1 : 0;

    static $ip  =   NULL;

    if ($ip !== NULL) return $ip[$type];

    if($adv){

        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {

            $arr    =   explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);

            $pos    =   array_search('unknown',$arr);

            if(false !== $pos) unset($arr[$pos]);

            $ip     =   trim($arr[0]);

        }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {

            $ip     =   $_SERVER['HTTP_CLIENT_IP'];

        }elseif (isset($_SERVER['REMOTE_ADDR'])) {

            $ip     =   $_SERVER['REMOTE_ADDR'];

        }

    }elseif (isset($_SERVER['REMOTE_ADDR'])) {

        $ip     =   $_SERVER['REMOTE_ADDR'];

    }

    // IP地址合法验证

    $long = sprintf("%u",ip2long($ip));

    $ip   = $long ? array($ip, $long) : array('0.0.0.0', 0);

    return $ip[$type];

}

以上就是本文的全部内容了,希望对大家理解php检测IP有所帮助。

PHP 相关文章推荐
PHP与javascript对多项选择的处理
Oct 09 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
ThinkPHP令牌验证实例
Jun 18 PHP
php编写的一个E-mail验证类
Mar 25 PHP
php计算给定时间之前的函数用法实例
Apr 03 PHP
php随机获取金山词霸每日一句的方法
Jul 09 PHP
利用PHP生成静态html页面的原理
Sep 30 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 PHP
PHP 代码简洁之道(小结)
Oct 16 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 #PHP
PHP往XML中添加节点的方法
Mar 12 #PHP
PHP遍历XML文档所有节点的方法
Mar 12 #PHP
标准PHP的AES加密算法类
Mar 12 #PHP
php接口数据加密、解密、验证签名
Mar 12 #PHP
php查询相似度最高的字符串的方法
Mar 12 #PHP
PHP实现通用alert函数的方法
Mar 11 #PHP
You might like
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
js返回顶部实例分享
2016/12/21 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
2019/02/10 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
python-opencv颜色提取分割方法
2018/12/08 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
用Python 执行cmd命令
2020/12/18 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
会计自我鉴定
2013/11/02 职场文书
四年的个人工作自我评价
2013/12/10 职场文书
母亲七十大寿答谢词
2014/01/18 职场文书
幼儿园开学寄语
2014/04/03 职场文书
班级旅游计划书
2014/05/03 职场文书