用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中常用数组处理方法实例分析
Aug 30 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 PHP
PHP中的函数嵌套层数限制分析
Jun 13 PHP
PHP高级对象构建 工厂模式的使用
Feb 05 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
php对图像的各种处理函数代码小结
Jul 08 PHP
thinkphp模板用法和内容输出实例
Nov 28 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
我整理的PHP 7.0主要新特性
Jan 07 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 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实现CSV文件导入和导出
2015/10/24 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
Python heapq使用详解及实例代码
2017/01/25 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
python中字典增加和删除使用方法
2020/09/30 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
物流经理自我评价
2013/09/23 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
邀请函怎么写
2015/01/30 职场文书
古诗之感恩老师
2019/10/24 职场文书
导游词之阆中古城
2019/12/23 职场文书
ICOM R71E和R72E图文对比解说
2022/04/07 无线电