尤明明Blog

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

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

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

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


  1. // 通过apcu限制提交次数
  2. // 设置时间窗口(秒)和最大请求次数
  3. $windowSize = 60; // 1分钟
  4. $maxRequests = 2; // 最多10次请求
  5. // 获取当前用户标识(例如使用 IP 地址)
  6. $userIdentifier = $_SERVER['REMOTE_ADDR'];
  7. // 构建缓存键
  8. $cacheKey = "rate_limit:$userIdentifier";
  9. // 获取当前时间戳
  10. $currentTime = time();
  11. // 从 APCu 中获取缓存数据
  12. $cacheData = apcu_fetch($cacheKey);
  13. if ($cacheData) {
  14. // 如果缓存存在,更新请求次数和时间窗口
  15. list($requestCount, $startTime) = $cacheData;
  16. if ($currentTime - $startTime < $windowSize) {
  17. // 如果仍在时间窗口内,检查请求次数是否超过限制
  18. if ($requestCount >= $maxRequests) {
  19. JsonReturn(['code'=>1,'msg'=>'您操作过于频繁,请稍后再尝试!']);
  20. } else {
  21. // 请求次数未超过限制,更新请求次数
  22. $requestCount++;
  23. }
  24. } else {
  25. // 如果超出时间窗口,重置请求次数和开始时间
  26. $requestCount = 1;
  27. $startTime = $currentTime;
  28. }
  29. } else {
  30. // 如果缓存不存在,初始化请求次数和开始时间
  31. $requestCount = 1;
  32. $startTime = $currentTime;
  33. }
  34. // 更新 APCu 缓存
  35. apcu_store($cacheKey, [$requestCount, $startTime]);
  36. // 通过apcu限制提交次数

标签: php代码

本文链接:https://www.umming.com/jizhicms/332.html

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


发表评论:

//