用php代码限制国内IP访问我们网站


Posted in PHP onSeptember 26, 2015

利用淘宝的IP接口来判断IP,是否是国内的ip,是国内(CN)的就不允许访问。

$ip = $_SERVER['REMOTE_ADDR'];
$content = file_get_contents(‘http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);
$banned = json_decode(trim($content), true);
$lan = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
if((!empty($banned['data']['country_id']) && $banned['data']['country_id'] == ‘CN') || strstr($lan, ‘zh'))
{
header(“HTTP/1.0 404 Not Found”);
echo ‘HTTP/1.0 404 Not Found';
exit;
}

同时发现一篇好文章:http://luhuang.sinaapp.com/redis-setnx/ 《Redis 来限制高并发 php代码实例》

Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)的数据,而且还能完成排序(SORT) 等高级功能,在实现INCR,SETNX等功能的时候,保证了其操作的原子性,除此以外,还支持主从复制等功能。
Redis 来限制高并发
php代码实例

$redis->setnx(‘lock:hot_items', true)尝试创建一个key作为”锁”.若key已存在,setnx不会做任何动作且返回值为false,所以只有一个客户端会返回true值进入if语句更新缓存. 
$redis = new redis();
$redis_key = ‘lock:hot_items';
$clock_expire_time = $redis->get($redis_key);
if(!empty($clock_expire_time) && time() > intval($clock_expire_time))
{
//解除当前Redis锁
$redis->delete($redis_key);
}

if($redis->setnx($redis_key, time() + 3) !== true)
{
echo ‘高并发有冲突';
}

//操作你的代码, 同一时刻就一个人访问该代码了

//解除当前Redis锁
$redis->delete($redis_key);
PHP 相关文章推荐
PHP多个版本的分析解释
Jul 21 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
跟我学Laravel之视图 & Response
Oct 15 PHP
Linux下PHP加速器APC的安装与配置笔记
Oct 24 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
php使用CutyCapt实现网页截图保存的方法
Oct 03 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
PHP explode()函数用法讲解
Feb 15 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 PHP
PHP与Web页面的交互示例详解一
Aug 04 PHP
十大使用PHP框架的理由
Sep 26 #PHP
PHP弹出对话框技巧详细解读
Sep 26 #PHP
ThinkPHP2.x防范XSS跨站攻击的方法
Sep 25 #PHP
ThinkPHP在Cli模式下使用模板引擎的方法
Sep 25 #PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 #PHP
PHP生成随机字符串(3种方法)
Sep 25 #PHP
PHP防盗链的基本思想 防盗链的设置方法
Sep 25 #PHP
You might like
php实现mysql数据库操作类分享
2014/02/14 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
JavaScript 调试器简介
2009/02/21 Javascript
javascript 表单验证常见正则
2009/09/28 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
JS实现图片平面旋转的方法
2016/03/01 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
简单介绍Python中的几种数据类型
2016/01/02 Python
Windows下搭建python开发环境详细步骤
2020/07/20 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
YUV转为jpg图像的实现
2019/12/09 Python
django序列化serializers过程解析
2019/12/14 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
如何在django中运行scrapy框架
2020/04/22 Python
python名片管理系统开发
2020/06/18 Python
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
教师专业自荐书范文
2014/02/10 职场文书
财产公证书格式
2014/04/10 职场文书
大学毕业寄语大全
2014/04/10 职场文书
异地年检委托书范本
2014/09/24 职场文书
八项规定整改方案
2014/10/01 职场文书
计划生育工作汇报
2014/10/28 职场文书
武夷山导游词
2015/02/03 职场文书
2015年党日活动总结范文
2015/03/25 职场文书
毕业欢送会致辞
2015/07/29 职场文书
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
一篇文章弄懂Python中的内建函数
2021/08/07 Python
Python基本知识点总结
2022/04/07 Python