CodeIgniter ( Penanganan dan Validasi Form 1 )
1
Jika di Tutorial sebelumnya kita sudah membahas tentang Penggunaan Library dan Helper, Pada Tutorial kali ini kita akan bahas mengenai penanganan form dan cara melakukan validasi terhadap sebuah form inputan.
Penanganan form artinya bagaimana cara kita untuk mendapatkan dan mengolah data yang dikirimkan oleh pengguna melalui form. Untuk membuat form sendiri, sebaiknya kita menggunakan helper form. Setelah kita berhasil mendapatkan data dari user, kita harus memvalidasi data-data yang telah dikirimkan tersebut agar aplikasi yang kita bangun menjadi aman.
Inputan yang tidak divalidasi membuat aplikasi kita rentan terhadap serangan seperti Sql Injection, Xss dan lain-lain.
Penanganan Form
Untuk menangani form kita membutuhkan library input. Library tersebut sudah dipanggil secara otomatis oleh codeigniter. Fungsi yang tersedia pada library ini selain untuk menangani form juga memiliki fungsi security/keamanan. Contohnya untuk menghandle atau memfilter xss kita dapat menggunakan fungsi xss_filter.
$nama = $this->input->xss_filter($this->input->post('nama'));
Jika kita ingin melindungi seluruh aplikasi dari dengan xss filter maka kita bisa menconfignya dengan mengubah konfigurasi di system/application/config/config.php dari
$config['global_xss_filtering'] = FALSE;
Menjadi
$config['global_xss_filtering'] = TRUE;
Selain kedua cara diatas, kita dapat juga menggunakan parameter kedua dari fungsi post atau get maka kita akan mendapatkan hasil yang sama dengan kedua cara diatas, contohnya
$this->input->post('nama', TRUE);
$this->input->get('nama', TRUE);
Fungsi post digunakan untuk menangkap inputan POST sedangkan get digunakan untuk menangkap inputan GET. Selain itu fungsi input juga dapat digunakan untuk cookie, variabel SERVER, dan user agent
$this->input->cookie('nama_cookie', TRUE);
$this->input->ip_address();
$this->input->server('PATH_INFO', TRUE);
Selain library input, Codeigniter juga menyediakan sebuah helper untuk mempermudah penanganan form. Helper tersebut adalah helper form. Helper tersebut membantu kita dalam membuat form pada view. Adapun cara meload helper form adalah
$this->load->helper('form');
Ada banyak fungsi yang disediakan oleh helper ini diantaranya form_open(), form_close(), form_open_multipart(), form_hidden(), form_password(), form_textarea(), form_dropdown(), form_multiselect(), form_fieldset() dan lain-lain. Untuk lebih detailnya anda dapat melihat pada dokumentasi codeigniter. Pada kasus ini, fungsi yang banyak digunakan adalah fungsi diantaranya form_open(), form_close() dan form_input().
Form_open() berfungsi untuk menghasilkan tag form (<form>) pada html. Contoh:
$attributes = array('class' => 'email', 'id' => 'myform');
echo form_open('form/send', $attributes);
Maka akan menghasilkan
<form method="post" accept-charset="utf-8" action= "http:/localhost/index.php/email/send" class="email" id="myform" />
Form_input berfungsi untuk menggenerate tag input pada html. Fungsi ini dapat dipakai dengan dua cara. Cara pertama adalah dengan memasukkan nama tag dan valunya. Contoh:
echo form_input('username', 'emje');
akan menghasilkan
<input type="text" name="username" id="username" value="emje">
Cara kedua adalah dengan mempassing array kedalam fungsi tersebut. Cara ini adalah cara yang advance dan sangat berguna jika kita ingin mengcustomisasi inputan. Contohnya:
$data = array(
'name' => 'username',
'id' => 'username',
'value' => 'emje',
'maxlength' => '100',
'size' => '50',
'style' => 'width:50%',
);
echo form_input($data);
Akan menghasilka output :
<input type="text" name="username" id="username" value="emje" maxlength="100" size="50" style="width:50%" />
Untuk contoh menangani form maka ikutilah langkah-langkah berikut ini.
1. Membuat Controller Hitung
Perlu diingat hal pertama yang harus di konfigurasi pada setiap aplikasi adalah BASE_URL. Setelah melakukan konfigurasi base_url pada file application/config/config.php maka kita akan membuat sebuah controller yang akan menangani proses perkalian dan pembagian. Konfigurasi pada base_url dilakukan supaya penggunaan library url menghasilkan keluaran yang tepat. Perhatikan code berikut ini:
Application/Controllers/hitung.php
1.<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
2.
3.class Hitung extends CI_Controller {
4.
5.function __construct()
6.{
7. parent::__construct();
8.$this->load->helper(array('url','form'));
9.}
10.
11.function index()
12.{
13. $this->load->view('menu_hitung');
14.}
15.
16.function perkalian()
17.{
18. $data['v1']=(int)$this->input->post('v1',true);
19. $data['v2']=(int)$this->input->post('v2',true);
20. $data['hasil']=$data['v1']*$data['v2'];
21. $this->load->view('perkalian',$data);
22.}
23.
24.function pembagian()
25.{
26. $data['v1']=(int)$this->input->post('v1',true);
27. $data['v2']=(int)$this->input->post('v2',true);
28. if ($data['v2']>0)
29. $data['hasil']=$data['v1']/$data['v2'];
30. else
31. $data['hasil']='Error, v2 tidak boleh 0!';
32. $this->load->view('pembagian',$data);
33.}
34.}
Pada baris ke 8, dilakukan loading terhadap helper url dan form sekaligus. Loading tersebut dilakukan dalam fungsi konstruktor karena kedua helper tersebut digunakan pada semua fungsi dan view yang ada. Pada kelas hitung tersebut, terdapat 3 fungsi yaitu index, perkalian dan pembagian. Pada fungsi index hanya berisi sebuah pemanggilan terhadap view.
View tersebut akan berisi menu-menu yang akan mengarahkan pengguna untuk melakukan perkalian atau pembagian. Pada fungsi perkalian dan pembagian akan dilakukan proses perkalian atau pembagian. Pada fungsi tersebut, variabel yang berasal dari view akan ditangkap menggunakan fungsi post (berarti dikirimkan melalui POST method).
View tersebut akan berisi menu-menu yang akan mengarahkan pengguna untuk melakukan perkalian atau pembagian. Pada fungsi perkalian dan pembagian akan dilakukan proses perkalian atau pembagian. Pada fungsi tersebut, variabel yang berasal dari view akan ditangkap menggunakan fungsi post (berarti dikirimkan melalui POST method).
2. Membuat View
Setelah membuat controller maka kita akan membuat view yang merupakan interface dari aplikasi tersebut. Code berikut ini adalah view menu_hitung. View ini berisi navigasi ke fungsi perkalian dan pembagian.
Application/views/hitung.php
1.<!DOCTYPE html>
2.<htmllang="en">
3.<head>
4.<metacharset="utf-8">
5.<title>Welcome to CodeIgniter</title>
6.
7.<styletype="text/css">
8.
9.body {
10.background-color: #fff;
11. margin: 40px;
12. font-family: Lucida Grande, Verdana, Sans-serif;
13. font-size: 14px;
14. color: #4F5155;
15.}
16.
17.a {
18. color: #003399;
19. background-color: transparent;
20. font-weight: normal;
21.}
22.
23.h1 {
24. color: #444;
25. background-color: transparent;
26. border-bottom: 1px solid #D0D0D0;
27. font-size: 16px;
28. font-weight: bold;
29. margin: 24px 0 2px 0;
30. padding: 5px 0 6px 0;
31.}
32.
33.</style>
34.</head>
35.<body>
36.
37.<h1>CodeIgniter 2.0 dan Form!</h1>
38.
39.<p>Silakan pilih menu dibawah ini.</p>
40.<ul>
41.<li><?php echo anchor('hitung/perkalian','Perkalian');?>
42.<li><?php echo anchor('hitung/pembagian','Pembagian');?>
43.</ul>
44.<p><br/>Page rendered in {elapsed_time} seconds</p>
45.
46.</body></html>
Perhatikan baris ke-41 dan ke-42, itu adalah contoh penggunaan helper. Fungsi anchor bertujuan untuk membuat sebuah link ke page tertentu. Berikut ini adalah tampilan dari view diatas jika dipanggil.
Setelah menu hitung selanjutnya membuat view untuk perkalian dan pembagian. Adapun view perkalian adalah sebagai berikut.
Application/views/perkalian.php
1.<!DOCTYPE html>
2.<html lang="en">
3.<head>
4.<meta charset="utf-8">
5.<title>Welcome to CodeIgniter</title>
6.
7.<style type="text/css">
8.
9.body {
10. background-color: #fff;
11. margin: 40px;
12. font-family: Lucida Grande, Verdana, Sans-serif;
13. font-size: 14px;
14. color: #4F5155;
15.}
16.
17.a {
18. color: #003399;
19. background-color: transparent;
20. font-weight: normal;
21.}
22.
23.h1 {
24. color: #444;
25. background-color: transparent;
26. border-bottom: 1px solid #D0D0D0;
27. font-size: 16px;
28. font-weight: bold;
29. margin: 24px 0 2px 0;
30. padding: 5px 0 6px 0;
31.}
32.
33.</style>
34.</head>
35.<body>
36.
37.<h1>Perkalian!</h1>
38.
39.<p>Silakan masukan data berikut!!</p>
40.<?php echo form_open('hitung/perkalian');?>
41.<?php echo form_input('v1',$v1);?> x
42.<?php echo form_input('v2',$v2);?><br>
43.
44.<?php echo form_submit('submit','Hitung!!');?>
45.<?php echo form_close();?><br>
46.Hasil : <?php echo $hasil;?>
47.
48.<p><br/>Page rendered in {elapsed_time} seconds</p>
49.
50.</body></html>
Pada view ini banyak digunakan helper form (baris 40 – 45). Tag input yang ada pada view ini di- generate oleh fungsi form_input dan tombol submit oleh fungsi form_submit. Adapun tampilan detail view tersebut adalah
Yang terakhir adalah membuat view untuk pembagian. Pada prinsipnya pembuatanya sama saja dengan view perkalian tetapi bentuk layoutnya berbeda
Application/views/pembagian.php
1.<!DOCTYPE html>
2.<html lang="en">
3.<head>
4.<meta charset="utf-8">
5.<title>Welcome to CodeIgniter</title>
6.
7.<styletype="text/css">
8.
9.body {
10. background-color: #fff;
11. margin: 40px;
12. font-family: Lucida Grande, Verdana, Sans-serif;
13. font-size: 14px;
14. color: #4F5155;
15.}
16.
17.a {
18. color: #003399;
19. background-color: transparent;
20. font-weight: normal;
21.}
22.
23.h1 {
24. color: #444;
25. background-color: transparent;
26. border-bottom: 1px solid #D0D0D0;
27. font-size: 16px;
28. font-weight: bold;
29. margin: 24px 0 2px 0;
30. padding: 5px 0 6px 0;
31.}
32.
33.</style>
34.</head>
35.<body>
36.
37.<h1>pembagian!</h1>
38.
39.<p>Silakan masukan data berikut!!</p>
40.<?php echo form_open('hitung/pembagian');?>
41.<?php echo form_input('v1',$v1);?> /
42.<?php echo form_input('v2',$v2);?><br>
43.
44.<?php echo form_submit('submit','Hitung!!');?>
45.<?php echo form_close();?><br>
46.Hasil : <?php echo $hasil;?>
47.
48.<p><br/>Page rendered in {elapsed_time} seconds</p>
49.</body></html>
Berikut ini adalah tampilan dari form pembagian
Oke, karena di tutorial CodeIgniter tentang Penanganan Validasi Form nya cukup panjang, seperti biasa, saya bagi menjadi 2 part, See you di postingan part 2 nya ;)
Ekspedisi Pengiriman Barang