用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 相关文章推荐
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
php绘图中显示不出图片的原因及解决
Mar 05 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
PHP filesize函数用法浅析
Feb 15 PHP
PHP7新功能总结
Apr 14 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
May 23 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 PHP
Laravel 框架控制器 Controller原理与用法实例分析
Apr 14 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在Web开发领域的优势
2006/10/09 PHP
php数据库密码的找回的步骤
2011/01/12 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
利用Javascript实现一套自定义事件机制
2017/12/14 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
python爬虫使用cookie登录详解
2017/12/27 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
python中Lambda表达式详解
2019/11/20 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
python图形用户接口实例详解
2019/12/16 Python
Python sorted排序方法如何实现
2020/03/31 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
CSS3 边框效果
2019/11/04 HTML / CSS
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
shell程序中如何注释
2012/02/17 面试题
办公室文秘自我鉴定
2013/09/21 职场文书
历史教育专业个人求职信
2013/12/13 职场文书
庆七一活动简报
2015/07/20 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript