PHP 图版验证码,我选择 kcaptcha

不管是防小人也好,还是防君子手误也罢,很多地方都需要用到图片验证码来加强安全性。在 PHP 站点上我选择了 Captcha,用起来很简单的。

Captcha 从 http://www.captcha.ru/en/kcaptcha/ 下站,当前版本是 KCAPTCHA 1.2.6

下载后,解压后,可以看到它自己带了例子,就是 index.php 用来产生图片,form_example.php 中引入了图片, 只是 <img src="./?<?php echo session_name()?>=<?php echo session_id()?>"> 的写法有点不好理解,要是写成 <img src="index.php/?<?php echo session_name()?>=<?php echo session_id()?>"> 就好看多了,至少知道 index.php 的内容是个图片。

还是来说说它的用法吧,确切说就是解释一下它的示例代码。分两步:

一:生成图片,并把图片对应的文字放入 Session 中用以比较,文件名为 captcha_image.php,这个 php 产生的内容是个图片:

二:表单中使用图片,也在此文件中完成了验证,文件:validate_form.php

原例中在使用图片时用的是这样的图片引用:<img src="captcha_image.php?<?php echo session_name()?>=<?php echo session_id()?>,其实后面的参数还是固定的,还不如一个随机数据好。

其实也不必太担心会使用浏览器缓存中的图片,想想,Captcha 也肯定为我们考虑到了这个基本要求的。在 kcaptcha.php 中可以看到下面那一片代码:

作用就是不让浏览器缓存的,总是取服务器上最新生成的图片。

其他相关的配置就是 kcaptcha_config.php 了,默认时生成的图片下方会加行 www.captcha.ru,你肯定不想看到这样的东西。

你可以选择去掉该行,只要把 $show_credits 设置为 false,然后图片高度去掉该行文字原本占去的高度,把 $height 由原来的 60 改为 12。

或者只修改 $credits 改为自己相关的描述,如 $credits = 'unmi.blogjava.net'

其他更多的参数配置看看就知道每项的用意。

参考:1. Cakephp 中使用Captcha实现更加安全的验证码
        2. 更多 PHP 验证码生成组件请见:9款PHP 验证码(Captcha)组件

本文链接 https://yanbin.blog/php-image-validator-kcaptcha/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments