Form validation pada codeigniter, hmm bukannya sudah di jelaskan pada dokumentasinya (Manual) ya! memang benar pada Dokumentasi codeigniter telah menjelaskan cara penggunaan Form validation untuk memfilter data yang akan di simpan pada database, Tapi bukan itu yang akan kita bahas pada artikel ini melainkan Trik untuk mempercepat pemfilteran dengan memanfaatkan fungsi - fungsi yang telah di miliki codeigniter. Apa yang akan kita bahas disini? kita akan sedikit bermain dengan unique data, apa itu? Unique data adalah data yang disimpan tidak boleh sama dengan data yang telah tersimpan sebelumnya. Bukannya bisa difilter melalui Database? memang benar cara seperti itu bisa dilakukan akan tetapi dalam kasus ini sysadmin lupa tidak mengaktifkan unique rows pada database.

Untuk apa sih kok data pakai di filter? tentu untuk keamanan data yang akan di simpan agar bukan karakter - karakter sembarangan yang di simpan pada database, Lantas bagaimana bila benar - benar tidak di filter? tentu akan merugikan developer maupun sysadmin, bisa saja data yang diinput berupa query SQL yang tentunya akan dapat dengan mudah membaca isi dari database pada server korban (biasa di sebut SQL Injection) tentu kalian tidak menginginkan hal tersebut terjadi pada website yang sudah kalian buat bukan. 

OK kembali ke pokok permasalahan, Pada website apa saja yang sekiranya membutuhkan Unique data? untuk website blog misalkan dengan banyak user tentu Username & email adalah hal mutlak yang bersifat unik dan tidak bisa digunakan apabila data input yang sudah dikirim sudah tersedia pada database, mari kita implementasikan dalam bentuk code pada framework codeigniter.

 

 

<?php

class Form extends CI_Controller {

         public function index(){

            $this->load->helper('form');

            $this->load->view("form_view"); // load view dengan nama form_view.php

        }    

public function saveData() {

$this->load->helper(array('form', 'url'));

$this->load->library('form_validation'); // deklarasi library form validation

$this->form_validation->set_rules('username', 'Username', 'callback_uname'); // pengecekan dengan cara memanggil fungsi lain (function uname)

$this->form_validation->set_rules('password', 'Password', 'required|matches[password2]'); // check apakah password sama dengan password2

$this->form_validation->set_rules('password2', 'Konfirmasi Password', 'required');

$this->form_validation->set_rules('email', 'Email', 'required|is_unique[tbl_account.account_email]|valid_email');  // pengecekan ke database pada tabel tbl_account dan field account_email apakah sudah ada        

if ($this->form_validation->run() == FALSE){

$this->load->view("form_view", array("error" => true, "message" => validation_errors())); // menampilkan error yang dihasilkan

}else{

$this->load->view("form_view", array("error" => false, "message" => "Sukses simpan data")); // bila data sudah benar tampilkan sukses

}

}

public function uname(){

if ($this->input->post('username') == 'admin') { // data yang ditangkap dari pendeklarasian fungsi cek username, bisa di ganti dengan is_unique[]

$this->form_validation->set_message('uname', 'User admin telah terdaftar'); 

return FALSE;

}else{

return TRUE;

}

}

}

?>

 

 

berikut tampilan Viewnya

 

<form action="?c=form&m=saveData" method="post">

<?php if($this->input->post('submit')){ 

    echo $message;  // bagian untuk menampilkan message

}

?>

<hr />

<label>Username</label>

<input type="text" name="username" size="50" />

<br />

<label>Password</label>

<input type="text" name="password" size="50" />

<br />

<label>Password Confirm</label>

<input type="text" name="password2" size="50" />

<br />

<label>Email Address</label>

<input type="text" name="email" size="50" />

<br />

<input type="submit" name="submit" id="submit" value="Submit" />

</form>

bagaimana rapi bukan codenya, kalian tidak perlu membuat fungsi untuk melakukan cek tiap unique data cukup menggunakan is_unique[nama_table.nama_field] bila malas membuat fungsi atau membuat fungsi dengan memanfaatkan callback_namafungsi untuk pemfilteran yang lebih spesifik semua tergantung kebutuhan jadi silahkan memilih mana yang lebih mempercepat pengcodean kalian.

 

Happy coding Smile.