Cara Membuat Captcha di CodeIgniter 3

DailyBlog.id - Ketika kita ingin berkomentar atau mengunjungi suatu blog atau web, dan kalian dimintai untuk mengisi gambar keamanan? nah itu yang dinamakan captcha. Sesuai dengan judul yang saya berikan, disini saya akan membagikan tutorial pada kalian semua untuk membuat captcha di CodeIgniter 3.

Sebelum masuk ke tutorial cara membuatnya, ada alangkah baiknya kalian mengenal captcha terlebih dahulu. Captcha merupakan singkatan dari Completely Automated Public Turing test to tell Computers and Human Apart. Bisa disimpulkan bahwa captcha itu merupakan sebuah teknik untuk pengecekkan robot atau manusia. Captcha sendiri biasanya berbentuk teks, gambar, atau pilihan gambar. Dan sesuai yang saya katakan diatas, bahwa captcha ini biasanya dipasang pada form komentar, buku tamu, login atau tempat lainnya yang digunakan untuk mencegah dari robot.

Membuat Captcha di CodeIgniter 3


Untuk membuat captcha pada CodeIgniter 3, kalian bisa mengikuti langkah-langkah yang ada dibawah ini:

Langkah pertama kalian bisa buka file autoload.php yang terletak di folder application/config, setelah itu cari yang namanya $autoload['libraries'], setelah itu kita load libraries yang namanya form_validation, dan session dengan cara:

$autoload['libraries'] = ['session', 'form_validation'];


Jika sudah, cari yang namanya $autoload['helper'], dan load libraries url dan captcha

$autoload['helper'] = ['url', 'captcha'];


Setelah itu tambahkan file controller captchanya di folder application/controller, dengan nama Captcha.php dan setelah itu masukkan kode yang ada dibawah ini:

<?php 

if (!defined('BASEPATH')) exit('No direct script access allowed');

class Captcha extends CI_Controller
{

}


Jika sudah, kalian bisa membuat fungsi index(), agar nantinya controller Captcha bisa diakses dan dibuka dan isi dari fungsi index ini, merupakan bagian membuat gambar captchanya. Kalian bisa copas script yang ada dibawah ini:

public function index()
{
    $vals = [
    	// 'word' -> nantinya akan digunakan sebagai random teks yang akan keluar di captchanya
        'word'          => substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, 8),
        'img_path'      => './assets/images/captcha/',
        'img_url'       => base_url('assets/images/captcha/'),
        'img_width'     => 150,
        'img_height'    => 30,
        'expiration'    => 7200,
        'word_length'   => 8,
        'font_size'     => 16,
        'img_id'        => 'Imageid',
        'pool'          => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
        'colors'        => [
                'background'=> [255, 255, 255],
                'border'    => [255, 255, 255],
                'text'      => [0, 0, 0],
                'grid'      => [255, 40, 40]
        ]
    ];
    
    $captcha = create_captcha($vals);

    $this->session->set_userdata('captcha', $captcha['word']);
    $this->load->view('captcha', ['captcha' => $captcha['image']]);
}


* Catatan: kalian juga membuat folder sesuai dengan img_pathnya yaitu: /assets/images/captcha/,
folder ini dibuat di direktori awal (contoh: public_html) dan folder ini gunanya untuk menyimpan gambar captcha yang sudah dibuat nantinya.

Jika sudah, kalian bisa membuat fungsi check_captcha() untuk mengecek apakah captcha nantinya dah benar atau belum benar.

public function check_captcha() 
{
    $post_code  = $this->input->post('captcha');
    $captcha    = $this->session->userdata('captcha');
    
    if ($post_code && ($post_code == $captcha)) 
        $this->session->set_flashdata('pesan_form', '<font style="color: green"><b>Berhasil memverifikasi captcha.</b></font><br/><br/>');
    else
        $this->session->set_flashdata('pesan_form', '<font style="color: red"><b>Captcha yang Anda ketik salah!</b></font><br/><br/>');

    redirect('captcha');
}


Untuk full script class Captcha nya akan seperti ini:

<?php 

if (!defined('BASEPATH')) exit('No direct script access allowed');

class Captcha extends CI_Controller
{
    public function index()
    {
        $vals = [
            'word'          => substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 0, 8),
            'img_path'      => './assets/images/captcha/',
            'img_url'       => base_url('assets/images/captcha/'),
            'img_width'     => '150',
            'img_height'    => 30,
            'expiration'    => 7200,
            'word_length'   => 8,
            'font_size'     => 16,
            'img_id'        => 'Imageid',
            'pool'          => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
    
            'colors'        => [
                    'background'=> [255, 255, 255],
                    'border'    => [255, 255, 255],
                    'text'      => [0, 0, 0],
                    'grid'      => [255, 40, 40]
                ]
            ];
        
        $captcha = create_captcha($vals);

        $this->session->set_userdata('captcha', $captcha['word']);
        $this->load->view('captcha.php', ['captcha' => $captcha['image']]);
    }

    public function check_captcha() 
    {
        $post_code  = $this->input->post('captcha');
        $captcha    = $this->session->userdata('captcha');
        
        if ($post_code && ($post_code == $captcha)) 
            $this->session->set_flashdata('pesan_form', '<font style="color: green"><b>Berhasil memverifikasi captcha.</b></font><br/><br/>');
        else
            $this->session->set_flashdata('pesan_form', '<font style="color: red"><b>Captcha yang Anda ketik salah!</b></font><br/><br/>');

        redirect('captcha');
    }
}


Jika sudah, kalian bisa menuju folder application/views, setelah itu buat file dengan nama captcha.php. Lalu copas script yang ada dibawah ini:

<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Membuat Captcha di CodeIgniter 3</title>

        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>

    <body>
        
        <?php 

        if ($this->session->flashdata('pesan_form')):
            echo $this->session->flashdata('pesan_form');
        endif
        
        ?>
        
        <form action="<?=base_url('captcha/check_captcha');?>" method="post">
        
            <?=$captcha?><br/>

            Masukan kode captcha yang sesuai gambar di atas<br/>
            <input type="text" name="captcha">
            <button>Submit</button>

        </form>
    </body>
</html>


Setelah itu kalian bisa buka dibrowser kalian, dengan permalinknya yaitu captcha (Contoh: http://localhost/captcha). Dan hasilnya setelah dibuat akan seperti ini captcha yang telah dibuat:


Cara Membuat Captcha di CodeIgniter 3

Nah begitulah cara membuat captcha di CodeIgniter 3, sangat mudah kan? tentunya. Dan script yang saya berikan di artikel ini, saya coba di PHP versi 5.6. Dan hasilnya berjalan dengan lancar, kalau untuk PHP versi 7+ saya kurang tau bisa atau tidak. 

Kalian juga bisa mencoba untuk test input kode yang benar atau yang salah, tes apakah keluar pesan yang sesuai diinginkan atau tidak.

Mungkin sampai disini saja artikel dari saya mengenai cara membuat captcha di CodeIgniter 3. Semoga artikel ini dapat bermanfaat bagi kalian semua. Dan jika saya ada salah pengetikan atau salah kata, saya mohon maaf. Sekian, dan terima kasih.

Selamat Mencoba!

Previous Post Next Post