Typecho评论加入纯代码验证,Pigeon主题可直接使用

折腾记录
2418 14

前言

给Pigeon主题加上一个评论验证来杜绝国外的BOT机器人评论!

参考文章1 非增强版,有漏洞,F12删除NUM元素会直接评论成功!

参考文章2 增强版,判断num1和num2元素是否为空!

最后还是自己DIY缝缝补补了一下 增加了numToWord函数让验证数字中文化

期间采了很多坑 在主题目录下的functions.php文件里修改代码

如:和主题自带的一些功能起到冲突,点赞失效! 这是因为添加的地方不对

如:方法二的代码 完全没有对已登录的用户权限进行判断,使得管理员无法成功发表评论!

使用$this->user->hasLogin(); 会提示报错;

使用$GLOBALS['isLogin'] = $this->user->hasLogin(); 后台的主题设置等功能就报错;

当然基于本文实现的方法只能简单加点儿验证,防君子不防小人;但是好过什么都不加要好!

现在博客这几天没有收到国外的机器人广告了.

最后还是发现了一个好用的方法:

食用开始

示例15: checkLogin
 /**
  *判断用户是否已登录,未登录自动跳转到登录页面
  *@return void
  */
public function checkLogin()
 {
     $user = Typecho_Widget::widget('Widget_User');
     if (!$user->hasLogin()) {
         Typecho_Widget::widget('Widget_Notice')->set(_t("未登录"), 'error');
         $this->response->redirect($this->options->adminUrl);
     }
 }

修改一下代码逻辑:

$user = Typecho_Widget::widget('Widget_User');//获取用户信息
 If($user->hasLogin()){
 return $archive;//判断已登录用户直接返回,无需验证 /使用Typecho_Widget获取用户登录信息 $user = Typecho_Widget::widget('Widget_User');
 }elseIf($_POST['num1'] == null || $_POST['num2'] == null ) {
            throw new Typecho_Widget_Exception(_t('验证码异常.', '评论失败'));
        } else {
            $sum = $_POST['sum'];
            switch ($sum) {
            case $_POST['num1'] + $_POST['num2'] : break;
            case null:
                throw new Typecho_Widget_Exception(_t('请输入验证码.', '评论失败'));
                break;
            default:
                throw new Typecho_Widget_Exception(_t('验证码错误,请认真答题', '评论失败'));

            }
        }
    }
return $archive;
}

最终完美无错版本代码如下直接替换文件themes/pigeon/functions.php

此处内容需要评论回复后(审核通过)方可阅读。

最后在主题目录pigeon/common/comments.php合适的地方加入

<?php spam_protection_math();?>
另外如果对验证评论有更大的需求可以尝试使用这个插件: [ Typecho 评论验证插件 CaptchaPlus]
https://blog.fxb.cc/137.html
最后更新 2023-02-09
评论 ( 14 )
问:肆 + 壹 = ?
OωO
隐私评论
  1. 看看

    2024-11-14 20:21:20香港 特别行政区回复
  2. mr

    看看

    2024-10-31 14:18:03新疆石河子市 电信回复
  3. 学习学习

    2024-09-06 15:04:39河南省郑州市 联通回复
  4. 这个是个好东西。

    2024-08-24 23:50:34安徽省安庆市 电信回复
  5. 好东西好东西好东西

    2024-07-30 00:41:59美国 Google回复
  6. 好东西

    2024-04-23 16:50:20广东省深圳市 电信回复
  7. 从迷你日志评论区来,感谢分享

    2024-04-15 10:58:11广东省深圳市 电信回复
  8. okok

    请问下博主 使用这个主题为什么首页列表不显示分页 后台设置哪种显示方式都不显示

    2023-11-08 09:14:21辽宁省铁岭市 联通回复
    1. 坏坏宝
      @okok

      可以设置的呀 外观设置 - 分页样式 - 序列号分页

      2023-11-24 13:43:13上海市松江区 电信回复
  9. didiao

    其他主题可以用吗

    2023-11-05 12:21:54辽宁省铁岭市 联通回复
  10. okok

    其他主题可用吗

    2023-11-03 23:09:56辽宁省铁岭市 联通回复
  11. 怎么实现汉化大写的,共享出来 一下啊,太需要的了

    2023-02-26 16:29:59天津市和平区 联通回复
    1. 坏坏宝
      @yaner

      numToWord () 代码段里已经贴出来了~ 我也是在网上找的代码自己套了一下

      2023-02-26 19:51:46上海市 电信回复
  12. 您好

    学习下

    2023-02-09 08:10:02河南省郑州市 联通回复