Каптча в Zend Framework. Zend_Captcha и ReCaptсha Service
Posted on | February 13, 2011 | No Comments
На проекте в котором использую Zend Framework мне понадобилось написать генерацию-проверку каптчи и хотелось сделать это средствами фреймворка. Я полез читать маны, нашёл средство генерации каптч Zend_Captcha в котором опробовал Zend_Captcha_Word, Zend_Captcha_Dumb, Zend_Captcha_Figlet. Они меня не очень впечатлили.
Класс Zend_Captcha_Image я вообще решил не трогать :) Он конечно представляет собой мощное средство, но с ним надо повозиться, а мне больше нравится быстро интегрируемая, качественная и проверенная каптча. Поэтому я был очень рад увидеть упоминание о классе-адаптере Zend_Captcha_ReCaptcha реализующем ReCaptcha. Если быть более точным, то это Zend_Service_ReCaptcha предоставляет функционал вышеупомянутого сервиса.
Его то я использовал, получилось примерно следующее (генерация и проверка отправленных данных осуществляется на одной странице):
//подключаем класс-адаптер
Zend_Loader::loadclass('Zend_Service_ReCaptcha');
//создаем объект, ключи получаем на recaptcha.com
$recaptcha = new Zend_Service_ReCaptcha(
$yourPublicKey,
$yourPrivateKey
);
if($this->_request->isPost()) {
//проверяем введенные значения после отправки формы
//поля генерируются функцией getHTML()
$result = $recaptcha->verify(
$_POST['recaptcha_challenge_field'],
$_POST['recaptcha_response_field']
);
if ($result->isValid()) {
//делаем запись в бд или ещё что-то
//и уходим с этой страницы
$this->_redirect('/');
}
}
//если ничего не отправляли или заполнено не правильно
//выводим HTML код input полей для формы и саму каптчу
echo $recaptcha->getHTML();
Comments
Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/dezhik.ru/wp-includes/class-wp-comment-query.php on line 399