Joe主题评论增加验证码教程

Joe主题评论增加验证码教程

Egotp Software
2022-09-13 / 0 评论 / 70 阅读 / 正在检测是否收录...

主题描述

  • 全站变量名、类名统一规范,重在方便更多人参与二开与拓展
  • 主题开箱即用,没有任何复杂的操作,无需像其他主题去特意创建个分类等。
  • 主题独家Joe编辑器
  • 主题响应式布局,不依赖任何响应式框架,采用 Joe 独家响应式
  • 主题在一切可能暴露的接口上,屏蔽sql注入、xss攻击风险,提供安全保障
  • 内置超强视频功能、包含直播功能、全网影视功能、文章内插入视频功能
  • 主题SEO极致优化,Lighthouse SEO跑分彪满100分
  • 主题色彩全局公用、小白轻松直接修改整站自定义主题色
  • 主题内置代码高亮、无需借助任何插件、支持200种语言
  • 主题首发极强画图回复功能,为你的博客带来用户互动,不再像传统博客那样,仅限文字
  • 主题内置sitemap、百度推送、友联、回复可见等,无需依赖任何插件
    Jeo.png

主要问题

该主题虽精简小巧好用,但是恶意评论或者灌水现象问题亟需解决,因此我们主要来解决此问题,网上各种解决方法很多,但是并不优美得体大方,所以我们这篇文章主要是解决用户在评论时增加验证码,拒绝恶意灌水问题。

解决问题

1、复制以下代码并建立captcha.php文件放在/Joe/core/目录下

<?php
session_start();

header("Content-type: image/png");

$image = imagecreatetruecolor(85, 25);
$bgcolor = imagecolorallocate($image, 255, 255, 255);
imagecolortransparent($image, $bgcolor);
imagefill($image, 0, 0, $bgcolor);

$content = "0123456789";

$captcha = "";

/* 绘制干扰点 */
for ($i = 0; $i < 80; $i++) {
    $pointColor = imagecolorallocate($image, rand(100, 255), rand(100, 255), rand(100, 255));
    imagesetpixel($image, rand(0, 85), rand(0, 25), $pointColor);
}

/* 绘制验证码 */
for ($i = 0; $i < 4; $i++) {
    $fontSize = 10;
    $fontColor = imagecolorallocate($image, 155, 155, 155);
    $fontContent = rand(0, 9);
    $captcha .= $fontContent;
    $x = ($i * 85 / 4) + 7;
    $y = rand(3, 8);
    imagestring($image, $fontSize, $x, $y, $fontContent, $fontColor);
}

$_SESSION["captcha"] = $captcha;

imagepng($image);
imagedestroy($image);

2、编辑/Joe/core/factory.php文件

在此文件的约第12行下增加以下内容

/* -- 验证码前端校验 -- */
        session_start();
        $captcha = (int)Typecho_Request::getInstance()->captcha;
        if (!$captcha) throw new Typecho_Widget_Exception('请输入验证码!', 403);
        if ($captcha != $_SESSION['captcha']) throw new Typecho_Widget_Exception('验证码错误,请检查!', 403);
        /* -- 验证码前端校验 -- */

3、编辑/Joe/assets/joe.global.js文件

找到约第402行或以下代码处

if (!/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(mail)) return Qmsg.info("请输入正确的邮箱!");

复制一下代码粘贴在上面代码的下方

温馨提示:购买VIP会员后可阅读隐藏内容。 VIP会员可见

4、编辑/Joe/assets/joe.global.min.js文件

找到约第375行或以下代码处

return Qmsg.info("请输入正确的邮箱!");

复制一下代码粘贴在上面代码的下方

      /* -- 验证码前端校验 -- */
      const ca = $(
        ".joe_comment__respond-form .head input[name='captcha']"
      ).val();
      if ("" === ca.trim()) return Qmsg.info("请输入验证码!");
      /* -- 验证码前端校验 -- */

找到约第392行或以下代码

data: { author: i, mail: c, text: d, parent: n, url: r, _: s },

将其改为以下代码

data: { author: i, mail: c, text: d, parent: n, captcha: ca, url: r, _: s },

0

评论 (0)

取消
在线咨询!