Labels

Monday, October 17, 2011

Validasi di CodeIgniter

Masalah keamanan adalah masalah klasik yang selalu menghantui semua pengguna dan pengembang website, dan untuk mencegah agar tidak terjadi hal-hal yang tidak kita inginkan salah satunya adalah dengan melakukan validasi data. CodeIgniter mempunyai sebuah class untuk melakukan validasi yaitu form_validation. Validasi biasa dilakukan ketika user mengisikan data pada sebuah form.
            Baik langsung saja saya jelaskan bagaimana caranya menggunakan class form_validation.
Buat sebuah controller dengan nama form.php dan masukkan kode berikut ini.
view plaincopy to clipboardprint?

<?php
class Form extends Controller {
    function form()
    {
        parent::Controller();
        $this->load->library('form_validation');
    }

    function index()
    {      
        $this->form_validation->set_rules('username', 'Username', 'required');
        $this->form_validation->set_rules('password', 'Password', 'required');
        $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
        $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
       
        if($this->input->post("submit"))
        {      
            if ($this->form_validation->run() == FALSE)
            {
                $this->load->view('myform');
            }
            else
            {
                echo "data yang anda masukkan sudah valid";
            }
        }
        else
        {
            $this->load->view("myform");
        }
    }
}
?>

Simpan file form.php tersebut dalam folder application/controllers.
Kemudian buatlah file myform.php dan masukkan kode berikut ini.
view plaincopy to clipboardprint?

<html>
<head>
<title>My Form</title>
</head>
<body>

<?=$this->form_validation->error_string(); ?>
<form method="post" action="<?=$base;?>form" >
<h5>Username</h5><input type="text" name="username" value="<?=$this->form_validation->set_value("username");?>" size="50" />
<h5>Password</h5><input type="text" name="password" value="" size="50" />
<h5>Password Confirm</h5><input type="text" name="passconf" value="" size="50" />
<h5>Email Address</h5><input type="text" name="email" value="<?=$this->form_validation->set_value("email");?>" size="50" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Simpan file myform.php tersebut dalam folder application/views.
Sekarang saya akan menjelaskan arti dari code-code tersebut. Di dalam class Form.php tadi terdapat constructor yang di dalamnya terdapat code
$this->load->library('form_validation');
Code ini digunakan untuk memanggil class form_validation yang berada pada folder library. Setelah itu di bawah constructor terdapat fungsi index(). Di dalam fungsi ini rule/aturan validasi di definisikan. Di situ di tuliskan ada 4 field yang diberi masing-masing role, antara lain :
view plaincopy to clipboardprint?

$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');

Fungsi untuk memberikan role validation adalah $this->form_validation->set_rules();
Fungsi ini memiliki 3 parameter. Parameter pertama adalah nama field yang akan diberi role. Parameter kedua adalah label dari field tersebut. Label disini digunakan ketika terjadi error maka label tersebut akan tampil sebagai error message. Parameter ketiga adalah role itu sendiri. CodeIgniter menyediakan banyak role, antara lain seperti contoh di atas adalah required yang artinya bahwa field tersebut tidak boleh kosong. Contoh yang lain adalah valid_email yang artinya field tersebut harus berisi alamat email. Dan masih banyak lagi role-role yang lain. Anda bisa membacanya di http://codeigniter.com/user_guide/libraries/form_validation.

Kembali pada topik cara memberikan role validation. Di sini anda bisa memberikan lebih dari satu role, yaitu dengan menambahkan tanda | pada parameter ketiga. Anda dapat melihat contoh di atas pada baris yang ke empat, yaitu memberikan role required dan valid_email pada field email.

Lalu anda bertanya, Bagaimana kalau saya punya fungsi sendiri untuk melakukan validasi? Jawabnya mudah, CodeIgniter mendukung fungsi yang anda buat sendiri. Lalu bagaimana caranya memanggil fungsi validasi yang telah saya buat? Yaitu dengan menggunakan fungsi callback. Contoh pada field username saya melakukan pengecekan tambahan.

$this->form_validation->set_rules('username','Username','required|callback_username_check');

Maka secara otomatis system akan memanggil fungsi username_check().
view plaincopy to clipboardprint?

function username_check($str)
{
    if ($str == 'test')
    {
        $this->form_validation->set_message('username_check', 'The %s field can not be the word "test"');
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}


Letakkan fungsi username_check() di dalam controller.

Code selanjutnya adalah pengecekan penekanan tombol, jika tombol ditekan maka akan melakukan validasi. Fungsi untuk melakukan validasi adalah $this->form_validation->run() . Fungsi ini akan mengembalikan nilai TRUE jika tidak ada kesalahan pada waktu input. Dan mengembalikan nilai FALSE jika ada kesalahan pada waktu input.

Selanjutnya kita lihat file myform.php, di dalam file ini terdapat code <?=$this->form_validation->error_string(); ?>. Code ini digunkan untuk menampilkan semua error yang akan terjadi pada waktu input data. Jika anda ingin memisahkan error message tersebut per field sangat mudah. Yaitu dengan menggunakan fungsi <?=$this->form_validation->error(‘nama_field');?>. Di dalam fungsi ini terdapat sebuah parameter yang berisikan nama field yang akan ditampilkan error messagenya.

Di dalam file myform.php juga terdapat code ="<?=$this->form_validation->set_value("username");?>. Code ini digunakan untuk menampilkan nilai yang telah diinputkan sebelumnya. Namun itu hanya berlaku untuk tag input form atau textarea saja. Untuk tag checkbox ,select dan radio menggunakan fungsi yang berbeda-beda.

1 comments

Berbakat

good artikelnya, bisa buat belajar bagi pemula

Jasa Sewa Gudang

Post a Comment