多数网站为了安全起见,在提交内容时多增设有验证码这个功能,从早期单一的数字验证到现在多功能化验证,甚至是网易163邮件已经推出了脸部识别登录测试等。本文,就普通的网站验证码一事,谈谈用户体验这件细微的事。...
验证码的目的
验证码大多是为了防止机器人向网站倾销大量垃圾信息。
常见验证码的大概分类
- 单一的字符图片
- 数字
- 字母
- 问答型
- 公式——简单的数学运算
- 选择性问答——给用户几个答案,让用户填写
- 混合型——字符+音频
- 互动型——让用户进行某个操作,如拉动某个图标 </ul>
本文着重谈论单一字符型的用户体验。
令人难以忍受的验证码
下面是一张验证码
很显示,这是一个中文网站,用的却是外国流行的验证码方式,我想说的是,我听不懂英文的情况下,该怎么办?
字符验证码用户体验浅谈
现在,单一的数字或是字母已经很少见了,原因不用多说,大多是机器识别太容易了。而目前大多数网站的验证码是采用数字加字母。那么,我们分析以下的几种情况:
验证码忽略大小写
一般网站的验证码是4位,如果是:大写字母+小写字母+大写字母+小写字母,那么我共要使用两次shift键,非常的麻烦——手指也非常的累。那么显然,验证码的第一重用户体验是:忽略大小写,这几年前大多数网站已经做得很好了,依然记得当年,用QQ进行某个操作时要验证码,我没有注意,一直使用小写字母——居然成功了,这在当时是很少见的。慢慢的,开始有一些网站提示(不区分大小写)——这是一种进步
去除验证码的形近字符
请看下面的四位验证码,请你快速的输入“1ilL”,头略晕了吧?这四个字符分别是数字1,小写字母I,大小写字母L。对此,我们来分析下觉的字符验证码共有:[0-9a-zA-Z]共10+26+26=62个字符,其中,近形的有以下的几组:
i I 1 l L j J
0 o O Q
2 z Z
9 g
可能会混的有以下的几组:
u U V v
W V
M N
一般的,我们需要去形近的16个字符,这时可用的还有46个字符,那么还有46^4种组合,还是很丰富的。那么,要不要去除“可能会混”的字符呢?我的建议是不要去掉,因为这些普通用户还是可以在比较短时间内识别的,而在加入干扰线的情况下,普通机器人要识别还是要花点力气的。
使用PHP生成高用户体验的验证码
<?php $removes = preg_split('!\s!', 'i I 1 l L j J 0 o O Q 2 z Z 9 g'); $codes = array_merge(range(0,9), range('a','z'),range('A','Z')); $codes = str_replace($removes,'',join('',$codes)); //345678abcdefhkmnpqrstuvwxyABCDEFGHKMNPRSTUVWXY
尾记:小中见大,千里之堤善毁于蚁穴。小小的验证码改善可能在无形中赢得用户的好感,又没有任何成本,何乐而不为?其它的比较现代型的验证码技术,可能需要比较高的技术支持,暂不谈。
</div>