PHP禁止个别IP访问网站


Posted in PHP onOctober 30, 2013

想不让某个IP访问网站,可以封他的IP,下面就提供这个方法。看下面的代码。

function get_ip_data(){   
    $ip=file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".get_client_ip());
    $ip = json_decode($ip);
    if($ip->code){
        return false;
    }
    $data = (array) $ip->data;
    if($data['region']=='湖北省' && !isCrawler()){
        exit('http://www.a.net');
    }
}
function isCrawler() {
        $spiderSite= array(
                        "TencentTraveler",
                        "Baiduspider+",
                        "BaiduGame",
                        "Googlebot",
                        "msnbot",
                        "Sosospider+",
                        "Sogou web spider",
                        "ia_archiver",
                        "Yahoo! Slurp",
                        "YoudaoBot",
                        "Yahoo Slurp",
                        "MSNBot",
                        "Java (Often spam bot)",
                        "BaiDuSpider",
                        "Voila",
                        "Yandex bot",
                        "BSpider",
                        "twiceler",
                        "Sogou Spider",
                        "Speedy Spider",
                        "Google AdSense",
                        "Heritrix",
                        "Python-urllib",
                        "Alexa (IA Archiver)",
                        "Ask",
                        "Exabot",
                        "Custo",
                        "OutfoxBot/YodaoBot",
                        "yacy",
                        "SurveyBot",
                        "legs",
                        "lwp-trivial",
                        "Nutch",
                        "StackRambler",
                        "The web archive (IA Archiver)",
                        "Perl tool",
                        "MJ12bot",
                        "Netcraft",
                        "MSIECrawler",
                        "WGet tools",
                        "larbin",
                        "Fish search",
                );
        if(in_array(strtolower($_SERVER['HTTP_USER_AGENT']),$spiderSite)){
            return true;
        }else{
            return false;
        }
}
//取客户端 ip
function get_client_ip()
{
    if (isset($_SERVER)){
            if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
                $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
            } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
                $realip = $_SERVER["HTTP_CLIENT_IP"];
            } else {
                $realip = $_SERVER["REMOTE_ADDR"];
            }
    } else {
            if (getenv("HTTP_X_FORWARDED_FOR")){
                $realip = getenv("HTTP_X_FORWARDED_FOR");
            } else if (getenv("HTTP_CLIENT_IP")) {
                $realip = getenv("HTTP_CLIENT_IP");
            } else {
                $realip = getenv("REMOTE_ADDR");
            }
        }
    return $realip;
}
PHP 相关文章推荐
PHP与javascript的两种交互方式
Oct 09 PHP
一键删除顽固的空文件夹 软件下载
Jan 26 PHP
php 读取shell管道传输过来的内容
Mar 01 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
Oct 31 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
Jun 24 PHP
浅谈discuz密码加密的方式
May 22 PHP
php遍历目录方法小结
Mar 10 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 PHP
laravel添加前台跳转成功页面示例
Oct 22 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 PHP
PHP高并发和大流量解决方案整理
Mar 09 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 #PHP
使用PHP Socket写的POP3类
Oct 30 #PHP
腾讯QQ微博API接口获取微博内容
Oct 30 #PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 #PHP
php使用ICQ网关发送手机短信
Oct 30 #PHP
PHP分页详细讲解(有实例)
Oct 30 #PHP
php预定义变量使用帮助(带实例)
Oct 30 #PHP
You might like
php 文件状态缓存带来的问题
2008/12/14 PHP
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
php常用数组函数实例小结
2016/12/29 PHP
php实现简单四则运算器
2020/11/29 PHP
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
使用命令对象代替switch语句的写法示例
2015/02/28 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
js实现随机8位验证码
2020/07/24 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
vue自动添加浏览器兼容前后缀操作
2020/08/13 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
初步探究Python程序的执行原理
2015/04/11 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
Python关于反射的实例代码分享
2020/02/20 Python
Python连接mysql方法及常用参数
2020/09/01 Python
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
大学毕业自我鉴定范文
2014/02/03 职场文书
2014年维修工作总结
2014/11/22 职场文书
库房管理员岗位职责
2015/02/12 职场文书
同意落户证明
2015/06/19 职场文书
学校教学管理制度
2015/08/06 职场文书
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers