Адаптеры CAPTCHA Следующие адаптеры поставляются с Zend Framework по умолчанию. Zend_Captcha_Word Zend_Captcha_Word -- абстрактный адаптер, реализующий функционал, используемый большинством других адаптеров. Данный адаптер предоставляет мутаторы для задания длины слова, сессии, времени жизни токена, объекта пространства имён сессии, в котором будет храниться токен и класс сессии, если вы не используете Zend_Session_Namespace. Zend_Captcha_Word реализует логику проверки. По умолчанию, длина слова -- 8 символов, таймаут сессии -- 5 минут и для хранения данных CAPTCHA используется Zend_Session_Namespace (используется пространство имён "Zend_Form_Captcha_<captcha ID>"). В дополнении к методам, требуемым интерфейсом Zend_Captcha_Adapter, Zend_Captcha_Word реализует следующие методы: setWordLen($length) и getWordLen() задаёт и получает длину генерируемого "слова" в символах. setTimeout($ttl) и getTimeout() задаёт и получает время жизни сессионного токена в секундах. setUseNumbers($numbers) и getUseNumbers() указывают, будут ли использоваться цифры при генерации "слова". setSessionClass($class) и getSessionClass() задаёт и получает класс, реализующий функциональность Zend_Session_Namespace для хранения сессионного токена и "слова" между клиентскими запросами. getId() возвращает текущий идентификационный токен. getWord() возвращает сгенерированное ранее слово. Если слово ещё не было сгенерировано, оно будет автоматически сгенерировано. setSession(Zend_Session_Namespace $session) задаёт объект сессии для хранения токена и слова между клиентскими запросами. getSession() возвращает текущий объект сессии. Все словесные CAPTCHA могут принимать массив параметров в конструкторе. Параметры можно передать через метод setOptions(). Вы так же можете передать объект Zend_Config методу setConfig(). По умолчанию используются параметры wordLen, timeout и sessionClass. Каждая конкретная реализация CAPTCHA может определять дополнительные параметры. Zend_Captcha_Word -- абстрактный класс и не может использоваться напрямую. Zend_Captcha_Dumb Адаптер Zend_Captch_Dumb генерирует случайную строку, которая должна быть набрана в обратном порядке. Никогда не используйте этот адаптер на реальных проектах, так как его легко взломать. Его следует использовать только в целях тестирования. Адаптер наследует Zend_Captcha_Word. Zend_Captcha_Figlet Адаптер Zend_Captcha_Figlet aнаследует Zend_Text_Figlet и отображает figlet пользователю. Параметры, передаваемые в конструкторе так же передаются объекту Zend_Text_Figlet. Список возможных опций можно посмотреть в разделе о Zend_Text_Figlet. Zend_Captcha_Image Адаптер Zend_Captcha_Image отрисовывает сгенерированное слово на картинке с искажением и зашумлением, затрудняющими автоматическое распознавание. Адаптер требует расширение GD, скомпилированное с поддержкой шрифтов в формате TrueType или Freetype. На текущий момент адаптер генерирует картинки только в формате PNG. Zend_Captcha_Image наследует Zend_Captcha_Word, и предоставляет следующие дополнительные методы: setExpiration($expiration) и getExpiration() задаёт и получает максимальное время жизни файла с изображением. Обычно оно больше времени жизни сессии. Сборка мусора осуществляется каждый раз, когда используется объект CAPTCHA. Время жизни задаётся в секундах. setGcFreq($gcFreq) и getGcFreg() задаёт и получает периодичность сборки мусора. Сборка запускается через каждые 1/$gcFreq запросов. По умолчанию 100. setFont($font) и getFont() задаёт и получает шрифт, которым отрисовывается слово. Переменная $font должна содержать полный квалифицированный путь к файлу со шрифтом. Этот параметр обязателен. CAPTCHA выбросит исключение при попытке отрисовать изображение без указанного файла со шрифтом. setFontSize($fsize) и getFontSize() задаёт и получает размер шрифта в пикселях. По умолчанию 24. setHeight($height) и getHeight() задаёт и получает высоту генерируемого изображения в пикселях. По умолчанию 50. setWidth($width) и getWidth() задаёт и получает ширину генерируемого изображения в пикселях. По умолчанию 200. setImgDir($imgDir) и getImgDir() задаёт получает директорию для хранения сгенерированных изображений CAPTCHA. По умолчанию "./images/captcha/", относительно загрузочного скрипта. setImgUrl($imgUrl) и getImgUrl() задаёт и получает относительный путь к CAPTCHA для использования в HTML верстке. По умолчанию "/images/captcha/". setSuffix($suffix) и getSuffix() задаёт и получает окончание имени файла CAPTCHA. По умолчанию ".png". Примечание: смена этого значения не изменит формат изображения. setDotNoiseLevel($level) и getDotNoiseLevel(), совместно с setLineNoiseLevel($level) и getLineNoiseLevel(), контролируют зашумлённость изображения случайными точками и линиями. $level определяет количество точек и линий. По умолчанию используется 100 точек и 5 линий. Шумы добавляются в два этапа -- до и после искажения картинки. Все вышеперечисленные параметры могут быть заданы в конструкторе. Нужно только убрать приставку "set" из названия соответствующего метода и привести первую букву к нижнему регистру. Например: "suffix", "height", "imgUrl", и т. д. Zend_Captcha_ReCaptcha Адаптер Zend_Captcha_ReCaptcha наследует Zend_Service_ReCaptcha. Реализует следующие методы: setPrivKey($key) и getPrivKey() задаёт и получает секретный ключ, используемый в сервисе ReCaptcha. Ключ должен задаваться во время конструирования объекта, но может быть изменён в любой момент. setPubKey($key) и getPubKey() задаёт и получает публичный ключ для использования в сервисе ReCaptcha. Ключ должен быть задан во время конструирования объекта, но может быть изменён в любой момент. setService(Zend_Service_ReCaptcha $service) и getService() задаёт и получает объект сервиса ReCaptcha.