小程序不支持session传递数据,可通过php扩展apcu限制提交次数
2024-10-14 Umming 极致cms 评论(0) 浏览(673)
- // 通过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代码
上一篇: 小程序不支持session,php使用apcu扩展实现验证码功能
下一篇: js获取视频时长
本文链接:https://www.umming.com/jizhicms/332.html
声明:本站信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!
也许你还会对下面的内容感兴趣:
发表评论: