Frameworks.suFrameworks.su Шпаргалка вебмастера

  • Главная
  • Framework Kohana
  • PHP
  • Javascript
  • CSS
  • Сервисы
    • Генератор паролей
  • Контакты
Главная / PHP / Framework Kohana / Прикручиваем Captcha в Kohana 3.3

Прикручиваем Captcha в Kohana 3.3

31.01.2015 0 6530

Прикручиваем Captcha в Kohana 3.3

В этой статье рассмотрим как поставить модуль каптчи на кохана фреймворк. Для начала нам понадобится модуль Captcha, его можно скачать с Github, но для  Kohana 3.3 его нужно немного доработать.

Подготовка

Сначала скачиваем модуль и распаковываем в папку modules/captcha. Далее нужно в файле modules/captcha/classes/captcha.php заменить старый вариант вызова request:

Request::instance()->headers['Content-Type'] = 'image/'.$this->image_type;
Request::instance()->headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0';
Request::instance()->headers['Pragma'] = 'no-cache';
Request::instance()->headers['Connection'] = 'close';

на новый:

Request::current()->headers('Content-Type', 'image/'.$this->image_type);
Request::current()->headers('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
Request::current()->headers('Pragma', 'no-cache');
Request::current()->headers('Connection', 'close');

Подключаем модуль в bootstrap.php:

Kohana::modules(array(
    // 'auth'       => MODPATH.'auth',       // Basic authentication
    // 'cache'      => MODPATH.'cache',      // Caching with multiple backends
    // 'codebench'  => MODPATH.'codebench',  // Benchmarking tool
    'database'   => MODPATH.'database',   // Database access
    'image'      => MODPATH.'image',      // Image manipulation
    'captcha'      => MODPATH.'captcha',      // Captcha
    // 'minion'     => MODPATH.'minion',     // CLI Tasks
    // 'orm'        => MODPATH.'orm',        // Object Relationship Mapping
    // 'unittest'   => MODPATH.'unittest',   // Unit testing
    // 'userguide'  => MODPATH.'userguide',  // User guide and API documentation
    ));

Controller

Создадим контролер Home.php в котором будем генерировать каптчу и проверять ее на валидность:

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Home extends Controller_Template {    
    
    public $template = "main";
    
    public function action_index()
    {
        if($post = $this->request->post()){
            /** Проверяем Каптчу на валидацию */
            if(Captcha::valid($post['captcha'])){
                // записываем данные в БД, например
            }
        }
        $captcha_image = Captcha::instance()->render();
        // выводим наш шаблон
        $this->template->content = View::factory('home')->bind('captcha_image', $captcha_image);
    }
}

Views

Далее создаем шаблон home.php  с некой формой и каптчей:

<?=Form::open()?>
    <div class="form-item">
        <label>Введите имя:</label>
        <?=Form::input('name')?>
    </div>
    <div class="form-item">
        <label>Введите код указанный на картинке:</label>
        <?=Form::input('captcha')?>
        <?=$captcha_image?>
        <img alt="Обновить код" src="/images/refresh.png" class="refresh" title="Обновить код" />
    </div>
    <div class="form-item">
        <?=Form::submit('submit', 'Отправить',array('class'=>'btn btn-primary'))?>
    </div>
<?=Form::close()?>

jQuery

Для организации смены плохо читаемой  картинки на более читаемую, воспользуемся вспомогательным элементом, который будет обновлять изображение посредством jQuery:

$(".refresh").on('click',function(){ // Добавляем событие на изображение "обновить" при нажатии
    /** Картинке с кодом присваиваем новое изображение
     *  Math.random() нам нужно для того чтобы не было кеширование картинок
     */
    $("img.captcha").attr("src","/captcha/default?_rnd="+Math.random());
    
    return false;
});

На этом все, будут вопросы - пишите.

Скачать рабочий пример

Теги:
  • Captcha
  • Framework Kohana
  • Пример

Оставить комментарий Отмена

*

*

*

*

Категории

  • PHP
    • Framework Kohana
  • Javascript
  • CSS
  • Администрирование

Теги

Framework Kohana Пример jQuery Уроки CRON Установка и настройка Backup CSS3 Валидация API Bash Cache Captcha i18n Linux

Авторизация

  • Забыли пароль?
  • Регистрация

Популярные статьи

  • Находим расстояние до ближайших станций метро

    Находим расстояние до ближайших станций метро

    17.02.2017 102982
  • Регистрация и авторизация пользователей. Модуль Auth в Kohana 3.3.x

    Регистрация и авторизация пользователей. Модуль Auth в Kohana 3.3.x

    02.07.2014 44646
  • Собственная система лайков на PHP и JQuery

    Собственная система лайков на PHP и JQuery

    06.04.2015 33241
  • Javascript — сумма прописью

    Javascript — сумма прописью

    07.07.2014 23090
  • Cross-domain ajax с помощью jQuery

    Cross-domain ajax с помощью jQuery

    24.04.2015 19964
Copyright © 2014-2025 Frameworks.su. Все права защищены.