用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 中英文语言转换类
Sep 07 PHP
xml在joomla表单中的应用详解分享
Jul 19 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
php中异常处理方法小结
Jan 09 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
May 17 PHP
php简单读取.vcf格式文件的方法示例
Sep 02 PHP
PHP与以太坊交互详解
Aug 24 PHP
PHP实现字符串大小写转函数的功能实例
Feb 06 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
python实现RSA加密(解密)算法
2016/02/17 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
Python内置模块logging用法实例分析
2018/02/12 Python
python生成密码字典的方法
2018/07/06 Python
python字典的遍历3种方法详解
2019/08/10 Python
Python3常用内置方法代码实例
2019/11/18 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
sort命令的作用和用法
2013/08/25 面试题
歌颂祖国的演讲稿
2014/05/04 职场文书
就职演讲稿范文
2014/05/19 职场文书
安全演讲稿开场白
2014/08/25 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
龙门石窟导游词
2015/02/02 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
2015年高中语文教学总结
2015/08/18 职场文书