PHP 实现图片验证码之给 Typecho 评论加上验证码

PHP 实现图片验证码之给 Typecho 评论加上验证码

小菜狗
2023-05-25 / 1 评论 / 1,485 阅读 / 正在检测是否收录...

最基础版本

最基础的验证码原理不复杂,给评论框加上两个隐藏参数 mp-num1mp-num2 ,给用户一个看得见的输入框 mp-sum ,提交评论的时候检查 mp-num1 + mp-num2 是否和 mp-sum 一致,不一致就拒绝提交。

修改 comments.php ,假如上述三个参数

<?php $num1 = rand(1, 49);$num2 = rand(1, 49); ?>
<span><?php _e("验证码 %s + %s =", $num1, $num2); ?></span>
<input type="text" name="mp-sum" placeholder="<?php _e("请输入计算结果") ?>" required>
<input type="hidden" name="mp-num1" value="<?php echo $num1; ?>">
<input type="hidden" name="mp-num2" value="<?php echo $num2; ?>">

当然了,光有前端是不行的。给提交评论接口加个验证码校验函数,修改 functions.php ,加入下面的代码

价格: 2.00 元
VIP会员免费终身会员免费
温馨提示:登录付款后可永久阅读隐藏内容。 付费可读

验证码输出为图片

因为这套代码流传挺广的,容易被脚本小子一锅端,可以考虑把验证码输出为图片。原理也不复杂,调用PHP的GD库把文本转成图片就行。

价格: 2.00 元
VIP会员免费终身会员免费
温馨提示:登录付款后可永久阅读隐藏内容。 付费可读

加密校验参数

上面只是把验证码提示换成了图片,但是校验参数还是明文的,不太好,加密校验参数很简单,就是不往用户那边发数字,去掉 mp-num1np-num2 ,那你会问我那怎么对应答案呢?计算机行业的大佬(具体是谁 CHATGPT3.5也不知道)给你想好了,使用session存放这个验证码,session是由服务器端维护的用户会话数据。用人话说就是档案袋,你有,但是你不能摸。

价格: 2.00 元
VIP会员免费终身会员免费
温馨提示:登录付款后可永久阅读隐藏内容。 付费可读
35

打赏

评论 (1)

取消
  1. 头像
    1453737072
    Android · UC Browser

    感谢作者

    回复