首先,生成验证码的时候有 id 和 code 两个变量应该存下来。
好吧,回到上一步,将代码进行下修改
代码如下:
$captcha
=
new
Zend_Captcha_Image();
$captcha
->setWordLen('4')
->setHeight('60')
->setFont(NCHANNEL_FONT_DIR . '/arial.ttf')
->setImgDir(NCHANNEL_CAPTCHA_DIR)
->setDotNoiseLevel('5')
->setLineNoiseLevel('5');
$id
=
$captcha
->generate();
$codeSession
=
new
Zend_Session_Namespace('captcha_code_' .
$id
);
$codeSession
->code =
$captcha
->getWord();
这里看到,我们使用
$captcha_code_$id
将 code 存储下来。目的是等到验证步骤的时候使用。
第二步
给页面传递表单的时候把
$id
和验证码图片传递过去。
让用户填写验证码。
第三步,验证。
验证这步需要用户提供两个参数:
$id
和验证码答案
$code
代码如下:
$codeSession
=
new
Zend_Session_Namespace('captcha_code_' .
$this
->_params['id']);
if
(
$codeSession
== null ||
strtolower
(
$codeSession
->code) !=
strtolower
(
$this
->_params['code']))
{
$this
->Output(ERROR);
}
这段代码读起来很顺口吧:如果 captcha_code_
$id
中有保存 code,并且 code 和用户填写
的 code 一致,那么就验证成功。
这样,验证码验证过程就结束了。
深入考虑
好了,其实验证码没有这么简单。下面有几个问题值得考虑