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

查看 22|回复 2
作者:安心frDJ4   
[ol]
  • function check_ip_frequency($limit = 5, $time_frame = 60) {
  •     // 获取用户的 IP 地址
  •     $user_ip = $_SERVER['REMOTE_ADDR'];
  •     $cookie_name = 'ip_access_times_' . md5($user_ip); // 使用 IP 地址生成唯一的 Cookie 名称
  •     // 获取当前时间
  •     $current_time = time();
  •     // 检查 Cookie 是否存在
  •     if (isset($_COOKIE[$cookie_name])) {
  •         // 解码 Cookie 中的访问时间数组
  •         $access_times = json_decode($_COOKIE[$cookie_name], true);
  •     } else {
  •         $access_times = []; // 初始化访问时间数组
  •     }
  •     // 清理过期的访问记录
  •     $access_times = array_filter($access_times, function($time) use ($current_time, $time_frame) {
  •         return ($current_time - $time)  $limit) {
  •         header("HTTP/1.1 404 Not Found");
  •         exit; // 终止脚本执行
  •     }
  •     // 更新 Cookie,设置过期时间为 $time_frame 秒
  •     setcookie($cookie_name, json_encode($access_times), $current_time + $time_frame, "/");
  • }
  • // 使用示例
  • check_ip_frequency(5, 60); // 限制每分钟最多访问 5 次[/ol]复制代码也可以用session来记录更安全

    每分钟, 时间

  • 小千   
    用_COOKIE就是掩耳盗铃,爬虫不影响
    feiji   
    单ip 并发限制一下
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部