所有具体的 CAPTCHA 对象实现
Zend_Captcha_Adapter
,如下所示:
interface Zend_Captcha_Adapter extends Zend_Validate_Interface { public function generate(); public function render(Zend_View $view, $element = null); public function setName($name); public function getName(); public function getDecorator(); // Additionally, to satisfy Zend_Validate_Interface: public function isValid($value); public function getMessages(); public function getErrors(); }
增变器和访问器用于指定和获取 captcha 的标识符。
getDecorator()
可用通过名称或返回一个装饰器对象来指定一个 Zend_Form 装饰器。
然而用法的关键之处是 generate()
和 render()
。
generate()
用于生成 captcha 令牌。这个过程一般存储令牌到会话,所以你
可以根据后来的请求来比较。
render()
用来解析表示 captcha 的信息 - 可以是图像、figlet 或逻辑问题等。
一般的用例如下:
// Originating request: $captcha = new Zend_Captcha_Figlet(array( 'name' => 'foo', 'wordLen' => 6, 'timeout' => 300, )); $id = $captcha->generate(); echo $captcha->render(); // On subsequent request: // Assume captcha setup as before, and $value is the submitted value: if ($captcha->isValid($_POST['foo'], $_POST)) { // Validated! }