用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 md5下16位和32位的实现代码
Apr 09 PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 PHP
PHP 读取文本文件内容并分页显示
Jan 02 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 PHP
php 输入输出流详解及示例代码
Aug 25 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
php基于dom实现的图书xml格式数据示例
Feb 03 PHP
PHP常用的三种设计模式
Feb 17 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
Sep 29 PHP
PHP常见数组排序方法小结
Aug 20 PHP
thinkphp5实现微信扫码支付
Dec 23 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
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
php网页后退不再出现过期
2007/03/08 PHP
PHP 遍历XP文件夹下所有文件
2008/11/27 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
在Python的Django框架中创建语言文件
2015/07/27 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
Python中实现switch功能实例解析
2018/01/11 Python
python基于http下载视频或音频
2018/06/20 Python
python 函数内部修改外部变量的方法
2018/12/18 Python
Python判断有效的数独算法示例
2019/02/23 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
python3.4中清屏的处理方法
2020/07/06 Python
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
php优化查询foreach代码实例讲解
2021/03/24 PHP
土木工程专业自荐信
2013/10/04 职场文书
挂职学习心得体会
2014/09/09 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
vue ref如何获取子组件属性值
2022/03/31 Vue.js
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技