用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 相关文章推荐
支持php4、php5的mysql数据库操作类
Jan 10 PHP
PHP源码之 ext/mysql扩展部分
Jul 17 PHP
PHP 类相关函数的使用详解
May 10 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
Jan 19 PHP
php简单截取字符串代码示例
Oct 19 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
Yii框架实现多数据库配置和操作的方法
May 25 PHP
php通过header发送自定义数据方法
Jan 18 PHP
详解Laravel设置多态关系模型别名的方式
Oct 17 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 PHP
php+js实现点赞功能的示例详解
Aug 07 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
Yii分页用法实例详解
2014/12/04 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
python访问sqlserver示例
2014/02/10 Python
使用Python实现一个简单的项目监控
2015/03/31 Python
Python中join函数简单代码示例
2018/01/09 Python
详解python中的线程
2018/02/10 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
python为什么要安装到c盘
2020/07/20 Python
python requests库的使用
2021/01/06 Python
用Python制作音乐海报
2021/01/26 Python
标准单位租车协议书
2014/09/23 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
python脚本框架webpy模板赋值实现
2021/11/20 Python