­句插入记录,防止SQL注入 $db->exec("REPLACE INTO {$db->tablepre}iqismart_access_log (tid, uid, ip, create_date) VALUES ($tid, $uid, '$ip', $create_date)"); } // 检查用户访问权限 function accesslimit_check($uid){ global $db, $time; static $result_cache = array(); // 添加静态缓存 // 已经检查过的用户,直接返回缓存结果 if(isset($result_cache[$uid])) { return $result_cache[$uid]; } // 获取用户信息 $user = user_read($uid); $gid = empty($user) ? 0 : $user['gid']; // 获取配置信息 static $kv = NULL; if($kv === NULL) { $kv = kv_get('accesslimit'); // 检查是否需要每日清理 accesslimit_check_daily_reset(); } // 如果插件未启用,直接返回true if(empty($kv['enabled'])) { return $result_cache[$uid] = true; } // 获取用户组信息 static $groups = NULL; if($groups === NULL) { $grouplist = group_list_cache(); $groups = array(); $i = 0; foreach($grouplist as $group) { $groups[$group['gid']] = array('index' => $i, 'name' => $group['name']); $i++; } } // 无法找到用户组信息 if(!isset($groups[$gid])) { return $result_cache[$uid] = true; } $group_index = $groups[$gid]['index']; // 检查是否无限制 if(!empty($kv['unlimit'][$group_index]) && $kv['unlimit'][$group_index] == $gid) { return $result_cache[$uid] = true; } // 检查是否设置了时间和数量限制 $time_limit = isset($kv['time'][$group_index]) ? intval($kv['time'][$group_index]) : 0; $count_limit = isset($kv['count'][$group_index]) ? intval($kv['count'][$group_index]) : 0; if(empty($time_limit) || empty($count_limit)) { return $result_cache[$uid] = true; } // 计算时间范围 - 修正日期计算逻辑 $start_time = $time - ($time_limit * 86400); // 使用86400秒/天的固定值更准确 // 检查用户访问数量 if($gid == 0) { $ip = accesslimit_get_real_ip(); $sql = "SELECT COUNT(DISTINCT tid) AS count FROM {$db->tablepre}iqismart_access_log WHERE create_date > $start_time AND ip = '$ip'"; } else { $sql = "SELECT COUNT(DISTINCT tid) AS count FROM {$db->tablepre}iqismart_access_log WHERE create_date > $start_time AND uid = $uid"; } $res = $db->sql_find_one($sql); $used_count = $res['count']; // 超过限制 if($used_count >= $count_limit) { return $result_cache[$uid] = false; } // 针对非新用户的额外检查 if($gid > 0 && isset($user['create_date']) && $user['create_date'] < $time - 60 * 60 * 24) { static $thread_count = NULL; if($thread_count === NULL) { $thread_count = $db->sql_find_one("SELECT COUNT(DISTINCT tid) AS count FROM {$db->tablepre}thread WHERE create_date > $start_time")['count']; } if($thread_count <= 0) { return $result_cache[$uid] = false; } } return $result_cache[$uid] = true; } // 获取用户真实IP function accesslimit_get_real_ip() { static $ip = NULL; // 添加静态缓存 if($ip !== NULL) { return $ip; } // 更安全的IP获取方式 $client_ip = ''; if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { // Cloudflare支持 $client_ip = $_SERVER['HTTP_CF_CONNECTING_IP']; } elseif(!empty($_SERVER["HTTP_CLIENT_IP"])) { $client_ip = $_SERVER["HTTP_CLIENT_IP"]; } elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips = explode(",", $_SERVER['HTTP_X_FORWARDED_FOR']); $client_ip = trim($ips[0]); // 只取第一个IP } elseif(!empty($_SERVER['REMOTE_ADDR'])) { $client_ip = $_SERVER['REMOTE_ADDR']; } // 验证IP是否有效 if(!empty($client_ip) && filter_var($client_ip, FILTER_VALIDATE_IP)) { $ip = $client_ip; } else { $ip = '0.0.0.0'; // 默认IP } return $ip; } ?> 河南-51探花论坛
  • 郑州玉凤路蓝悦 郑州
    探花一级 totu 2021-3-18
    1962 0
  • 郑州大学路航海路体验记 郑州
    探花一级 taida 2021-3-18
    1947 0
  • 探花一级 saomei 2021-3-18
    2082 0
  • 郑州一排粉色小红屋,小姐姐门口拉客 郑州
    探花一级 大JJ 2021-3-18
    2030 0
  • 郑州南仓街阳光足浴大活 郑州
    探花一级 taida 2021-3-18
    2112 0
  • 郑州工人路站街 郑州
    探花一级 totu 2021-3-18
    2023 0
  • 郑州二七区安朵酒店不靠谱 郑州
    探花一级 大JJ 2021-3-18
    1932 0
  • 郑州建云路 郑州
    探花一级 taida 2021-3-18
    2042 0
  • 安阳大奶美少女娇娇,暴爽! 安阳
    探花一级 totu 2021-3-18
    2421 0
  • 郑州祭城体验一般 郑州
    探花一级 taida 2021-3-18
    2051 0
  • 郑州中原区精品兼职良家爽记 郑州
    探花一级 七次郎 2021-3-18
    2104 0
  • 郑州19岁制服嫩妹的惊喜 郑州
    探花一级 七次郎 2021-3-18
    2099 0
  • 郑州在探东区秘地丝足店 带劲的很 郑州
    探花一级 saomei 2021-3-18
    2005 0
  • 郑州东区阿红 郑州
    探花一级 totu 2021-3-18
    2061 0
  • 南阳市兼职19岁嫩妹 爽记 南阳
    探花一级 大JJ 2021-3-18
    2871 0
  • 郑州青年路红灯区 郑州
    探花一级 paoyou 2021-3-18
    2032 0
  • 郑州市区上门年轻漂亮妹子 验证靠谱 郑州
    探花一级 totu 2021-3-18
    2042 0
  • 郑州商都路十里铺 23嫩妹 郑州
    探花一级 saomei 2021-3-18
    2072 0
  • 郑州良家 郑州
    探花一级 paoyou 2021-3-18
    2115 0
  • 郑州东北火辣妹子服务多样 郑州
    探花一级 大JJ 2021-3-18
    2025 0

发新帖
河南
一品楼论坛河南板块,介绍了河南各辖区的性息场所,包含河南洗浴桑拿一条龙,河南足疗SPA,河南KTV夜店,河南红灯区,河南楼凤站街,河南兼职学生妹,河南外围女等信息.