·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

discuz插件 防止恶意刷新页面

653 2
发表于 2021-10-15 05:56:31 | 查看全部 阅读模式
discuz插件 防止恶意刷新页面_帖子id:4711_发布时间:2021-10-15 05:56:31
更新日期: 2021-10-15
兼容版本: X2.5 X3 X3.1 X3.2 X3.3 X3.4 X3.5 F1.0 L1.0 
适配编码: GBK UTF8SC UTF8TC BIG5 
应用介绍

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 yusr 于 2021-10-15 06:13 编辑

本插件是为了防止用户恶意刷新页面而开发的;用户可以设置最小刷新时间,防止用户频繁刷新页面.
也可以设置过滤字符串,过滤不需要拦截的链接.

具体功能
刷新最小时间设置:
例如:最小刷新时间设置5,最大刷新次数3.
表示,在5秒内,最多允许3次刷新页面.
如果想在2秒之内至允许一次,可以设置最小刷新时间为2,最大刷新次数为1.

刷新最小时间内最大刷新次数

不拦截的链接列表:
例如:不想拦截社区和家园这两个页面刷新.
首先分析这两个链接地址:http://localhost/forum.php 和 http://localhost/home.php
这里可以这样设置:forum.php|home.php
这样就会不拦截这两个页面以及子页面.
注意,多个链接要用|分割
discuz插件 防止恶意刷新页面 discuz,插件,防止,恶意,刷新
————————————————————————
不过貌似插件有一点小问题,就是右键刷新插件反应不灵敏
F5刷新插件有效
点击 返回上一步 有点小问题,懒得弄  自己稍微弄下吧

我要说一句 收起回复

评论2

gfklswwtLv.2 发表于 2021-10-15 17:21:38 | 查看全部
没啥用,鸡肋插件~
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-17 20:20:13 | 查看全部
你好,关于你提到的防止恶意刷新页面的Discuz插件问题,我可以提供一些建议和解决方案。

### 1. 插件反应不灵敏的问题
右键刷新插件反应不灵敏,可能是因为插件没有正确捕获右键刷新事件。通常情况下,浏览器中的右键刷新和F5刷新是通过不同的事件触发的。你可以尝试在插件代码中添加对右键刷新事件的监听。

#### 解决方案:
在插件的JavaScript代码中,添加对右键刷新事件的监听。你可以使用`window.onbeforeunload`事件来捕获页面刷新事件,无论是F5还是右键刷新。

  1. window.onbeforeunload = function() {
  2.     // 在这里处理刷新逻辑
  3.     // 例如:记录刷新时间,检查是否超过最大刷新次数等
  4. };
复制代码


### 2. 点击“返回上一步”的问题
点击“返回上一步”时出现问题,可能是因为插件没有正确处理浏览器的历史记录变化。你可以通过监听`popstate`事件来处理这种情况。

#### 解决方案:
在插件中添加对`popstate`事件的监听,确保在用户点击“返回上一步”时也能正确执行刷新限制逻辑。

  1. window.addEventListener('popstate', function(event) {
  2.     // 在这里处理返回上一步的逻辑
  3.     // 例如:记录刷新时间,检查是否超过最大刷新次数等
  4. });
复制代码


### 3. 插件逻辑优化
为了确保插件在不同情况下都能正常工作,建议对插件的逻辑进行优化。例如,可以在插件中添加对页面加载时间的记录,并在用户刷新时检查时间间隔。

#### 示例代码:
  1. var lastRefreshTime = 0;
  2. var maxRefreshCount = 3; // 最大刷新次数
  3. var minRefreshInterval = 5000; // 最小刷新时间间隔,单位毫秒
  4. var refreshCount = 0;

  5. window.onbeforeunload = function() {
  6.     var currentTime = new Date().getTime();
  7.     if (currentTime - lastRefreshTime < minRefreshInterval) {
  8.         refreshCount++;
  9.         if (refreshCount > maxRefreshCount) {
  10.             alert('刷新过于频繁,请稍后再试!');
  11.             return false; // 阻止刷新
  12.         }
  13.     } else {
  14.         refreshCount = 1;
  15.     }
  16.     lastRefreshTime = currentTime;
  17. };
复制代码


### 4. 不拦截的链接列表
你提到可以通过设置`forum.php|home.php`来排除某些页面的刷新限制。这个功能可以通过在插件中添加对当前URL的判断来实现。

#### 示例代码:
  1. var excludedUrls = ['forum.php', 'home.php']; // 不拦截的链接列表

  2. function isExcludedUrl() {
  3.     var currentUrl = window.location.href;
  4.     for (var i = 0; i < excludedUrls.length; i++) {
  5.         if (currentUrl.indexOf(excludedUrls[i]) !== -1) {
  6.             return true;
  7.         }
  8.     }
  9.     return false;
  10. }

  11. window.onbeforeunload = function() {
  12.     if (isExcludedUrl()) {
  13.         return; // 不拦截这些页面的刷新
  14.     }
  15.     var currentTime = new Date().getTime();
  16.     if (currentTime - lastRefreshTime < minRefreshInterval) {
  17.         refreshCount++;
  18.         if (refreshCount > maxRefreshCount) {
  19.             alert('刷新过于频繁,请稍后再试!');
  20.             return false; // 阻止刷新
  21.         }
  22.     } else {
  23.         refreshCount = 1;
  24.     }
  25.     lastRefreshTime = currentTime;
  26. };
复制代码


### 总结
通过以上方法,你可以优化插件的刷新限制逻辑,确保插件在不同情况下都能正常工作。如果你对代码的修改有任何疑问,或者需要进一步的帮助,请随时联系我。

希望这些建议对你有所帮助!如果你有其他问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.222.213.240,GMT+8, 2025-5-2 10:57 , Processed in 0.788407 second(s), 84 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表