Введение в Zend Framework

 Learning Zend Framework

appendix

 Zend Framework Reference


  • Zend_Gdata
  • Zend_Http
  • Zend_InfoCard
  • Zend_Json
  • Zend_Layout
  • Zend_Ldap
  • Zend_Loader
  • Zend_Locale
  • Zend_Log
  • Zend_Mail
  • Zend_Markup
  • Zend_Measure
  • Zend_Memory
  • Zend_Mime
  • Zend_Navigation
  • Zend_Oauth
  • Zend_OpenId
  • Zend_Paginator
  • Zend_Pdf
  • Zend_ProgressBar
  • Zend_Queue
  • Zend_Reflection
  • Zend_Registry
  • Zend_Rest

  • Zend_Search_Lucene
  • Zend_Serializer
  • Zend_Server
  • Zend_Service
  • Zend_Session
  • Zend_Soap
  • Zend_Tag
  • Zend_Test
  • Zend_Text
  • Zend_TimeSync
  • Zend_Tool
  • Zend_Tool_Framework
  • Zend_Tool_Project
  • Zend_Translate
  • Zend_Uri
  • Zend_Validate
  • Zend_Version
  • Zend_View
  • Zend_Wildfire
  • Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Ttranslation 27.4% Update 2010-11-28 - Revision 23238 - Version ZF 1.11.x

    18.2. Работа с 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);
    echo 
    "</form>";

    // Проверка отправленной формы:
    // Данные captcha находятся с массиве $_POST['foo']
    // в этом массиве должны быть следующие пары ключ => значение:
    // id => идентификатор captcha, input => значение captcha
    if ($captcha->isValid($_POST['foo'], $_POST)) {
        
    // Validated!
    }
    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...