用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检测网页是否被百度收录的函数代码
Oct 09 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
Yii中CGridView关联表搜索排序方法实例详解
Dec 03 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
php实现socket推送技术的示例
Dec 20 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
Laravel 自动生成验证的实例讲解:login / logout
Oct 14 PHP
PHP 裁剪图片
Mar 09 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
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
JS简单实现数组去重的方法示例
2017/03/27 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
python类参数self使用示例
2014/02/17 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
Python 实现一个计时器
2020/07/28 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
爱护公共设施标语
2014/06/24 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
公司车辆管理制度
2015/08/04 职场文书
严以律己学习心得体会
2016/01/13 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS