Konsistensi dan Validasi Data Pada Halaman Web

Friday, April 1, 2011 3:26 AM by Computer and Programming
Oleh: Andi Sunyoto

Abstraksi

Apa yang terjadi jika pada halaman form Anda ada kesalahan pemasukan data atau pengiriman berulang oleh user ke server ? Jika itu adalah masalah Anda maka validasi form adalah jawabannya. Dengan adanya validasi data yang di kirim ke server kita cek dulu kebenarannya.
Kata Kunci: validasi, form, web, klient, server

Pendahuluan

Validasi merupakan proses pengecekan masukan yang dari sebuah form sebelum data tersebut diterima dan diolah untuk keperluan selanjutnya. Hal tersebut dilakukan agar tidak terjadi kesalahan proses karena input tidak sesuai yang tipe data yang dinginkan, inkonsistensi data dan duplikasi data.
Sebelum kita membahas tentang Validasi lebih jauh kita akan membahas dua teknik dalam menulis skrip dalam pemrograman internet yaitu, Server-side dan Client Side
Yang membedakan antara kedua adalah tempat dimana skrip diproses. Pada side server, proses dilakukan di web server, sedangkan klien (web browser) hanya menerima hasil dalam bentuk HTML. Contoh skrip server side adalah CGI/Perl, Active Server Pages (ASP) dan Java Server Pages (JSP). Pada client side proses dilakukan di web browser. Client side biasanya banyak digunakan untuk hal-hal yang membutuhkan banyak interaktif user dan menggunakan jenis informasi yang pasti dan seragam. Contoh skrip Client Side adalah JavaScript, DHTML.
Walaupun seakan-akan keduanya kontradiksi, tapi mereka saling melengkapi. Di sini pihak programmer dituntut untuk bisa menentukan kapan mereka menggunakan server side, client side atau kapan menggabungnya. Server side biasanya digunakan untuk memproses segala sesuatu yang berhubungan dengan server, seperti environmental dari server, memanipulasi data dalam database.
Pada pembahasan kali ini kita akan membahas validasi diaplikasi berbasis Web (Web Base Aplication). Skrip yang menjadi acuan adalah ASP( Active Server Pages) yang selanjutnya penulis sebut ASP. Hal yang penting untuk Web developer adalah mengedepankan dan memprediksi apa yang akan dilakukan oleh user dana apakah mereka merasa sulit dengan aplikasi kita. Jika Anda pernah membuat aplikasi dengan ASP yang menggunakan form, dan ada user mengirim response ada keganjilan terjadi: data terkirim dua kali, data tidak komplit atau user melaporakan form tidak tertampil secara baik. Pada tulisan ini kita akan membahas masalah-masalh tentang validasi.



Pembahasan

a. Validasi TextBox masukan

Validasi ini mengecek nilai yang kita inputkan pada sebuah form masukan.
  1. Validasi cek data pada form kosong atau tidak
  2. Validasi tipe data yang diminta sama atau tidak
  3. Validasi spesial karakter.
  4. Validasi range

b. Validasi proses database

  1. Validasi untuk pemasukan dalam database.
  2. Validasi data dalam database harus isi atau tidak
  3. Validasi penghapusan dan pengeditan data yang ensyaratkan data harus ada

c. Validasi pengiriman berulang pada Halaman Web

Proses Validasi

Validasi yang tersebut diatas dapat dilakukan Server dan klien.
Kelebihan dan kelemahan proses.
1. Proses di server (Server Side)
Kelebihan terdapat kepastian proses validasi akan dilaksanakan karena proses server tidak tergantung pada browser yang dipakai. Dapat melakukan validasi proses yang pada Aplication Layer (Web Server) dan Database Layer.
Kelemahan pada proses ini memerlukan waktu yang lama karena data harus dikirim ke server terlebih dulu dan di kirim kon kembali konfirmasinya ke browser
2. Proses Klien (Client Side)
Kelebihan proses di klien adalah proses yang tergolong lebih cepat di banding proses di server. Karena program di eksekusi di client.
Kelemahannya adalah tidak bisa validasi sampai proses database hanya proses pada presentation layer..

Solusi Validasi
a. Validasi Text Box
Pada validasi ini sebagian bisa kita lakukan dengan dua model yang itu validasi di klien dan server.
1. Cek data isi atau tidak
Proses ini dapat dilakukan di klien maupun di server. Contoh kode programnya:
Proses diserver dengan ASP.
<%
nim = request(?data?)
If nim = ?? Then
. . . ?tampilkan pesan data belum diisi
Else
. . . ?proses selanjutnya valid
End If
%>
Proses di klien dengan bahasa pemrograman JavaScript.
<Script language="javascript">
<!-- Begin
function periksa(frm){
 var err = "";
 if (frm.data.value.length<1)err+="- Data Belum Diisi !\n";
 if (err!=""){alert(\n"+err\n" + ?Silakan
 <b>Anda </b> Cek Lagi !");
 window.event.returnValue = false;
 return (false);
 }else {
 frm.submit();}
}
// End -->
</script>

<Html>
 <Head></Head>
 <Body>
 <input type="submit" value="TAMBAH"
 <name="action" onclick="periksa(this.form)">
</Body>
</Html>
2. Validasi tipe data yang diminta sama atau tidak
Masukan dari user sering ada kesalahan sebagai contoh untuk mengisi jumlah haruslah tipe data Numeric. Berikut contoh kode program untuk mengecek masukan apakah bertipe Numeric.
Contoh kode program dengan ASP
<%
If IsNumeric(Request("jumlah")) Then
... 'proses selanjutnya
Else
... 'pesan salah data bukan numeric
End If
%>
3. Validasi spesial karakter
Validasi ini memungkinkan mengecek apakah dalam suatu masukan ada karakter tertentu yang dinginkan. Sebagai contoh sederhana adalah masukan berupa alamat e-mail yang membutuhkan tanda ?@?. Berikut contoh programnya.
Contoh kode program dengan ASP
<%
datacek = Request("data")
If IntStr(1,datacek,"@") = 0 Then
. . . 'proses validasi benar
Else
. . . 'pesan salah
End If
%>
4.? Validasi data dengan range tertentu.
Misalnya dalam stok data yang dimasukkan harus >=0.
Contoh kode program dengan ASP
<%
stok = Request(?data?)
If stok < 0 Then
. . . ?pesan data yang dimasukkan salah
Else
. . . ?proses jika validasi benar
End If
%>

d. Validasi pada database

Untuk bisa melakukan validasi database request dari klien harus di kirim ke server diolah dan kemudian respon dikirim kembali ke klien.
1. Validasi untuk pemasukan dalam database.
Validasi ini untuk menghindari adanya duplikasi data dalam sebuah database.
Berikut potongan kode program untuk validasi dengan ASP.
<%
. . .
sql = ?select * from mhs where nim=?? & txtnim & ???
Set rs = conn.execute(sql)
If rs.eof Then
. . .?data belum ada proses selanjutnya
Else
. . .?pesan data sudah ada
End If
%>
2.? Validasi data dalam database harus isi atau tidak
Validasi ini bisa kita gabung dengan validasi yang jalan di klien, dengan cek form telah diisi atau belum.
3.? Validasi penghapusan dan pengeditan data yang ensyaratkan data harus ada.
Pada proses penghapusan dan edit data data harus sudah ada dalam database. Berikut contoh program denagn ASP.
<%
. . .
sql = ?select * from mhs where nim=?? & txtnim & ???
Set rs = conn.execute(sql)
If rs.eof Then
. . .?data tidak ada
Else
. . .?proses jika validasi benar
End If
%>

c. Validasi duplikasi pengiriman data

Secara kebetulan pengiriman data berulang sering terjadi, dan itu akan menimbulkan masalah untuk pengoahan data selanjutnya. Idealnya user asuk ke form dalam sebuah Web site, mengisi form yang telah disediakan dan klik men-submit ke server untuk diproses di server dan mengirim kembali ke user sebagai konfirmasi dari respon yang dikirimnya.
Bagaimana jika user klik tombol Back pada Browser dan tanpa disengaja mengirim data yang sama ? Jika anda tidak mengantisipasi hal tersebut data akan dikirim dan diolah diserver berulang. Untuk mengantisipasi kesalahan terkirim dua kali ke server, Anda dapat memuat validasi cek dengan server side untuk memastikan bahwa user mengetahui dia mengirim data dua kali.
Cara yang pertama adalh untuk memastikan user tidak mengirim informasi yang sama dua kali, kita memerlukan indikasi bahwa data sudah diterima olah server. Cara yang tepat adalah kita menggunakan session variabel. Anda dapat mendefinisikan variabel session dengan Session(?submiited?) diinisialisasi False untuk pertama kali dan pernyataan True jika user sudah mengirim datanya. Pesan ketika data dikirim dua kali.
Halaman ASP yang untuk membuat form dan mencek data yang sudah terkirim (form.asp) Potongan kode program untuk situasi ini adalh sebagi berikut sebagai berikut:
...
<% If Session(?submitted?) Then %>
<!?- ada pesan warning -->
...
<% Else %>
<-- kode menampilkan form -->
...
<% End If %>
...
Di halaman yang menerima pesan kode program adalah sebagi berikut:
Anda mengirim informasi:
<p>
<%=request(?data?)%>
<%Session(?submitted?) = True%>
Cara kedua jika form memerlukan banyak data sebagai masukan lebih baik anda memotong untuk kerperluan menjadi form yang lebih kecil, yang mamandu user memulai sesuatu langkah demi langkah tanpa harus menunggu lama untuk meload control atau halaman pengisian yang banyak. Lebih dari itu jika ada data yang tidak perlu dimasukkan maka tidak usah ditampilkan, misalnya tanggal sekarang , jam sekarang, karena bisa siambil dari server.
Untuk mencegah masalah tersebut, anda dapat meset status data yang dimasukkan. Status dapat menggunakan session variabel apakah record tersebut sudah dimasukkan user atau belum.
Ini bisa menggunakan Session bertipe Boolean untuk masing-masing form dalam multi-step form. Variabel bernilai False jika diasosiasikan form belum diproses dan True adalah sebaliknya.
Contoh kedua tentang aplikasi untuk download biasanya dibagi menjadi dua langkah yaitu: form pertama memmerlukan konfirmasi username dan form kedua menampilkan ComboBox berisi daftar item tergantung user yang disediakan.
Form pertama mempunyai session variabel requested1, dan requested2 untuk form yang kedua. Ketika user mengirim form pertama (form1.asp) session variabel requested1 diset dengan True:
<Form Method=?post? Action=?form2.asp?>
Your Name:
<Input Type=?text? Name=?name?>
<p>
<Input Type=?submit? Value=?Submit?>
<Input Type=?reset? Value=?Cancel?>
</Form>
<%
Session(?requested1?)=True
%>
Ini akan mencek dan memutuskan apakah masukan sudah cukup atau belum. Tentu saja, ketika user sebelum user masuk ke request yang kedua (form2.asp) harus cek dulu form ayng dikirim pada form sebelumnya.
Jika reques pada form1.asp True, form kedua akan di kirim ke browser dan session veriabel requesed2 di set True. Nilai False pada session variabel berarti user mencoba mengakses langsung ke form yang kedua, sehingga browser langsung dipindahkan ke form pertama.
Kode program untuk form yang kedua adalah sebagai berikut:
<% If Session(?requested1?) Then %>
<Html>
<Head>
</Head>
<Body>
. . . ?kode program untuk form kedua
<% Session(?requested2?) True
Else
Response.Redirect ?form1.asp?
End If %>
</Body>
</Html>
Catatan, tes pada variabel session requested1 harus dilaksanakan sebelum Tag <Html> untuk mengijinkan kemungkinan redirect. Dalam kenyataan bahwa redirect adalah instruksi browser dan hal tersebut tampak pada HTTP header sebelum kode HTML.

Kesimpulan

Teknik validasi merupakan upaya agar data yang dimasukkan sesuai dengan keinginan programmer, agar pengolahan selanjutnya tidak terjadi masalah. Teknik-teknik diatas untuk situasi tertentu. Masing-masing teknik menyelesaikan satu masalah yang spesifik, sehingga masalah kemungkinan digabung juga ada, dan mungkin kita tidak hanya menggunakan dua Session Variabel tapi bisa lebih. Teknik menggabungkan pengecekan di server dan di klien adalah yang terbaik, karena untuk bisa menutupi kelemahan masing-masing teknik.

Daftar Pustaka

  • Alex, Homer. Sussman, Dave. Francis, Brian. 1999. Profesional Active Server Pages 3.0. Wrox Press Ltd.
  • www.asptoday.com

0 Response to "Konsistensi dan Validasi Data Pada Halaman Web"

Post a Comment