background image

首先,生成验证码的时候有 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 一致,那么就验证成功。
 
这样,验证码验证过程就结束了。
 
深入考虑
好了,其实验证码没有这么简单。下面有几个问题值得考虑