Typecho登陆与评论添加Geetest极验证,支持PJAX主题(如Handsome)
起因
最近垃圾评论比较多,为了防止一些机器人,我给博客添加了一些评论过滤机制,并为评论添加了验证码。
原本使用的插件是noisky/typecho-plugin-geetest,这个插件是只有在页面刷新的时候才初始化Geetest验证码。由于我用的主题是Handsome并且开启了PJAX回调,进入页面和文章是不进行刷新的,这就导致Geetest无法加载。
因此我改进了这个插件,使其能够支持启用了PJAX的主题。
(目前我已经向noisky/typecho-plugin-geetest发起合并请求,截止到我写这篇文章的时候还没有被允许,启用了PJAX回调的小伙伴可以先使用我仓库的这个)
项目地址
Github地址:CairBin/typecho-plugin-geetest
使用说明
1 下载激活插件
下载插件后,解压,将文件夹名称改为 Geetest,上传到 /usr/plugins 目录下,在插件面板启用插件并配置即可使用;
或者直接在 Typecho 的插件目录下执行如下命令:
cd typechoPath/usr/plugins
git clone https://github.com/noisky/typecho-plugin-geetest.git Geetest
2 配置Nginx伪静态
如果使用了宝塔面板,可以在站点设置中进行配置。(Apache也是类似,但配置写法不一样)
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php;
}
}
3 配置插件
极验验证码的 ID 和 KEY 需要到极验官网 https://www.geetest.com/
获取;
注册、创建应用的时候,基础版是免费的;
如需开启评论验证码,则需要在你的主题评论模板 comments.php
中的任意一行添加如下代码(一般写在评论表单内,评论提交按钮之前):
<div id="captcha"></div><?php Geetest_Plugin::commentCaptchaRender(); ?>
<script src="https://cdn.jsdelivr.net/npm/jquery@2.2.4/dist/jquery.min.js"></script>
由于jsDelivr在中国大陆失效,若服务器部署在大陆境内,在可以使用字节跳动的CDN:
<div id="captcha"></div><?php Geetest_Plugin::commentCaptchaRender(); ?>
<script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/2.2.4/jquery.min.js"></script>
对于某些主题已经加载了JQuery(如Handsome主题),因此无需再次引入
<div id="captcha"></div><?php Geetest_Plugin::commentCaptchaRender(); ?>
效果展示
- 插件后台
- 登陆界面
- 评论区