DbHelp.ru
Маленький Yii блог
Комментарии
Гость: фотографии половова акта Рґ...
Гость: Добрый день товарищи! Минеральные удобрения– вещест...
Гость: http://subcutaneous.co/c9e8.html http://subcutaneous.co/82gl.html http://subcutaneous.co/4e6.html ...
Гость: Эта идея устарела ------... [url=https://twitter.com/madsoklj/status/8827207...
Гость: Дипломы ведущих ВУЗов РФ недорого и срочно: Крат...



Сервер Ultima Online - Forest Wars (от создателя данного блога)

Усложняем стандартную капчу, при помощи reCaptcha

Рубрика: Работаем с капчей (captcha)

Оцените эту статью:

Рейтинг: 0.00 (0)
14 Окт. 2009
Опубликовать в Twitter Написать в Facebook Опубликовать в своем блоге livejournal.com

Yii Framework Blog img http://dbhelp.rusmallCaptchaSpaceWithRoughAlpha Вас смущает капча на вашем сайте? Так давайте сделаем её сложнее... В этом уроке мы поговорим про интеграцию с сервисом recaptcha. Вы наверняка встречались с этой большой красной капчей на многих забугровых сайтах...

---

Про то как переделывать капчу, я писал уже не раз:

  1. Математическая капча
  2. Как на Yii капче выводить цифры
  3. Настройка 3d капчи на Yii

...и много другого в разделе «Работа с капчей»

Сегодняшний обзор не будет моим собственным творением, а лишь описание одного из расширений для Yii. Оно скачено уже больше чем 300 раз, и поэтому заслужило моего небольшого внимания :)

  1. Первым делом нам надо зайти на сайт http://recaptcha.net/ и зарегистрироваться там.
  2. После чего мы сможем получить «public and private keys» для интеграции на нашем сайте
  3. Теперь заходим на страницу расширения recaptcha в раздел «Downloads» и загружаем к себе последнюю версию.
  4. Распаковать архив необходимо в папку protected/extensions, вашего Yii приложения. Так что бы у вас получилась структура:
    protected/
        extensions/
            recaptcha/
                 reCAPTCHA
                 EReCaptchaValidator.php
                 EreCaptcha.php
    
  5. В файле отображения где хотим подключить новую капчу:
    <?php echo CHtml::activeLabel($user, 'validacion'); ?>
    <?php $this->widget('application.extensions.recaptcha.EReCaptcha',
       array('model'=>$user, 'attribute'=>'validacion',
             'theme'=>'red', 'language'=>'es_ES',
             'publicKey'=>'<your public key>')) ?>
    <?php echo CHtml::error($user, 'validacion'); ?>
  6. В файле Модели (если вы не используете ActiveRecord):
    <?php
    class UserModel extends CFormModel
    {
       public $validacion;
     
       public function rules()
       {
          return array(
             array('validacion',
                   'application.extensions.recaptcha.EReCaptchaValidator',
                   'privateKey'=>'<your private key>'),
          );
       }
     
       public function attributeLabels()
       {
          return array(
             'validacion'=>Yii::t('demo', 'Enter both words separated by a space: '),
          );
       }
    }

Все. Обновляйте страничку и смотрите.

П.С. Если вы используете ActiveRecord, то последний пункт будет выглядеть несколько иначе:

  1. В rules вы добавляете новое правило:
    public function rules()
    {
    return array(
    ...
    array(
    'validacion',
    'application.extensions.recaptcha.EReCaptchaValidator',
    'privateKey'=> ENVII_CAPTCHA_PRIVATE_KEY,
    'on' => 'registerwcaptcha'
    ),
    ...
    );
    }
  2. В контроллере делаете что то вроде этого:
    public function actionRegister()
    {
    $form = new User();

    $form->scenario = 'registerwcaptcha';
    ...
    if($form->validate())
    {
    // and here is the actual HACKY part
    $form->scenario = NULL;

    // save user registration
    $form->save();
    }
    }

Пользуемся!



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

  1. Вы наверное слышали о достаточно не плохом WYSIWYG редакторе под названием "Redactor" (да-да, именно так и называется) или ... "Redactor теперь под OEM лицензией (для yii)"

  2. Теперь и ты можешь принять участие в разработке любимого фреймворка! На официальном форуме было объявлено о внеплановом наборе новых лиц ... " Recruiting New Team Members "

  3. Я знаю что многие люди в связи с плохим пониманием английского языка не сидят на англоязычном форуме по yii ... "Yii Логотипы"

[guest] untitled

Было сказано: Вторник, 16 Март 2010

>П.С. Если вы используете ActiveRecord, то последний пункт будет выглядеть несколько иначе:

тут вроде исходники кодов местами перепутаны :)

[adm] zolter

Было сказано: Вторник, 16 Март 2010

Сенк!

[guest] Гость

Было сказано: Воскресенье, 08 Август 2010

На моём сайте рекапчу поаставил, а толку никакого... Обходят как-то...

[adm] zolter

Было сказано: Среда, 11 Август 2010

Попробуйте мою математическую. Думаю поможет

[guest] Александр

Было сказано: Четверг, 30 Июнь 2011

дык антигейт капча сводит все усилия на нет)) 1000 разгадываний за 1бакс всего))

[guest] Гость

Было сказано: Вторник, 19 Июнь 2012

подскажите пожалуйста!! допустим на странице есть блок с капчей, под ней есть баттон на actionRegister , но не могу понять, как он заберет нежные данные (пост) если в контроллере создается объект модели и к ней делается валидейт ?

[guest] Гость

Было сказано: Среда, 20 Июнь 2012

Cамый радикальный метод- подключить Akismet. Неплохо бы статейку про него :)

[guest] Makc

Было сказано: Воскресенье, 07 Июль 2013

Там всё довольно просто - виджету reCAPTCHA в отображении передаём модель и её свойство в котором будет хранится введённый юзером текст:

 'attribute'=>'validacion'

Также в модели определяем правило валидации для этого свойства:
array('validacion',  'application.extensions.recaptcha.EReCaptchaValidator', 'privateKey'=>'<your private key>')

Теперь за валидацию капчи отвечает EReCaptchaValidator.
При сабмите в экшене присваем модели пришедшие данные:
$model->attributes = $_POST['CaptchaFormId']

Теперь при валидации модели заполненные свойства пройдут проверку, например, каптчу проверит EReCaptchaValidator, ну и соответственно вернётся true или false.

[guest] Гость

Было сказано: Среда, 01 Апрель 2015

А если две капчи (в двух формах) на странице должны быть, как настроить? Вторая не отображается...

[guest] Гость

Было сказано: Среда, 15 Февраль 2017

http://female-viagra.pw female pink viagra

[guest] Гость

Было сказано: Четверг, 16 Февраль 2017

w http://buy-viagra.men how often can you take viagra http://viagrarx.review cheapest viagra world http://viaph01.com pfizer viagra uk http://buyviagra.pw cheap viagra pills uk http://viagraon.top free viagra canada

[guest] Гость

Было сказано: Суббота, 18 Февраль 2017

p http://via03.com viagra strengths http://via24ph.com viagra womens http://vvv01.review is generic viagra real http://viagraon.top pfizer viagra price http://generic-viagra.click viagra alternative and woman

[guest] Гость

Было сказано: Понедельник, 20 Февраль 2017

d http://viagrapharmacy.review buy viagra tablets http://viadr01.top viagra sales in canada http://sildenafil.review buying viagra prescription http://via24ph.com over the counter viagra http://buy-viagra.men does viagra work

[guest] Гость

Было сказано: Вторник, 21 Февраль 2017

viagra online pharmacy http://pharmacycanada.review , http://canadapharm365.top , http://cph01.top , http://canadianpharmacyon.link , http://canp01.bid ,

[guest] Гость

Было сказано: Среда, 22 Февраль 2017

Good site http://viagrarx.top ; http://viagrarx.party ; http://buygenericrx.men ; http://via01.biz ; http://viaph01.com

[guest] Гость

Было сказано: Воскресенье, 26 Февраль 2017

ab8126qc9704ik3265 <a href=" http://viagraon.click ">where to buy viagra over the counter</a>

[guest] Гость

Было сказано: Понедельник, 27 Февраль 2017

gj4048nj3397mi2793 http://cytotecon.review purchase cytotec

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


Код:
Имя: