一. 如何获取用户IP地址

public static function getClientIp()
{
if (getenv('HTTP_CLIENT_IP')) {$ip = getenv('HTTP_CLIENT_IP');
}
if (getenv('HTTP_X_REAL_IP')) {$ip = getenv('HTTP_X_REAL_IP');
} elseif (getenv('HTTP_X_FORWARDED_FOR')) {$ip = getenv('HTTP_X_FORWARDED_FOR');$ips = explode(',', $ip);$ip = $ips[0];
} elseif (getenv('REMOTE_ADDR')) {$ip = getenv('REMOTE_ADDR');
} else {$ip = '0.0.0.0';
}return $ip;
}

 二. 防止IP注入攻击

// IP地址合法验证, 防止通过IP注入攻击
$long = sprintf("%u", ip2long($ip));
$ip = $long ? array($ip, $long) : array('0.0.0.0', 0);

三. 防刷机制

//ip限额
$ip = getClientIp();
$ipKey = "activity_key_{$ip}";
if (!frequencyCheckWithTimesInCache($ipKey, $duration, $limitTimes)) {return false;
}
return true;

// 限制id,在$second时间内,最多请求$times次 public static function frequencyCheckWithTimesInCache($id, $second, $times){$value = Yii::app()->cache->get($id);if (!$value) {$data[] = time();Yii::app()->cache->set($id, json_encode($data), $second);return true;}$data = json_decode($value, true);if (count($data) + 1 <= $times) {$data[] = time();Yii::app()->cache->set($id, json_encode($data), $second);return true;}if (time() - $data[0] > $second) {array_shift($data);$data[] = time();Yii::app()->cache->set($id, json_encode($data), $second);return true;}return false;}

转载于:https://www.cnblogs.com/weqqtk/p/10167196.html

php获取用户真实IP和防刷机制的实例代码相关推荐

  1. PHP获取用户真实IP地址

    PHP获取用户真实IP地址 <?phpfunction getRealIpAddr() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SER ...

  2. nginx反向代理获取用户真实ip

    nginx做反向代理时,默认的配置后端获取到的ip都是来自于nginx,如何转发用户的真实ip到后端程序呢?如是是java后端,用request.getRemoteAddr();获取到的是nginx的 ...

  3. php获取客户端ip端口,Phpwind获取用户真实IP

    Phpwind获取用户真实IP 使用nat123端口映射后,可能会遇到phpwind网站无法获取用户真实IP的情况,对应解决方法有下. phpwind8.5的方法: 修改 /require/commo ...

  4. 使用nginx代理的情况下获取用户真实IP

    ##1.背景知识 1.1. 前提知识点: 还有nginx中的几个变量: remote_addr 代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站 ...

  5. nginx 如何配置来获取用户真实IP

    ##1.背景知识 1.1. 前提知识点: 还有nginx中的几个变量: remote_addr 代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站 ...

  6. QQ空间迁移_【群晖NAS+FRP_并获取用户真实IP 支持群辉6.0和群辉7.0】

    群晖NAS+FRP 并获取用户真实IP 2020-11-12 13:57:54 事情的起因是这样的, 我的NAS没有公网IP,通过FRP端口映射到云主机对外提供访问,但是互联网不怀好意的人太多了,经常 ...

  7. php获取用户真实ip_开启CDN后,PHP获取用户真实IP的方法

    因为近日需要几个小项目上CDN,但上CDN的同时,要获取到用户的真实IP地址.虽然网上有很多关于网站在CDN加速的情况下,PHP获取用户真实IP地址的方法,但总觉的不可靠,还是自己测试一下最好. PH ...

  8. PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置

    自己不需ip库,免更新.  淘宝IP库: http://ip.taobao.com /** * 获取用户真实 IP */ function getIP() { static $realip; if ( ...

  9. java获取用户真实IP地址

    /*** 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址.* 可是,如果通过了多级反向代理的话,X-Forwarded ...

最新文章

  1. 关于服务器启动慢的问题
  2. 逻辑斯蒂回归(Logistics Regression)
  3. 特殊用户邮箱附件大小设置
  4. 如何在 SAP Hybris WCMS cockpit 里创建新的 website
  5. 前端基础-html-表格的基本标签和相关属性
  6. Pytorch torch.topk()的简单用法
  7. Zabbix 对接 LDAP 实现用户统一登录的方法
  8. idea android 开发
  9. opendss视频教程
  10. matlab蒙特卡洛法求概率,基于某MATLAB的蒙特卡洛方法对可靠度的计算.doc
  11. CMYK,RGB颜色对照表
  12. C++ Test的使用
  13. imazing iOS设备管理软件
  14. 全网最强的开发者技术路线图已经更新到 2020 年!GitHub 标星 114k+,还有中文的!
  15. 【Python表白小程序】七夕表白神器(赶紧收藏起来)
  16. 缓冲技术之四:LRU缓冲管理策略分析
  17. 超融合架构与容器超融合
  18. 飞秋(FeiQ)关闭好友上下线提示功能
  19. 【Python实训项目】pygame制作【飞机大战】
  20. LAPACK的C/C++接口及代码实例

热门文章

  1. 免装版_一款好用的便签工具 桌面便签免安装版
  2. java中选择结构有哪些_Java中的选择结构
  3. mysql存储java对象_Mysql存储java对象 | 学步园
  4. 运算符在计算机语言中的作用,深入解析C++编程中范围解析运算符的作用及使用...
  5. 基于深度卷积神经网络的玉米病害识别
  6. python快速求EXCEL数据权重
  7. 编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个函数分别实现这两个字符串的拼接、整数相加和浮点数相加。要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃。
  8. html帧动画效果,利用css3-animation实现逐帧动画效果
  9. vue 两个table 并排_从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(六)
  10. android层叠卡片特效_LINE生日贺卡功能升级 快来试试私人生日贺卡 气球祝福特效...