Todos los adaptadores CAPTCHA implementan
Zend_Captcha_Adapter, que tiene el siguiente aspecto:
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();
}
Los métodos setter y getter del nombre se usan para especificar y recuperar el
identificador del CAPTCHA. getDecorator() puede usarse
para especificar un decorador de Zend_Form ya sea por nombre o devolviendo un
objeto decorador real. Los métodos más interesantes son
generate() y render().
generate() se usa para crear el token
CAPTCHA. Este proceso normalmente almacenará el token en la sesión para que pueda
compararlo en solicitudes posteriores. render() se usa para renderizar la
información que representa el CAPTCHA, ya sea una imagen, un figlet, un
problema lógico, u otro tipo de CAPTCHA.
Un caso de uso típico podría verse como el siguiente:
// Creating a Zend_View instance
$view = new Zend_View();
// Originating request:
$captcha = new Zend_Captcha_Figlet(array(
'name' => 'foo',
'wordLen' => 6,
'timeout' => 300,
));
$id = $captcha->generate();
echo "<form method=\"post\" action=\"\">";
echo $captcha->render($view);
echo "</form>";
// On subsequent request:
// Assume captcha setup as before, the value of $_POST['foo']
// would be key/value array: id => captcha ID, input => captcha value
if ($captcha->isValid($_POST['foo'], $_POST)) {
// Validated!
}