主题描述
- 全站变量名、类名统一规范,重在方便更多人参与二开与拓展
- 主题开箱即用,没有任何复杂的操作,无需像其他主题去特意创建个分类等。
- 主题独家Joe编辑器
- 主题响应式布局,不依赖任何响应式框架,采用 Joe 独家响应式
- 主题在一切可能暴露的接口上,屏蔽sql注入、xss攻击风险,提供安全保障
- 内置超强视频功能、包含直播功能、全网影视功能、文章内插入视频功能
- 主题SEO极致优化,Lighthouse SEO跑分彪满100分
- 主题色彩全局公用、小白轻松直接修改整站自定义主题色
- 主题内置代码高亮、无需借助任何插件、支持200种语言
- 主题首发极强画图回复功能,为你的博客带来用户互动,不再像传统博客那样,仅限文字
- 主题内置sitemap、百度推送、友联、回复可见等,无需依赖任何插件
主要问题
该主题虽精简小巧好用,但是恶意评论或者灌水现象问题亟需解决,因此我们主要来解决此问题,网上各种解决方法很多,但是并不优美得体大方,所以我们这篇文章主要是解决用户在评论时增加验证码,拒绝恶意灌水问题。
解决问题
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("请输入正确的邮箱!");
复制一下代码粘贴在上面代码的下方
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)