С модулем Captcha для версии Kohana 3.2 сейчас вообще интересная ситуация. Тот, что выложен под названием Kohana 3.x совершенно не работает на 3.2, возникает ошибка обращения к конфигурации в файле captcha.php, причем в трех местах. Вы можете исправить ее самостоятельно (обращение к конфигу для версии 3.2 описано Здесь), можете посмотреть как это сделано на GitHub, а можете скачать архив, где все это мной уже исправлено, только бери и пользуйся. Вот
Далее как обычно добавляем наш модуль в массив модулей в файле bootstrap.php:
'captcha' => MODPATH.'captcha', //Captcha
Теперь в Контроллере для страниц, использующих капчу, пишем:
$captcha = Captcha::instance();
Далее нужно передать капчу в блок контента:
$content->captcha = $captcha;
или
$content->captcha = $captcha->render();
Работает оба варианта.
Ну и естественно в файле Вида добавляем:
<?php echo $captcha; ?>
Все. Осталось только организовать проверку правильности ввода капчи юзером. Я создал в Виде проверочную форму:
<form method="post"> <input name="captcha" type="text" /> <input name="ok" type="submit" value="Отправить" /> </form>
И добавил проверку в контроллер:
$content->message = ''; if($_POST) $content->message = Captcha::valid($_POST['captcha'])? 'Прахади дарагой' : 'Не угадал';
Получились как будто комментарии благодарных (и не очень) читателей с капчей. Посмотреть как это выглядит можно Здесь.
В конфигурационном файле имеются довольно гибкие настройки капчи. Можно менять размеры картинки, шрифт и даже саму капчу (параметр style). Ну и тут есть некоторые проблемы. Например, math у меня толком не заработал, все время выдавал неверный ответ, хотя складываю «3+2″ я вроде правильно. А riddle и word, указанные в качестве параметра для instance, увы, выдают ошибку Коханы. Если вы знаете решение проблемы — напишите об этом пожалуйста в комментариях.
Пожалуйста, зарегистрируйтесь для комментирования.
Здравствуйте.
Будьте добры, помочь решить такую проблему:
ErrorException [ Notice ]: Array to string conversion
SYSPATH\classes\kohana\arr.php [ 437 ]
432 }
433 else
434 {
435
436 // Find the values that are not already present
437 $diff = array_diff($val, $result[$key]);
438
439 // Indexed arrays are merged to prevent duplicates
440 $result[$key] = array_merge($result[$key], $diff);
441 }
442 }
Вот на днях написал Antispam модуль для Kohana 3.2.
Хорошая альтернатива каптче.
Поглядеть можно тут: https://github.com/evgentus/antispam
Почитать про него тут: http://habrahabr.ru/post/149181/
Можно будет потом ваш модуль добавить на этот сайт в Модули с описанием ? Не возражаете ?
Сам что-то подобное когда-то писал (не на Кохане), с проверкой времени заполнения формы, со скрытыми полями..
Конечно добавляйте. Не возражаю.
Что делать у меня вот такая ошибка выдается при обновлении страницы???
Kohana_Exception [ 0 ]: A valid cookie salt is required. Please set Cookie::$salt.
http://kohanaframework.su/helpers/helpers_cookie_encrypt
Спс!
Привет!
Как установить заголовок страницы?
Я вывожу из контроллера изображение
class Controller_Captchagenerator extends Controller {
public function action_captcha()
{
// Создаём пустое изображение и добавляем текст
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, ‘A Simple Text String’, $text_color);
// Устанавливаем тип содержимого в заголовок, в данном случае image/jpeg
$this->request->headers['content-type'] = ‘image/jpeg’;
// Выводим изображение
imagejpeg($im);
// Освобождаем память
imagedestroy($im);
}
}
Но на выходе я не получаю изображение а просто бинарный текст картинки.
Информация о странице показывает что она ‘test/html’
Как указать что это ‘image/jpg’?
$this->request->headers['content-type'] = ‘image/jpeg’; Не работает!
Спасибо!
Здравствуйте. Недавно начал изучать Кохану. Большое спасибо за ваши уроки, очень помогают.
Вот разобрался с капчей. У меня Kohana3.3 — все работает: basic, alpha, black, word, math, riddle. Вот ссылка на архив, http://goo.gl/Ph0r6
Только одно важное условие — код проверки надо ставить выше
$captcha = Captcha::instance();
Я долго парился с этим, новичок все же)) Для капчи-картинки — все равно, а для текста (math и riddle) это обязательное условие.
Прикручиваю captcha на Kohana3.3 Не получается, при проверке выдает ошибку «Session_Exception [ 1 ]: Error reading session data.»
Переименовал все классы и папки в верхний регистр, в коде вызов классов text и url тоже переименовал в Text URL, но по прежнему не работает, у кого-нибудь была такая проблема?
Кстати в вашем архиве все классы в нижнем регистре, на версии 3.3 работать не будет…
class Controller_Captcha extends Controller {
public function action_index(){
$captcha=Captcha::instance()->render();
$content['captcha']=$captcha;
$this->response->body(View::factory(‘captcha’,$content));
}
}
вот такой вид
Модуль взял по вашей ссылке.
Скажите что я не правильно сделал? У меня выводится прямоугольничек, но самой картинки не видно.
вот такой вид: echo $captcha;
Круто все работает, но так проверка будет выглядеть лучше
$validation = Validation::factory($_POST)
->rule(‘captcha’, ‘not_empty’)
->rule(‘captcha’, ‘Model_Rule::check_captcha’,array(‘:value’, ‘:validation’, ‘:field’));
… модель …
public static function check_captcha($value, $validation, $field)
{
if(!Captcha::valid($value))
{
$validation->error($field, ‘Введенные символы в каптче не совпадают’);
}
}
Думаю кому-нибудь будет полезно..
Ага. Спасибо.
подскажите что делать если вылазит ошибка:
Fatal error: Method Captcha_Alpha::__toString() must not throw an exception in
Распишите подробнее урок, тут больше половины пропущено, без подробного создания контроллера и вида, я допустим не совсем понял как применить капчу.