Yang Terlupakan

Dalam membuat sebuah sistem yang mengambil data dari database, hal yang seringkali dilupakan adalah antisipasi ketika tidak ada data yang dikembalikan oleh sistem. Atau NULL. Ini bisa saja karena belum ada datanya, atau tidak ada data yang sesuai dengan parameter/kriteria yang diinginkan.

Misalnya saja, saya ingin mengambil data semua agenda dari table agenda. Namun karena sistem itu baru saja diluncurkan, maka belum ada agenda. Atau ketika saya ingin mengambil agenda di tanggal 12 Juni 2009, namun karena tidak ada agenda pada tanggal tersebut, maka sistem mengembalikan nilai NULL. Dan akan muncul halaman/bagian halaman yang kosong.

Alangkah baiknya jika kita mengantisipasinya. Misalnya dengan kata ‘Belum ada agenda’ atau ‘Agenda tidak ditemukan’.

Selanjutnya yang sering dilupakan adalah pemeriksaan tipe variable yang digunakan untuk query ke dalam database (Selain untuk query dari database, bisa saja untuk keperluan lain dalam sistem.). Misalnya kita menggunakan ‘id’ yang berupa angka sebagai primary key. Dan kita mengambilnya dari segment URL. Misalnya http://example.com/berita/11. Dimana ’11’ adalah nilai id yang akan digunakan untuk query ke dalam database. Misalnya masih berupa angka, maka semua akan baik-baik saja. Namun ketika dimasukkan huruf, maka akan menghasilkan pesan eror. Yang kemudian mungkin bisa digunakan untuk ‘keperluan lain’, misalnya SQL injection.

Kemudian menyambung dari sebelumnya, yang sering dilupakan lagi adalah menyembunyikan pesan error dari eksekusi sistem. Pesan error yang saya maksud misalnya eror parsing halaman, query ke database dan pesan error dari sistem yang lain. Dan bukan pesan error yang memang sengaja dimunculkan untuk notifikasi ke user. Misalnya page not found, error dalam pengisian form dan lain sebagainya.

Pesan eror sangat berguna ketika sistem belum online maupun masih dalam pengembangan. Namun ketika sistem sudah online, maka pesan eror bisa menjadi bumerang karena bisa dianalisa untuk ‘keperluan lain’, misalnya saja mencari kelemahan sistem. Menurut saya, ketika eror itu terjadi, sebaiknya user diarahkan ke halaman error not found. Dan tidak memunculkan log error dari sistem.

Mohon koreksi kalau ada kesalahan.

(Ditulis dalam ‘kekacauan jiwa’..hehe)

Gambar diambil dari sini

19 thoughts on “Yang Terlupakan

  1. ganda

    untuk zero record oleh database, boleh di check dengan fungsi yang sudah tersedia. Misalkan mysql_num_rows() untuk jenis php-mysql, atau pg_num_rows() untuk php – postgre dan lain-lain.

    klo untuk mengatasi sql injection, saya menyarankan model prepare statement dari pada model escaped character. cara ini lebih reliable dan lebih aman dari bandingkan model escape.

    istilahnya error user friendly lah ya, bukan error developer friendly. hahahaha.. atau error yang mengerikan yang pernah saya temukan di muka bumi ini waktu mengkompile C program. Segmentation Fault/Core Dump. Error yang membuat saya gila, karena kurang saya mengerti. belum lagi error bahasa assembly. hahahahaha

    Reply
    1. d3ptzz Post author

      @ganda:
      makasih bro tanggapannya….

      yups.. untuk zero record memang sudah ada fungsi defaultnya, tapi kadang itu terlupakan.. karena biasanya saya ngecek dengan data sample. hehe..

      saya belum biasa menggunakan prepared statement. hehe.. sekarang juga dimanjakan dengan adanya framework code igniter. jadi saya ga mikir masalah query ke database. tapi saya akan mempelajarinya. Maklumlah newbie..hehehehe..

      yups.. eror yang user friendly.. kan tujuan pesan error itu biar user tau erornya. bukan membuat tambah bingung.. hehehe.. saya malah belum pernah coding C. biasanya pake Java. itupun pake IDE Netbeans. Erornya keliatan dimana… hehehehehhe…

      Reply
      1. ganda

        @d3ptzz, hmm.. kadang2 saya juga sering lupa sih. Saya mengambil data menggunakan php dari database dan mengirimkannya ke aplikasi flex. Metodenya mirip XMLRPC, ajax, atau SOA juga.

        Prepared statement sangat nyaman di gunakan bro, saya sering menggunakannya untuk aplikasi java. 😀 Tapi saya rasa framework code igniter pastilah sudah mengimplementasikan fungsi ini. bener gak yah? Anyway, saya juga pernah buat framework php sederhana untuk database2 sepert ini menggunakan OO PHP. tapi malas juga. Soalnya saya jarang pakai, sehingga saya jadi malas membuatnya. hehehehe… *di lempar keyboar sama d3ptzz*

        Hmm.. klo untuk java, Eclipse adalah favourite saya. Saya malah mengkoding php pakai eclipse. I love eclipse. 😀 Mengenai perang Eclipse dengan Net Beans, di menangkan oleh eclipse bukan ya? Tapi kadang2 saya juga pakai net beans dengan keperluan tertentu, misalnya design GUI. hehehehehe… Sisanya, eclipse lah yang beraksi..

        Reply
        1. d3ptzz Post author

          @ganda: wah lanjutkan aja php frameworknya, nanti saya jadi usernya yang pertama.. hehehehe..

          kalau netbeans sama eclipse, sementara ini saya lebih suka pake netbeans. entahlah menurut kata hati saya lebih nyaman. haha. walaupun kadang selingkuh juga pake eclipse. untuk coba-coba.. ehehe.. Saya sudah terbiasa dengan interface netbeans yang kotak, kaku itu. haha.. Dari pertama sudah make netbeans. hehehe..

          Ya setiap orang punya pendapat sendiri lah.. hehe.. Dan tak perlu diperdebatkan yang penting hasil akhirnya bagus.. ahaha..

          Btw jadi tertarik dengan flex, mau coba belajar ah. Nanti mohon bimbingannya bro…:D

          Reply
          1. d3ptzz Post author

            @ganda: bukan mas, tapi database server sepertinya error… tadinya udah mau saya reply,.. ee tiba-tiba ngilang… maapkan server saya mas..:-)

            kalau berkenan mohon postingkan lagi komentarnya… hehehe

        2. ganda

          oalah. sudah lupa saya.. hahahaha…. forget it lah bro.. gak berkurangkan jadinya duitmu??? hahahaha…. saya tetap berkomentar ria koq di sini.. 😀

          Reply
          1. d3ptzz Post author

            @ganda: hehehehhee… makasih banget juragan master suhu mahaguru sudah mau mampir ke blog cupu ini..:D

  2. eko budi prasetyo

    wuahahahhahah….
    mantabs tuh gan.. :))
    ternyata NULL itu penting banget y000..
    berarti otak juga harus di set NULL di /dev/null
    jadi blank deeeehhhh…
    otak ama dengkul jadi sinkron
    wkwkkwkwk…
    :)) :))
    hmmm,, btw sukses buat perkembangannya di website n java ya brooo… ^^
    wish u the best…
    [-=C3=-]

    Reply
  3. eko budi prasetyo

    0wiya gan.. sory buat tadi pagi y0000..
    salam hangat dari saya..
    senang punya kakak angkatan yang sabar seperti mas d3ptzz.. ^^
    [-=C3=-]

    Reply
  4. rieskhy

    misi numpang tanya lok misal na mau capture data dari web lain tanpa select DB dengan PHP gmn ya???

    jadi web kita yang kita bwad selalu mengikut bila web yang kita capture apdet…..

    mksih ya kang…………..

    Reply
    1. d3ptzz Post author

      @rieskhy: bisa menggunakan RSS/Atom Feed.. bisa dilihat di kandangbuaya.com itu mengambil post dari semua subdomain di kandangbuaya.com termasuk blog ini.. 🙂

      Reply
        1. ganda

          @rieskhy, karena rss sudah berformat XML, tinggal menggunakan fitur XML parser yang available pada programming yang di gunakan. untuk check misal setiap 1 jam, boleh menggunakan cron jobs linux atau scheduled task di windows.

          Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.