} } }

    LotusPhp进修五:Captcha 组件的应用

    添加时间:2013-5-6 点击量:

    今朝这个进修文档的次序有点乱,我也是看哪个简单就先写哪个,正确的应当是介绍文档,然后介绍文档的目次布局,然后,各个组件有个简介,再跟下来来个 HelloWorld ,然后零丁介绍组件,然掉队阶应用等等,这么个次序才是正确的,不过比来斗劲忙,最后写完会从头收拾出一个次序来的。


    Captcha 就是 LotusPhp 验证码的组件,一般来说,斗劲规范的 LotusPhp 组件都邑由3个项目组构成,就是分别是设备文件,框架源码和应用源码,框架源码的话本身下就行了,我这里不占处所贴代码了,这里就是写出设备文件和应用典范,能快速看懂会用为原则。


    Captcha 组件可以快速生成验证码,这个验证码不借助于 Session 验证,而是在指定文件夹里生成一个经过加密的验证文件,读取的验证码的时辰会主动拉取验证文件,读取成功就删除了验证文件,读取不成功返回 false。


    Captcha 组件有3个办法


    init() 是初始化验证码组件的办法。


    getImageResource(¥seed) 是生成验证码的办法,会读取默认的设备文件,然后按照传入的 ¥seed 生成验证码图像,该变量不成所以常量,建议可以应用md5(uniqid())获得随机不冲突的¥seed


    verify(¥seed, ¥userInput) 是验证验证码是否正确的办法,两个参数分别是随验证码一路发送到客户端的¥seed,一个是用户输入的数据,若是用户输入的值便是 Captcha 缓存中值就代表验证成功。


    设备文件名为:captcha.conf.php


    先来看设备文件:



    <?php
    // 容许输出的字符,去除了0,1,o,l如许轻易混合的字符,增长可辨识性
    ¥config
    [captcha.allow_chars] = 23456789abcdeghkmnpqsuvxyz;

    // 验证码长度
    ¥config
    [captcha.length] = 4;

    // 生成类的类名,若是你有更喜好的生成风格或者类,可以放到 captcha 目次下,然后更改下面的值为该生成类的类名
    ¥config
    [captcha.image_engine] = LtCaptchaImageEngine;

    /
    这里的设备内容主如果设置验证码的一些根蒂根基参数
    blur 模糊结果,开启后图像处理惩罚速度会变慢
    scale 图像质量,1代表低质量图像,2代表中等质量图像,3代表高质量图像
    width 验证码宽
    height 验证码高
    max_rotation 设置字符顺时针扭转的倾斜度,为增长机械破译的难度的
    /
    ¥config[captcha.image_engine_conf] = arrayblur => falsescale => 2width => 200height => 80max_rotation => 4);


     下面的是输出验证码的视图典范:


    {¥this->data[seed]} 这一句是 LotusPhp 的视图语法,代表输出 data[seed] 变量,可以对比今后的 MVC 章节



    <html>
    
    <head>
    <meta charset=utf-8>
    <title>Captcha LotusPHP</title>
    </head>
    <body>
    <form action=simplest.php method=post>
    <img src=captcha_image.php?seed={¥this->data[seed]}/>
    <input type=hidden name=seed value={¥this->data[seed]} />
    <br />
    请输入上图中的验证码:
    <input type=text name=captcha_word />
    <input type=submit />
    </form>
    </body>
    </html>


    这个是 captcha_image.php 文件代码:



    ¥captcha = new LtCaptcha;
    
    ¥captcha->init();

    ¥seed = md5uniqid());
    ¥imageResource=¥captcha->getImageResource(¥_GET[seed]);
    header(Content-type: image/png);
    imagepng(
    ¥imageResource);


    验证文件 simplest.php 代码:



    ¥captcha = new LtCaptcha;
    
    ¥captcha->init();

    if¥captcha->verify(¥_POST[seed], ¥_POST[captcha_word]))
    {
    // 验证码正确,这里是处理惩罚代码
    }
    else
    {
    // 验证码错误,这里是处理惩罚代码
    }


    大功成功,Captcha 就介绍完了,来,我们来秀一下验证码



    最后说一下常见的错误:


    header(Content-type: image/png);


    这一句以前不克不及有任何的输出,很多人在头部加上 ob_start() ,就会导致验证码呈现小八叉,一般无法输出多半是因为这个原因。

    分享到: