Pada tutorial kali ini kita akan membahas mengenai cara menghubungkan form HTML dengan PHP.
Ketika membuat website atau aplikasi berbasis web, kita tidak bisa lepas dengan yang namanya form. Form ini digunakan untuk menerima input dari user untuk kemudian diolah sesuai keperluan.
Seperti kita ketahui, form HTML hanya digunakan untuk [1] menerima input dari user dan [2] mengirim data tersebut ke alamat tertentu, selesai, ya sampai disitu saja fungsi dari form HTML ini, tentang bagaimana data tersebut diolah, bukan menjadi tanggung jawab form lagi.
I. Elemen Form HTML
Elemen form memiliki beberapa atribut penting yang akan menentukan kemana data dikirim dan dengan cara apa data dikirim, atribut tersebut adalah
action
dan method
, misal kita buat file form.php
 dan proses.php
yang kita letakkan didalam folder htdocs
Isikan kode berikut ke dalam file form.php
Form HTML Dengan PHP
Nama
Email
Klik DEMO untuk langsung melihat hasil
1  Atribut Action
Atribut action berisi alamat url kemana data form tersebut akan dikirim. Pada contoh script diatas, kita isi atribut action dengan proses.php
 sehingga, ketika tombol submit di klik, maka data form tersebut dikirim ke //localhost/form/proses.php
URL Relative VS URL Absolute
Jika alamat url [ termasuk pada atribut action pada form] ditulis tanpa menggunakan www
atau http
, maka alamat tersebut disebut relative url.
Misal pada contoh diatas, atribut
action pada elemen yang ada di dalam file
form.php
bernilai: proses.php
, artinya alamat tersebut relative [mengacu] pada posisi file form.php
[path url form.php
adalah //localhost/form/
]
Dengan demikian, karena file proses.php
 berada satu folder dengan file form.php
maka url untuk file proses.php
 adalah //localhost/form/proses.php.
Jika atribut action kita isi action="file/proses.php"
maka form akan dikirim ke //localhost/form/file/proses.php
Selain url relative, kita juga dapat
mengisi atribut action dengan url absolute, url absolute berarti alamat url ditulis penuh. misal //localhost/form/proses.php
2 Atribut Method
Atribut method digunakan untuk menentukan dengan cara apa data dikirim. Atribut ini memiliki dua nilai, yaitu GET dan POST.
Method GET
Pada method GET, data pada form akan dikirim melalui url. Misal, pada form yang telah kita buat sebelumnya, kita beri atribut method dengan nilai get
, selanjutnya, kita isi isian
nama, misal: Agus Prawoto Hadi dan email: , ketika kita klik tombol simpan, maka url akan berubah menjadi:
Pada gambar tersebut terlihat bahwa alamat url berubah menjadi:
//localhost/form/proses.php?nama=Agus+Prawoto+Hadi&email=prawoto.hadi%40gmail.com
Pada url diatas, bagian parameter yang berisi data form dimulai dengan tanda tanya, selanjutnya diikuti parameter dengan format  nama_data=nilai_data
, antar parameter dipisah dengan tanda ampersand [ &
]
Pada gambar diatas, terlihat bahwa spasi
berubah menjadi +
dan @
berubah menjadi %40
, hal ini dikarenakan ketika data dikirim via url, data tersebut akan diencode [URL encode].
Dalam URL Encode beberapa karakter akan diubah dengan karakter tertentu, namun tidak perlu khawatir, ketika data ditangkap oleh PHP, data tersebut akan di decode, sehingga kembali ke bentuk aslinya.
nama_data
berasal dari atribut name
dari tiap-tiap elemen input, sedangkan nilai_data
merupakan nilai yang kita isikan pada elemen input. Perhatikan ilustrasi berikut:
Method POST
Pada method POST, data pada form akan dikirim melalui http request header, sehingga tidak terlihat oleh user. Misal, pada form sebelumnya kita isi atribut action dengan nilai POST, selanjutnya, ketika kita klik simpan, maka alamat URL akan berubah menjadi:
Pada gambar diatas, terlihat bahwa tidak ada data yang dikirim melalui URL. Jika kita ingin melihat data yang dikirim, kita dapat menggunakan addon developer tools pada Chrome atau firebug pada Firefox, kemudian pilih bagian tab Network.
Method GET vs Method POST
Method GET dan POST memiliki beberapa perbedaan mendasar, diantaranya:
Method GET
- Kurang aman karena data terekspose, selain itu, karena dikirim melalui url, data tersebut akan tersimpan pada history browser
- Panjang data terbatas antara 2kb – 8kb tergantung jenis browser.
- Hanya dapat mengirim data teks, tidak dapat mengirim file
- Oleh browser tidak diperlakukan sebagai data sensitif, sehingga halaman tersebut dapat direfresh dengan mudah
Method POST
- Lebih aman, karena data tidak terekspose, selain itu, data yang dikirim tidak tersimpan pada history browser
- Dapat mengirim data berukuran besar.
- Dapat mengirim berbagai jenis data termasuk file
- Oleh browser diperlakukan sebagai data sensitif, sehingga ketika direfresh, browser akan meminta konfirmasi pengiriman ulang data.
Lebih jauh tentang kedua metode ini, termasuk kelebihan dan kekurangan, kapan digunakan, dan proses pengirimannya dibahas lengkap di: Memahami GET dan POST Pada PHP dan HTTP
II. Menangkap Data Dari Form HTML Dengan PHP
Setelah data dikirim oleh form HTML, maka data tersebut siap untuk diolah.
Menangkap Data GET
Untuk menangkap data yang dikirim dengan method GET, kita gunakan
variabel $_GET
, variabel ini berbentuk array dengan index berupa nilai atribut name
pada elemen input.
Misal: isikan file proses.php
dengan script berikut: