Работа с captcha
Все адаптеры 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,
логический вопрос или любая иная форма CAPTCHA.
Код для работы с CAPTCHA может выглядеть так:
// Создаём объект Zend_View
$view = new Zend_View();
// Создаём captcha:
$captcha =
new Zend_Captcha_Figlet
(array(
'name' => 'foo',
'wordLen' => 6,
'timeout' => 300,
));
$id = $captcha->generate();
echo "<form method=\"post\" action=\"\">";
echo $captcha->
render($view);
// Проверка отправленной формы:
// Данные captcha находятся с массиве $_POST['foo']
// в этом массиве должны быть следующие пары ключ => значение:
// id => идентификатор captcha, input => значение captcha
if ($captcha->isValid($_POST['foo'], $_POST)) {
// Validated!
}