Портал Профессиональных Профессионалов :) Библиотека каптчи в Kohana PHP
 
 


Библиотека каптчи в Kohana PHP

Оценить
(3 голоса)

Каптчи используются для защиты вашего сайта показывая то, что не может распознать компьютер, а человек может. Чаще всего их располагают на страницах регистрации, но они могут располагаться где угодно, особенно там где нужно быть уверенным, что действия выполняет человек, а не бот.

Библиотеки каптч Kohana в данный момент могут генерировать обычные, альфа, словарные, математические каптчи.

Конфигурация

Конфигурация устанавливается в файле " application/config/captcha.php", если его нету, скопируйте из "system/config"  в папку "application"

 

$config['default'] = array

(

'style'      => 'basic',

'width'      => 150,

'height'     => 50,

'complexity' => 4,

'background' => '',

'fontpath'   => SYSPATH.'fonts/',

'fonts'      => array('DejaVuSerif.ttf'),

'promote'    => FALSE,

);

 

 

Стили

Стиль каптчи обозначает её тип, к примеру, базовый, альфа, словарный и т.д. Существует 5 разных типов драйвера:

  • basic  - рисует картинку с случайным текстом
  • word– спрашивает любое слово на выбранном языке (i18n/xx_XX/captcha.php)
  • math – генерирует математическое задание по типу 2 + 8 = ?
  • ribble – спрашивает загадку по типу"Огонь…" (горячий или холодный) (загружается из i18n/xx_XX/captcha.php)
  • Высота и ширина изображения

Для базового и альфа типа требуется определение размеры изображения

 

Сложность

Это определяет сложность сгенерированной каптчи. Использование зависит от выбранного стиля:

  • basic - [1:10] сложность устанавливается количеством символов
  • alpha - [1:10] сложность устанавливается количеством символов
  • word - [2:9] сложность устанавливается длинной слова
  • math - [0;4;8], чем выше сложность, тем сложнее задание

Фон

Фон обычно используется в basic и alpha каптчах

Шрифт

Шрифт используется только в basic и alpha каптчах. Шрифты это массив. Несколько шрифтов означает, что символы будут отображатся разными шрифтами выбранными в массиве.

Активация

Активация - это правильный порог количества отликов для активации пользователя (FALSE для отключения). Имеется ввиду что, при определенном сеансе, если пользователь уже ответил на каптчу определенное количество раз, то каптча больше не будет его беспокоить.

Методы

valid()

valid($response) подтверждает правильность отклика каптчи и обновляет счетчик откликов. Это статический метод и можт использоваться также в правиле Validation. Он включает:

[строка] $response the captcha response

valid_count()

valid_count($new_count = NULL, $invalid = FALSE) устанавливает количество правильных откликов каптчи для данной сессии. Он включает:

[целое число] $new_count new counter value (default NULL)

[булев] $invalid триггер неправильных откликов (для внутреннего использования) (по умолчанию FALSE)

returns [целое число] значение счетчика

invalid_count()

invalid_count($new_count = NULL) устанавливает количество неправильных отликов каптчи для данной сессии. Он занимает:

[целое число] $new_count new counter value (default NULL)

reset_count()

reset_count() сбрасывает счетчик откликов каптчи и сбрасывает счетчик сессий.

promoted()

promoted($threshold = NULL) сбрасывает счетчик откликов каптчи и убивает счетчик сессий. Он включает:

[целое число] $threshold порог количества правильных откликов (default NULL)

render()

render($html = TRUE) возвращает и выводит задание каптчи. Он включает:

[булев] $html TRUE для вывода html, например <img src=”#” /> (по умолчанию TRUE)

Пример использования

Пример ниже демонстрирует как использовать каптчу в форме. В вашем контроллере:

// Загрузить библиотеку каптчи.

$captcha = new Captcha;

// Бан бота (включая кукисы) после 50-ти неправильных запросов.

// Будьте осторожны, не баньте настоящих людей! Устанавливайте достаточно высокий порог.

if ($captcha->invalid_count() > 49)

exit('Bye! Stupid bot.');

// Form submitted

if ($_POST)

{

// Captcha::valid() статический метод может использоваться как правило Validation

if (Captcha::valid($this->input->post('captcha_response')))

{

echo '<p style="color:green">Good answer!</p>';

}

else

{

echo '<p style="color:red">Wrong answer!</p>';

}

}

// Показать форму

echo form::open();

echo '<p>Other form fields here...</p>';

// Никогда больше не показывайте каптчу после того, как пользователь даст правильный ответ на каптчу.

if ( ! $captcha->promoted())

{

echo '<p>';

echo $captcha->render(); // Shows the Captcha challenge (image/riddle/etc)

echo '</p>';

echo form::input('captcha_response');

}

else

{

echo '<p>You have been promoted to human.</p>';

}

// Закрыть форму

echo form::submit(array('value' => 'Check'));

echo form::close();



Антон Панков

Антон Панков

Программист-разработчик.

Сайт: wis-art.com E-mail: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript


Защитный код
Обновить