0

从网站验证码谈用户体验

pjiaxu 12年前

多数网站为了安全起见,在提交内容时多增设有验证码这个功能,从早期单一的数字验证到现在多功能化验证,甚至是网易163邮件已经推出了脸部识别登录测试等。本文,就普通的网站验证码一事,谈谈用户体验这件细微的事。...

验证码的目的

验证码大多是为了防止机器人向网站倾销大量垃圾信息。

常见验证码的大概分类

  • 单一的字符图片
    • 数字
    • 字母
  • 问答型
    • 公式——简单的数学运算
    • 选择性问答——给用户几个答案,让用户填写
  • 混合型——字符+音频
  • 互动型——让用户进行某个操作,如拉动某个图标
  • </ul>

    本文着重谈论单一字符型的用户体验。

    令人难以忍受的验证码

    下面是一张验证码

    20120606092509_10504.jpg

    很显示,这是一个中文网站,用的却是外国流行的验证码方式,我想说的是,我听不懂英文的情况下,该怎么办?

    字符验证码用户体验浅谈

    现在,单一的数字或是字母已经很少见了,原因不用多说,大多是机器识别太容易了。而目前大多数网站的验证码是采用数字加字母。那么,我们分析以下的几种情况:

    验证码忽略大小写

    一般网站的验证码是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>