尤明明Blog

网站建设外包|网站切图外包,技术不仅是一种专业,更是一种责任!

您的当前位置: 首页 » CMS学习 » 极致cms »

小程序不支持session传递数据,可通过php扩展apcu限制提交次数

2024-10-14   Umming   极致cms    评论(0)    浏览(10)


               // 通过apcu限制提交次数
	            // 设置时间窗口(秒)和最大请求次数
                    $windowSize = 60; // 1分钟
                    $maxRequests = 2; // 最多10次请求
                    // 获取当前用户标识(例如使用 IP 地址)
                    $userIdentifier = $_SERVER['REMOTE_ADDR'];
                    // 构建缓存键
                    $cacheKey = "rate_limit:$userIdentifier";
                    // 获取当前时间戳
                    $currentTime = time();
                    // 从 APCu 中获取缓存数据
                    $cacheData = apcu_fetch($cacheKey);
                    if ($cacheData) {
                        // 如果缓存存在,更新请求次数和时间窗口
                        list($requestCount, $startTime) = $cacheData;
                        if ($currentTime - $startTime < $windowSize) {
                            // 如果仍在时间窗口内,检查请求次数是否超过限制
                            if ($requestCount >= $maxRequests) {
                              JsonReturn(['code'=>1,'msg'=>'您操作过于频繁,请稍后再尝试!']);
                            } else {
                                // 请求次数未超过限制,更新请求次数
                                $requestCount++;
                            }
                        } else {
                            // 如果超出时间窗口,重置请求次数和开始时间
                            $requestCount = 1;
                            $startTime = $currentTime;
                        }
                    } else {
                        // 如果缓存不存在,初始化请求次数和开始时间
                        $requestCount = 1;
                        $startTime = $currentTime;
                    }
                    
                    // 更新 APCu 缓存
                    apcu_store($cacheKey, [$requestCount, $startTime]);
           // 通过apcu限制提交次数

标签: php代码

本文链接:https://www.umming.com/jizhicms/332.html     百度已收录

声明:本站信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!


发表评论: