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笔记之:文章中图片处理的使用
Apr 26 PHP
php实现的双向队列类实例
Sep 24 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
Oct 15 PHP
PHP程序员不应该忽略的3点
Oct 09 PHP
apache和PHP如何整合在一起
Oct 12 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
PHP通过文件保存和更新信息的方法分析
Sep 12 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 PHP
Thinkphp页面跳转设置跳转等待时间的操作
Oct 16 PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 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中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
javscript对象原型的一些看法
2010/09/19 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
jQuery基础知识小结
2014/12/22 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
Python实例之wxpython中Frame使用方法
2014/06/09 Python
详解Python装饰器由浅入深
2016/12/09 Python
Pycharm更换python解释器的方法
2018/10/29 Python
python+mysql实现教务管理系统
2019/02/20 Python
python里运用私有属性和方法总结
2019/07/08 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
python装饰器代替set get方法实例
2019/12/19 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
青春励志演讲稿范文
2014/08/25 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
新郎接新娘保证书
2015/05/08 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书
导游词之西安骊山
2019/12/03 职场文书
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android