XCaptcha-for-Typecho 新一代的Typecho验证插件
起因
之前由于博客垃圾评论过多,因此想要找一个验证码插件来给评论提交添加验证。一开始我用的是本地的数字图片验证码,后来在别人项目的基础上改进了CairBin/typecho-plugin-geetest。
但是这个仅支持极验证,如果需要用Google reCaptcha等还需要重新上传,于是便打算自己写一个支持多种验证码的插件。
Github项目地址 CairBin/XCaptcha
支持
目前支持的验证码如下:
使用方式
下载本项目
通过git命令来获取本项目:
git clone https://github.com/CairBin/XCaptcha.git
或者通过下载的方式获取压缩包,解压后的文件夹名称修改为XCaptcha
。
配置插件
将XCaptcha
文件夹上传到你的Typecho博客的usr/plugins/
目录下,在Typecho后台的插件面板里激活即可。
从上述所支持验证码的官网注册账户,然后获取你站点的Captcha ID
和Secret Key
,有的也叫Site Key
和Secret Key
,本质上都一样,对应公钥和私钥。前者用于前端标识可以公开,后者用于服务端向验证码服务器校验需要保密。
修改你主题模板的comments.php
文件,主题目录是usr/themes/your_them/
,在评论提交按钮之前或者表单最后添加一行代码:
<?php if (array_key_exists('XCaptcha', Typecho_Plugin::export()['activated'])) : XCaptcha_Plugin::showCaptcha(); endif; ?>
回到博客后台配置插件,将获取到的ID/Key填写进去,以及配置其他参数即可。
这里需要特别说明一下,“引入JS的CDN加速地址”取决于网络情况,它会替代原本引入的验证初始化脚本(不是二次验证的接口),如果遇到某些JS加载缓慢可以使用,如果不明白留空即可。
另外,如果勾选了开启登陆页面验证码则,注册页面也会跟着开启,前提是你启动了注册功能。
项目展示
特别感谢
本项目在编写时参考了其他插件项目:
26 条评论
希望可以在未验证的时候禁用登录按钮,现在测试登陆页面不验证同样可以提交
对于Geetest可以这样做,它可以在自定义的回调函数中添加或者移除样式,但是其他验证码的校验是通过CDN引入的script,我并不清楚是否能自定义验证之后的回调,所以把这个细节砍掉了。
好用 !不过已登录也要验证就有点难受。
能具体描述下吗,我升级下插件OWO
好的,就是,网站管理员回复他人评论也需要进行验证。要是能改成站长回复评论不需要验证就完美了!
最新版本已经添加此功能了,可选择开启管理员评论不需验证
我一直想对PJAX主题做兼容,但是没有足够的主题可以做测试,在有的PJAX上能工作有的不能
你好大佬,有没有可以暂时关闭这个插件的方法,直接删掉会报错,我在登录的时候,验证成功了也提示我验证,导致我进入不了后台![](https://tc.sfwww.cn/i/2024/11/28/67483a3d48a94.png)
另外这个是插件导致的还是配置不当导致的,我测试的时候没问题啊
不清楚,因为刚配置好没问题,过了一天才这样,也有可能是cloudflare抽风。
已经恢复,非常感谢|´・ω・)ノ
你去数据库的typecho_options里修改name为plugins那一行为`a:0:{}`,操作前记得备份数据库!
评论的时候验证码显示验证成功 但是评论没反应
请问是用的哪一个验证,极验证还是hCaptcha还是reCaptcha还是cloudflare
另外请提供下typecho版本号,可以到github仓库提issue来写明具体情况
有站点吗,我看下具体情况
请问博主用的什么主题,我想在本地复现下问题
由于是收费主题我无法进行测试,请问下jquery开启状态,jquery CDN配置(这两项仅针对于极验证)
请尝试下使用其它验证工具如cloudflare或者hcaptcha是否出现同样的问题
请问引入JS的CDN加速地址默认是https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/2.2.4/jquery.min.js吗,为什么我在设置里更改为https://cdn.jsdelivr.net/npm/jquery@2.2.4/dist/jquery.min.js会导致验证码无法正常加载呢,我去Plugin.php里将https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/2.2.4/jquery.min.js改为https://cdn.jsdelivr.net/npm/jquery@2.2.4/dist/jquery.min.js才正常OωO
我现在已经更新仓库的代码了,目前v1.0.1版本,改用了jsdelivr作为默认CDN,支持启动或禁用插件的jQuery(对于Handsome等主题不需要额外引入)。
另外还支持自定义jquery的URL,即使默认的挂掉了可以在插件配置页面手动更换。
好的谢谢|´・ω・)ノ,已star
因为大陆访问不了jsdelivr(之前是这样,不知道现在恢复了没),我默认使用的字节跳动的CDN加载的jquery,测试的时候是正常的。可能你服务器地区原因访问不了吧,我更新下插件来添加这个的设置项。
完了,我的主题没有comments.php文件
在其他PHP文件里找到评论提交表单那部分就行,有的主题不一定非得有comments.php