用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 Sql Server连接失败问题及解决办法
Aug 07 PHP
PHP提取数据库内容中的图片地址并循环输出
Mar 21 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
Jun 21 PHP
php cli 小技巧
Jun 03 PHP
探讨GDFONTPATH能否被winxp下的php支持
Jun 21 PHP
php反射应用示例
Feb 25 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
php连接mysql数据库
Mar 21 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
Mar 28 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 PHP
Laravel框架使用Redis的方法详解
May 30 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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
Zerg兵种介绍
2020/03/14 星际争霸
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
php用户注册时常用的检验函数实例总结
2014/12/22 PHP
php提高网站效率的技巧
2015/09/29 PHP
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
Python的函数的一些高阶特性
2015/04/27 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
中专生自荐信
2014/06/25 职场文书
目标责任书格式
2014/07/28 职场文书
户籍证明书标准模板
2014/09/10 职场文书
行政申诉状范文
2015/05/20 职场文书
小学见习报告
2015/06/23 职场文书
2015初中团委工作总结
2015/07/28 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript
MySQL系列之十一 日志记录
2021/07/02 MySQL
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS