幻蓝小站

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 12|回复: 0

Typecho无插件实现评论算术验证

[复制链接]

5317

主题

5318

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
15994
幻蓝 发表于 2022-11-21 13:13:30
Typecho的垃圾评论还是比较多的,除了插件外,还可以通过PHP函数实现简单的算术验证码。

第一步
function.php
如下函数
  1. function themeInit($comment){
  2. $comment = spam_protection_pre($comment, $post, $result);
  3. }
  4. function spam_protection_math(){
  5.     $num1=rand(1,49);
  6.     $num2=rand(1,49);
  7.     echo "<label for="math">请输入<code>$num1</code>+<code>$num2</code>的计算结果:</label>\n";
  8.     echo "<input type="text" name="sum" class="text" value="" size="25" tabindex="4" style="width:218px" placeholder="计算结果:">\n";
  9.     echo "<input type="hidden" name="num1" value="$num1">\n";
  10.     echo "<input type="hidden" name="num2" value="$num2">";
  11. }
  12. function spam_protection_pre($comment, $post, $result){
  13.     $sum=$_POST['sum'];
  14.     switch($sum){
  15.         case $_POST['num1']+$_POST['num2']:
  16.         break;
  17.         case null:
  18.         throw new Typecho_Widget_Exception(_t('对不起: 请输入验证码。<a href="javascript:history.back(-1)">返回上一页</a>','评论失败'));
  19.         break;
  20.         default:
  21.         throw new Typecho_Widget_Exception(_t('对不起: 验证码错误,请<a href="javascript:history.back(-1)">返回</a>重试。','评论失败'));
  22.     }
  23.     return $comment;
  24. }
复制代码
第二步
comments.php
添加函数
打开主题comments.php文件,在适当为止插入如下代码:
  1. <?php spam_protection_math();?>
复制代码
如果觉得100以内太难了,请修复function.php中添加的代码中rand后面的数字范围。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|幻蓝小站 ( 黔ICP备18008076号-1 )|网站地图

GMT+8, 2022-11-30 08:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表