Rabu, 07 Maret 2012

Cara Memproses HTML Form yang Benar

Kebanyakan programmer PHP pemula tidak tahu bagaimana cara memproses HTML form yang benar. Bahkan ini juga terjadi bagi yang sudah lama berkecimpung di dunia PHP. Kebanyakan masih menggunakan cara lama (bisa dibilang salah), cara yang populer di versi PHP4 ke bawah. Dimana di versi PHP4 ke bawah register_global secara default disetting ON. Tentu saja, ketika register_global diset menjadi OFF, script php tersebut tidak akan bekerja.

Berikut adalah cara memproses html form menggunakan php yang benar, yang bekerja di semua versi php (dari 4.1.0 sampai version terkini 5.3.3).

HTML Form: Metode Pengiriman Data

Form HTML dibentuk menggunakan tag <form/>, tag <form/> memiliki attribute method yang digunakan untuk menentukan bagaimana cara form mengirim data ke server (data dikirim ke page/halama yang diset di dalam attribute action). Attribute method bisa diisi dengan 2 nilai, yaitu post dan get. Jika diisi dengan post, maka data akan dikirim sebagai sebuah HTTP post transaction. Jika diisi dengan get, maka data akan dikirim sebagai variabel variabel URL. Contoh:
  
<form method="get" action="http://google.com">
  1. <input type="text" name="q"/>

  2. </form>


  3. <form method="post" action="http://sandbox.paypal.com/cgi-bin/webscr">

  4. <input type="hidden" name="amount" value="10"/>

  5. <input type="submit" value="Pay Now"/>

  6. </form>

 Form pertama akan mengirim data ke http://google.com menggunakan method get, dan form kedua akan mengirim data ke http://sandbox.paypal.com/cgi-bin/webscr dengan method post.

Cara Memproses Form di PHP

Dalam memproses sebuah form, yang perlu diketahui adalah di PHP ada yang disebut dengan superglobals variables. Superglobals variables adalah variabel standar yang tersedia di seluruh ruang lingkup kode php bersangkutan. Superglobals variables yang berperan saat memproses form adalah $_POST, $_GET, dan $_FILES. Ketiga variabel ini akan diisi dengan data yang diterima/dikirim dari/oleh form html.

Di atas telah disebutkan bahwa sebuah form bisa menggunakan 2 metode pengiriman data. Jika menggunakan post, maka data yang diterima dari form ini akan disimpan ke dalam variable $_POST. Jika dikirim menggunakan metode get, maka data yang diterima akan disimpan ke dalam varibel $_GET. Sedangkan variabel $_FILES berfungsi untuk menyimpan informasi file file yang diupload (untuk mengupload file digunakan element form dengan type="file"). Ketiga superglobals variables itu, akan berisi associative array.

Untuk lebih memperjelas akan diberikan contoh. Misalkan anda memiliki sebuah form dengan 4 element seperti di bawah:
pada saat form diisi data dan tombol submit ditekan, data akan dikirim ke server dan terjadi proses seperti gambar:


Ilustrasi sederhana di atas menjelaskan bahwa pada saat tombol submit ditekan, data akan dikirim ke server dan diproses oleh php. PHP akan menyimpan data yang diterima (yang telah diproses) ke dalam variabel $_POST (karena data dikirim dengan method post). Selanjutnya, adalah "tugas programmer untuk memproses data yang diterima", yang telah ditempatkan di variabel $_POST oleh PHP. Seperti terlihat di gambar, variabel $_POST akan berisi associative array berikut:
  1. $_POST = array (

  2. 'nama' => 'John',

  3. 'kelamin' => 'L',

  4. 'status' => 'M',

  5. 'alamat' => 'Jalan kutilang',

  6. );

Pertanyaan yang muncul adalah, mengapa variabel $_POST terbentuk seperti itu? Gambar di bawah akan menjelaskannya.