Hack Your Skills! to be Professional Mechatronics

Perbedaan GET dan POST Data pada HTTP (PHP?)

2 comments

Pada tulisan kali ini kita akan memperdalam tentang metode pengiriman data yang dikirimkan dari client ke server pada WEB/HTTP, yaitu salah duanya menggunakan GET dan POST. Kita bisa memeriksanya di RFC2616 tentang HTTP 1.1 (http://tools.ietf.org/html/rfc2616). Agar kita yang sedang belajar mudah memahami tulisan ini, akan saya beri contoh menggunakan sampel halaman web. Semoga bisa membantu bagi yang sedang belajar.

Untuk percobaan, anggap saja kita punya server localhost yang terinstall Apache dan PHP. Kemudian kita mempunyai file ( dengan nama form_daftar.php) dengan dua form isian pendaftaran untuk menjadi member di website kita. Kedua form tersebut isinya sama, hanya saja yang membedakan adalah metode untuk mengirim datanya, yaitu GET dan POST. Form isian tersebut akan mengirim data pada server dan diterima oleh file yang bernama daftar.php. Berikut scriptnya:


<!-- isi di file form_daftar.php -->
<table>
  <tr>
    <td width="300px;">
   <form method="GET" action="daftar.php">
     Nama : <input type="text" name="nama"><br/>
     Alamat : <textarea type="text" name="alamat"></textarea><br/>
     Email : <input type="text" name="email"><br/>
     Password : <input type="password" name="pass"><br/>
  <input type="submit" value="Daftar">
   </form>
 </td>
    <td>
   <form method="POST" action="daftar.php">
     Nama : <input type="text" name="nama"><br/>
     Alamat : <textarea type="text" name="alamat"></textarea><br/>
     Email : <input type="text" name="email"><br/>
     Password : <input type="password" name="pass"><br/>
  <input type="submit" value="Daftar">
   </form>
 </td>
  </tr>
</table>

<?php
// isi file daftar.php

// cara menangkap data GET
$nama1   = $_GET['nama'];
$alamat1 = $_GET['alamat'];
$email1  = $_GET['email'];
$pass1   = $_GET['pass'];

// cara menangkap data POST
$nama2   = $_POST['nama'];
$alamat2 = $_POST['alamat'];
$email2  = $_POST['email'];
$pass2   = $_POST['pass'];

echo "Data yang dikirim dengan GET : <br/>$nama1, $alamat1, $email1, $pass1";
echo "<br/><br/>";
echo "Data yang dikirim dengan POST : <br/>$nama2, $alamat2, $email2, $pass2";
?>




Dari sampel di atas, ketika kita explore lebih dalam menggunakan Live HTTP Header, maka kita akan mengetahui seperti apa sebenarnya format data yang dikirim dari browser kita ke server. Oiya, Live HTTP Header merupakan plugin yang saya gunakan pada Firefox untuk menganalisis atau meng-capture sirkulasi data antara browser dan server. Kita bisa mendownload Live HTTP Header di sini https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/. Berikut hasil yang diperoleh dari Live HTTP Header.



http://localhost/sampah/daftar.php?nama=Soekarno&alamat=Jl.+Mawar+Indah+Sekali+No.+71&email=soekarno%40email.com&pass=merdeka

GET /sampah/daftar.php?nama=Soekarno&alamat=Jl.+Mawar+Indah+Sekali+No.+71&email=soekarno%40email.com&pass=merdeka HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://localhost/sampah/form_daftar.php
Cookie: wpmp_switcher=desktop
Connection: keep-alive

http://localhost/sampah/daftar.php

POST /sampah/daftar.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://localhost/sampah/form_daftar.php
Cookie: wpmp_switcher=desktop
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 87
nama=Soeharto&alamat=Jl.+Melati+Putih+No.+74&email=soeharto%40mail.com&pass=sehatselalu

Hasil di atas merupakan rekaman Live HTTP Header. Dari data tersebut kita bisa menyimpulkan bahwa antara form yang menggunakan metode GET dan POST itu berbeda. Pertama, pada metode GET kita bisa mengirim data dengan menyisipkannya pada alamat URL (misal daftar.php?nama=Soekarno... dst). Sedangkan pada POST kita tidak bisa melakukan hal tersebut. Kedua, metode POST menyertakan data yang kita kirim di bagian body data dan bukan pada URL. Ketiga, pada metode POST ada tambahan Content-Type untuk menentukan tipe data dan Content-Length untuk lebar informasi lebar data yang ada di bagian body. Dengan informasi tersebut, kita menggunakan method POST untuk upload data, dan bukan menggunakan GET. Misal pada PHP sebagai berikut:
<form action="upload_file.php" method="POST" enctype="multipart/form-data">

</form>

Apa sudah bisa merasakan beda antara GET dan POST? :)


Referensi tentang pemrograman komputer, jaringan, elektronika, dan materi lainnya yang mungkin bisa menginspirasi tentang ide penelitian, bisa dicek di Kumpulan Materi Algoritma dan Pemrograman Komputer dan Kumpulan Teori dan Rangkaian Elektronika.


Klik tombol di bawah ini untuk membagikan ke temen-temen lainnya...

2 comments :