selalu belajar menjadi lebih bijaksana*
lagi dan lagi..

Membuat Captcha pada Login Form

Anyeong chingu :)
Kali ini saya akan sharing bagaimana membuat captcha pada Form Login.

Step 1.
Kita buat di controllernya yaitu di /protected/controllers/SiteController.php

public function accessRules()
                {
                                return array(
                                                array('allow',  // allow all users to perform 'index' and 'view' actions
                                                                'actions'=>array('captcha'),
                                                                'users'=>array('@'),
                                                ),
                                );
                }
               
/* untuk fungsi yang di bawah ini, biasanya sudah ada di SiteControllernya, tapi untuk kasus pendaftaran akun, fungsi ini perlu ditambahkan pada controller yang bersangkutan (jadi nggak harus di SiteController aja) */

public function actions()
                {
                                return array(
                                                // captcha action renders the CAPTCHA image displayed on the contact page
                                                'captcha'=>array(
                                                                'class'=>'CCaptchaAction',
                                                                'backColor'=>0xFFFFFF,
                                                ),
                                                // page action renders "static" pages stored under 'protected/views/site/pages'
                                                // They can be accessed via: index.php?r=site/page&view=FileName
                                                'page'=>array(
                                                                'class'=>'CViewAction',
                                                ),
                                );
                }

Step 2.
Selanjutnya kita atur di modelnya yaitu di /protected/models/LoginForm.php

Yang perlu diperhatikan yaitu penambahan deklarasi nilai public $verifyCode dan penambahan rule array('verifyCode', 'captcha', 'allowEmpty'=>!extension_loaded('gd')), untuk lebih jelasnya bisa dilihat seperti source code di bawah.

class LoginForm extends CFormModel
{
                public $username;
                public $password;
                public $rememberMe;
                public $verifyCode;     //ini yang perlu ditambahkan

                private $_identity;

                /**
                 * Declares the validation rules.
                 * The rules state that username and password are required,
                 * and password needs to be authenticated.
                 */
                public function rules()
                {
                                return array(
                                                // username and password are required
                                                array('username, password, verifyCode', 'required'),
                                                // rememberMe needs to be a boolean
                                                array('rememberMe', 'boolean'),
                                                // password needs to be authenticated
                                                array('password', 'authenticate'),
                                                array('verifyCode', 'captcha', 'allowEmpty'=>!extension_loaded('gd')),    //dan ini yang harus ditambahkan
                                );
                }
Dan untuk coding selanjutnya sama, tidak ada perubahan apapun.

Step 3.
Terakhir kita atur di view-nya yaitu di /protected/views/site/login.php
Ingat !! Untuk yang menggunakan theme atau bootstrap atur view-nya di theme-nya ya.
Nah di bawah ini adalah source code untuk menampilkan captcha-nya ..

<?php if (extension_loaded('gd')): ?>
<div>
<?php echo CHtml::activeLabelEx($model, 'Kode Verifikasi') ?>
                <div>
                                <?php echo $form->textField($model,'verifyCode', array('class'=>'input-small')); ?>
                                <?php $this->widget('CCaptcha');?>
                </div>
                <div class="hint">Ketik tulisan yang ada pada gambar.</div>
</div>
<?php endif;?>

Source code di atas bisa kamu letakkan setelah source code username dan password, serta sebelum source code untuk menampilkan button-nya.



Sekian dari saya, semoga bisa dimengerti dan semoga bermanfaat :)

Salam programmer yii Indonesia.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
Read Comments

0 komentar:

Posting Komentar