Адаптеры 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 может определять дополнительные параметры.
Note:
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.