Typecho 文档:给搜索添加时间间隔限制

10月06日

适用程序:Typecho
程序版本:1.2.1
文档作者:Lopwon
作者博客:Lopwon.com
发布页面:Lopwon.com/attachment/3800/
许可方式:CC BY-NC-SA

注意:此文档源于作者在博客改造中的一些经验总结,转载还请署名。

敬告:此文档操作涉及程序核心文件的修改,作者不对你在使用中产生的任何问题造成的不良后果,承担责任。

文档说明

一定程度上,规避非正常人类的非正常行为。


使用方法

A 涉及文件

var/Widget/Archive.php

B 改造文件

作用:限定搜索频率。

1. 打开文件  var/Widget/Archive.php 搜索找到以下代码:

self::pluginHandle()->trigger($hasPushed)->search($keywords, $this);

2. 在以上代码的下一行添加以下代码:

    $currentTime = time(); // 获取当前时间   
    $searchInterval = 60;    // 自定义搜索间隔时间,单位:秒
    $lastSearchTime = Cookie::get('last_search_time'); // 获取最后一次搜索时间

    if ($lastSearchTime && ($currentTime - $lastSearchTime < $searchInterval)) { // 间隔时间内再次搜索,抛出提示
        throw new WidgetException('搜索过于频繁');    
    }
    
    Cookie::set('last_search_time', $currentTime); // 更新上一次搜索时间

至此,在自定义搜索间隔时间内,再次触发搜索则抛出提示。
store