返回列表 发布新帖
查看: 36|回复: 0

分享一个限制用户每分钟访问网站频率函数

灌水成绩
133
6
1081
主题
回帖
积分

等级头衔
U I D : 8
等级 : Lv.13

积分成就
贡献 : 435
金钱 : 12495
在线时间 : 34 小时
注册时间 : 2024-11-24
最后登录 : 2025-1-31

荣誉勋章

2024万圣节纪念币杰出贡献纪念币种子用户纪念币2024龙年纪念币2025蛇年纪念币

发表于 2025-1-12 21:42:32 | 查看全部 |阅读模式
  1. function check_ip_frequency($limit = 5, $time_frame = 60) {
  2.     // 获取用户的 IP 地址
  3.     $user_ip = $_SERVER['REMOTE_ADDR'];
  4.     $cookie_name = 'ip_access_times_' . md5($user_ip); // 使用 IP 地址生成唯一的 Cookie 名称

  5.     // 获取当前时间
  6.     $current_time = time();

  7.     // 检查 Cookie 是否存在
  8.     if (isset($_COOKIE[$cookie_name])) {
  9.         // 解码 Cookie 中的访问时间数组
  10.         $access_times = json_decode($_COOKIE[$cookie_name], true);
  11.     } else {
  12.         $access_times = []; // 初始化访问时间数组
  13.     }

  14.     // 清理过期的访问记录
  15.     $access_times = array_filter($access_times, function($time) use ($current_time, $time_frame) {
  16.         return ($current_time - $time) < $time_frame;
  17.     });

  18.     // 添加当前访问时间
  19.     $access_times[] = $current_time;

  20.     // 检查访问次数是否超过限制
  21.     if (count($access_times) > $limit) {
  22.         header("HTTP/1.1 404 Not Found");
  23.         exit; // 终止脚本执行
  24.     }

  25.     // 更新 Cookie,设置过期时间为 $time_frame 秒
  26.     setcookie($cookie_name, json_encode($access_times), $current_time + $time_frame, "/");
  27. }

  28. // 使用示例
  29. check_ip_frequency(5, 60); // 限制每分钟最多访问 5 次
复制代码


温馨提示:本网站所展示的内容均由注册会员自行发布,这些内容仅代表作者本人的观点和立场,并不代表本网站的官方立场或意见。我们致力于打造一个开放的社区平台,鼓励用户自由表达和分享信息。然而,我们也明确声明,对于用户发布的内容,我们不承担任何法律责任。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

服务支持

社区监狱 封禁类型
投诉/建议联系

fankui@shequla.com

未经授权禁止转载,复制和建立镜像
如有违反,追究法律责任
  • 微信公众号
  • 哔哩哔哩
Copyright © 2001-2025 社区啦 - 小众的中文社区 版权所有 All Rights Reserved. |网站地图 冀ICP备2022019298号
关灯 在本版发帖
手机扫一扫访问
官方Q群返回顶部
快速回复 返回顶部 返回列表