Contoh Implementasi Form Validasi Input dengan CodeIgniter

Validasi input pada formulir penting untuk diterapkan untuk meminimalisir kesalahan input dari sisi user. CodeIgniter telah menangani isu ini dengan pintar. Sehingga programmer PHP tidak perlu membuat fungsi lagi pada setiap formulir dengan REGEX (fungsi validasi pada PHP).

Validasi dengan CI framework cukup dilakukan dengan memanggil library form_validation. Dengan library ini, kita dapat sekaligus menerapkan rule pada setiap field, dan menentukan di mana pesan error akan ditampilkan. Isi pesan error tidak perlu didefinisikan lagi jika bahasa website kita menggunakan Bahasa Inggris.

Berikut ini poin penting dalam penerapan validasi input dengan CI :

1)       Panggil library form_validation.

2)       Buat formulir dan set value tiap field dengan kode <?= set_value(‘<nama_variabel_field>’)?>

3)       Tentukan di mana akan menampilkan pesan error. Lalu ketik kode <?= form_error(‘<nama_variabel_field>’);?>

4)       Buat controller tersendiri untuk menangani aksi dari formulir. Definisikan rule validasi dan cek validasi sebelum mengirim pesan error/sukses.

Contoh penerapan validasi pada blog engine ini terdapat pada formulir register. Di bawah ini potongan kode dari View untuk menampilkan formulir:

<?php
/*– BOF REGISTER FORM –*/
echo form_open(‘register/save’);
echo form_fieldset(‘Account Registration’);
echo “<table border=’0′>”;
$mname = array(
‘name’        =>’mname’,
‘id’          => ‘mname’,
‘maxlength’   => ’50’,
‘size’        => ’50’,
‘style’       => ‘width:95%’,);
$uname = array(
‘name’        => ‘uname’,
‘id’          => ‘uname’,
‘maxlength’   => ’50’,
‘size’        => ’50’,
‘style’       => ‘width:95%’);
$passw = array(
‘name’        => ‘passw’,
‘id’          => ‘passw’,
‘maxlength’   => ’50’,
‘size’        => ’50’,
‘style’       => ‘width:95%’);
$cpassw = array(
‘name’        => ‘cpassw’,
‘id’          => ‘cpassw’,
‘maxlength’   => ’50’,
‘size’        => ’50’,
‘style’       => ‘width:95%’);
$reg = array(
array(”,”,”,”,”),
array(form_label(‘Name’,’mname’), ‘ : ‘,
form_input($mname,set_value(‘mname’)),”,”),
array(”,”,form_error(‘mname’),”,”),
array(form_label(‘Your Email *)’,’uname’), ‘ : ‘, form_input($uname,set_value(‘uname’)),’* This will be your username’,”),
array(”,”,form_error(‘uname’),”,”),
array(form_label(‘Your Bloggy Password’,’passw’), ‘ : ‘,form_password($passw) ,’min. 5 character’,”),
array(”,”,form_error(‘passw’),”,”),
array(form_label(‘Confirm Password’,’cpassw’), ‘ : ‘,
form_password($cpassw),”,’&nbsp;’),
array(”,”,form_error(‘cpassw’),”,”),
array(form_label(‘Blog\’s Name **)’,’blog_name’), ‘ : ‘,
form_input(‘blog_name’,set_value(‘blog_name’)),’** This will be displayed on your header’,”),
array(”,”,form_error(‘blog_name’),”,”),
array(form_label(‘Motto’,’motto’), ‘ : ‘,
form_input(‘motto’,set_value(‘motto’)),”,”),
array(”,”,form_error(‘motto’),”,”),
array(form_label(‘Your Blog URL’,’url_blog’).'<small> ***)</small>’, ‘ : ‘, form_input(‘url_blog’,set_value(‘url_blog’)),'<small>*** ‘.htmlentities(‘url link : http://www.bloggy.com/<your URL name>’).'</small>’,”),
array(”,”,form_error(‘url_blog’),”,”),
array(”, ”,form_submit(‘reg_submit’,’REGISTER!’),”,”));
echo $this->table->generate($reg);
echo form_fieldset_close();
echo form_close();
/*——  END OF REGISTER FORM ——*/

?>

Pada controller diterapkan rule :

1)       Nama harus lebih dari 3.

2)       Username merupakan email member, jadi harus diisi valid email.

3)       Password harus sama dengan konfirmasi dan panjang minimal 5 karakter.

4)       Nama blog kurang dari 50 karakter.

5)       Motto kurang dari 100 karakter.

6)       URL blog maksimum 255 karakter dan belum ada yang memakai nama URL dalam database.

Kode pada controller register :

function save(){
$rules = array(
array(
‘field’   => ‘mname’,
‘label’   => ‘Name’,
‘rules’   =>’required|min_length[3]|max_length[255]’
),
array(
‘field’   => ‘uname’,
‘label’   => ‘Your Email’,
‘rules’   =>’required|valid_email|max_length[255]’
),
array(
‘field’   => ‘passw’,
‘label’   => ‘Your Blo99y Password’,
‘rules’   => ‘required|matches[cpassw]|min_length[5]’
),
array(
‘field’   => ‘cpassw’,
‘label’   => ‘Confirm Password’,
‘rules’   =>’required|min_length[5]’
),
array(
‘field’   => ‘blog_name’,
‘label’   => ‘Blog\’s Name’,
‘rules’   =>’required|max_length[50]’
),
array(
‘field’   => ‘motto’,
‘label’   => ‘Motto’,
‘rules’   =>’required|max_length[100]’
),
array(
‘field’   => ‘url_blog’,
‘label’   => ‘Your Blog URL’,
‘rules’   =>’required|max_length[255]|callback_url_check’
));
$this->form_validation->set_rules($rules);
if($this->form_validation->run()==FALSE){
$this->load->view(‘vreg’);
$this->load->view(‘footer’);
}else{
//adding member
$this->load->model(‘regModel’);
$row = $this->regModel->insert_entry();
//get member_id
$id = $row->id;
$success_text=$this->create_db_user($id,$this->input->post(‘mname’));
if($success_text!=false)
$this->session->set_flashdata(array(‘success’=>true,’success_text’=>$success_text));
else
$this->session->set_flashdata(array(‘error’=>true,’error_text’=>’Sorry, there\’re some troubles appear on processing your account.’));
$this->session->set_flashdata($_POST);
redirect(‘home’);
}
}
function url_check($str){
$this->load->model(‘gen_setting’);
if($this->gen_setting->is_url_exist($str)){
$this->form_validation->set_message(‘url_check’, ‘The %s is not available. It is already exist’);
return false;
}else
return true;
}

Sedangkan hasil validasinya digambarkan sebagai berikut :

register_form_validation

Hasil validasi pada formulir register

4 thoughts on “Contoh Implementasi Form Validasi Input dengan CodeIgniter

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s