ecshop验证码功能分析

2011-02-23 09:35 来源:www.chinab4c.com 作者:熊斌

          ecshop验证码功能,在ecshop二次开发中常常遇到。ecshop验证码功能在注册,登陆,文章商品评论的时候。都可能遇到使用验证码的情况。在ecshop中验证码主要是结合ecshop的ajax以及session去实现。
   
    首先我们看ecshop登陆时候的验证码,在模板user_passport.dwt中。我们可以看到以下代码。
    <img src="captcha.php?is_login=1&{$rand}" alt="captcha" style="vertical-align: middle;cursor: pointer;"onClick="this.src='captcha.php?is_login=1&'+Math.random()" />
   
    从这里我们可以清晰的看到,验证码是一张图片,他的地址是img src来控制的。生成图片的地址为ecshop跟目录下的captcha.php。如果是登陆的话。那么还带上了is_login=1表示要格外使用验证码登陆控制密钥字段。这个在captcha.php中有提示到。
if (isset($_REQUEST['is_login']))
{
    $img->session_word = 'captcha_login';
}
    生成ecshop验证码的图片函数位置于includes/cls_captcha.php中。里面的generate_image()方法就是处理生成验证码图片的。

    我们在要使用ecshop验证码的地方。先声明一个$img对象。里面的构造函数必须控制验证码图片的宽度和高度。$img = new captcha(ROOT_PATH . 'data/captcha/', $_CFG['captcha_width'], $_CFG['captcha_height']);
 
    在ecshop中。很多时候点验证码的时候。都可能通过点击图片,更换验证码。有时候验证码不清晰,也需要验证码。这个时候就必须重新设置session的值,为了不因为缓存造成数据不同步。我们在点击的时候,带上随即数&'+Math.random()"。这样就保证了验证码顺利使用,而不因为缓存问题而引起失效。

   来源:http://www.chinab4c.com