Penggunaan fungsi GET-PROCESS pada PHP

Assalamualaikum wr.wb

Pada kesempatan kali ini saya akan berbagi membahas apa itu perbedaan $GET dan $POST. dari sebelumnya saya posting membahas tentang Variabel dan cara passing variabel.

1. Latar Belakang
    Variabel adalah kode program yang digunakan untuk menampung nilai tertentu. Nilai yang disimpan di dalam variabel selanjutnya dapat dipindahkan ke dalam database, atau ditampilkan kembali ke pengguna.
Nilai dari variabel dapat di isi dengan informasi yang diinginkan dan dapat dirubah nilainya pada saat kode program sedang berjalan. Sebuah variabel memiliki nama yang digunakan untuk mengakses nilai dari variabel itu. Jika anda memiliki pengetahuan dasar tentang bahasa pemograman, tentunya tidak asing dengan istilah variabel.
Sama seperti variabel dalam bahasa pemograman lainnya, variabel dalam PHP digunakan untuk menampung nilai inputan dari user, atau nilai yang kita definisikan sendiri.

2. Maksud Tujuan
    Mengetahui perbedaan dari perintah yang sama - sama untuk menampilkan agar lebih memahaminya dan digunakan sesuai fungsinya.

3. Pembahasan
    Fungsi dan Perbedaan Method POST dan GET pada PHP –
Dalam dunia PHP Programming tentu menggunakan Method POST dan GET. Apa itu Method POST dan GET ? Sedikit pengertian dari kegunaan Method POST dan GET ini sama yaitu untuk mengirimkan nilai variabel ke halaman lain atau mengirimkan ke database dan mengambil nilai variabel dari halaman lain atau mengambil data pada database.
Penggunaan Method POST dan GET ini biasanya menggunakan form pada halaman PHP. Untuk perbedaannya sangatlah kecil pada Method POST dan GET namun sangat terlihat.

    Perbedaan secara spesifikasinya sbg berikut :

  • Method POST tidak menampilkan nilai variabel pada URL dan Method GET menampilkan nilai variabel yang dikirimkan.
  • Method POST lebih aman dan Method GET kurang aman (pada contoh diatas berati password ditampilkan pada URL).
  • Jika Method GET dibatasi panjang string hingga 2047 karakter, Method POST tidak.
  • Perbedaan pengambilan data jika Method POST menggunakan $_POST sedangkan Method GET menggunakan $_GET.
  • Method POST biasanya digunakan untuk input dari FORM, Method GET menggunakan input dari LINK atau akses menggunakan link.
  • Method POST digunakan untuk mengirimkan data rahasia seperti password, Method GET digunakan untuk mengirimkan/mengambil data pablik seperti id_user atau id_halaman.

4. Kesimpulan 
    Kesimpulannya adalah $POST dan $GET memiliki fungsi yang sama untuk menampilkan tetapi memiliki perbedaan diantaranya dan dapat digunakan sesuai fungsi dan kebutuhannya.

5. Referensi 

  • http://imdi15.blogspot.co.id/2014/05/fungsi-echo-post-dan-get-pada-php-serta.html

Dalam dunia internet, protokol yang umum digunakan adalah protokol HTTP, protokol ini memiliki beberapa metode request (request method) diantaranya adalah dari GET dan POST, jadi GET dan POST ini berdiri sendiri tidak berhubungan dengan bahasa pemrograman seperti PHP dan ASP, sehingga jika kita membicarakan GET dan POST pada PHP, maka sebenarnya kita sedang membicarakan GET dan POST pada HTTP.

Dalam berkomunikasi, PHP menggunakan ptorokol HTTP (ya memang karena php merupakan bahas pemrograman berbasis web), oleh karena itu PHP juga menyediakan sarana untuk berinteraksi dengan kedua metode request tersebut yaitu: (1) menyimpan data GET dan POST dan (2) mengirim data GET dan POST.

Pada artikel kali ini kita hanya akan membahas yang nomor 1, pembahasan kali terdiri dari beberapa bagian:

  1. GET pada HTTP dan $_GET pada PHP
  2. POST pada HTTP dan $_POST pada PHP
  3. Kapan Menggunakan GET dan Kapan Menggunakan POST
  4. $_REQUEST pada PHP

Get dan Post Pada PHP dan HTTP

1. GET pada HTTP dan $_GET pada PHP

Dalam bahasa inggris kita akrab dengan istilah GETting, dari istilah tersebut dapat diartikan bahwa metode GET pada HTTP ditujukan untuk mengambil (get) data dari server.

Pada metode ini umumnya data berbentuk query string yang dikirim via url, data tersebut berupa pasangan key=value yang dipisahkan dengan tanda & . Data tersebut digabung dengan url utama yang dipisahkan dengan tanda ?

Sebelum dikirim, terlebih dahulu data diproses sehingga memenuhi standar format URL. URL hanya boleh memuat huruf (besar dan kecil), angka, dan beberapa karakter lain dalam ASCII Character Set seperti (“.-_~), karakter di luar itu akan diubah ke format tertentu yang diawali tanda % kemudian diikuti dengan 2 digit hexadesimal, contoh:

KarakterURL Encoded
? %3F
@ %40
= %3D

angka pada kolom (URL Encoded) merupakan nilai hexadecimal dari character ASCII, disamping itu URL juga tidak boleh memuat spasi, sehingga spasi akan diubah menjadi tanda + atau %20 . Semua proses tersebut disebut url encoding.

Berikut ini merupakan contoh penggunaan metode GET pada form.  Kita buat file registrasi.php dan tuliskan kode HTML berikut ini:

<html>
<body>
	<form method="GET" action="">
		<input type="text" name="nama"><br>
		<input type="text" name="email"><br>
		<input type="submit" name="submit" value="Submit">
	</form>
</body>
</html>

setelah itu simpan dan jalankan pada browser, pada field yang muncul, misal kita isikan nama: Agus Prawoto Hadi, email: , jika kita klik Submit, maka browser akan mengirim request dengan bentuk seperti gambar berikut ini:

Gambar 1. GET Pada HTTP

dari gambar diatas terlihat bahwa metode yang kita gunakan adalah GET disertai query string nya, disamping itu url pada browser juga akan berubah menjadi:

https://jagowebdev.com/?nama=Agus+Prawoto+Hadi&email=prawoto%40gmail.com&submit=submit

dari data diatas terlihat bahwa <spasi> baik pada query string maupun pada url diencode menjadi tanda + dan @ menjadi %40. Ketika kita ambil data tersebut dengan PHP maka otomatis data pada url akan didecode sehingga kita dapatkan bentuk asli dari data yang kita kirim, mari kita tambahkan kode pada file registrasi.php, sehingga menjadi:

<html>
<body>
	<form method="GET" action="">
		<input type="text" name="nama"><br>
		<input type="text" name="email"><br>
		<input type="submit" name="submit" value="Submit">
	</form>

	<?php
	if ($_GET)
	{
		echo 'Nama: ' . $_GET['nama'];
		echo '<br>';
		echo 'Email: ' . $_GET['email'];
	}
	?>
</body>
</html>

ketika kita refresh browser maka akan kita dapatkan hasil:

Nama: Agus Prawoto Hadi
Email: 

Variabel $_GET pada PHP berbentuk associative array. Variabel ini bentuknya sama seperti variabel pada umumnya, bedanya $_GET ini merupakan variabel globlal sehingga bisa diaksess dimana saja.

Karena bentuknya sama dengan yang lain, variabel ini dapat kita manipulasi sebagaimana kita memanipulasi variabel array lainnya, misal dengan menambahkan nilainya: $_GET['status'] = 'aktif' atau menghapusnya unset($_GET['nama']) 

Kelebihan dan Kekurangan

Terdapat beberapa kelebihan penggunaan metode GET, diantaranya adalah:

  1. Simpel, dan data mudah diedit, misal untuk menuju halaman 5 dari suatu website, kita tinggal mengganti urlnya.
  2. Halaman dapat dibookmark dan disimpan pada history browser sehingga mudah untuk diakses kembali.
  3. Dapat kembali ke halaman sebelumnya dengan mudah (dengan mengklik tombol Back pada browser).
  4. Dapat direfresh dengan mudah.
  5. Dapat di distribusikan/dishare.

Meskipun banyak kelebihannya, penggunaan metode ini memiliki beberpa kelemahan yaitu:

  1. Panjang data terbatas hanya 2kb – 8kb (tergantung browsernya), jika melebihi batas tersebut akan muncul pesan error 414 Request-URI Too Long, sehingga tidak dapat digunakan untuk mengirim data dalam jumlah besar.
  2. Hanya dapat mengirim data jenis teks, jenis lainnya seperti: gambar, file zip, dll tidak dapat dikirim.
  3. Karena data dikirim via URL, data tersebut mudah terekspose.

2. POST pada HTTP dan $_POST pada PHP

Kita sering mendengar istilah post, yang biasanya terkait dengan POSTing ke sosial media, dimana pada kegiatan tersebut kita mengirim data berupa tulisan atau gambar untuk disimpan di server sosial media tersebut.

Begitu juga dengan istilah POST pada HTTP, POST digunakan untuk mengirim data yang biasanya di gunakan untuk menambah/merubah data pada server.

Pada protokol HTTP, metode POST dapat dikirim baik melalui query string maupun body, seperti pada GET, data yang dikirim melalui query string akan ditampilkan pada URL dan sedangkan yang dikirim melalui body tidak terlihat oleh user.

Pada PHP, data POST yang dikirim melalui query string disimpan pada variabel $_GET (seperti metode GET) sedangkan yang dikirim melalui body disimpan pada variabel $_POST.

Sama seperti $_GET, variabel $_POST juga berbentuk associative array dan bersifat global yang artinya dapat diakses dimana saja, selain itu juga dapat dilakukan manipulasi sebagaimana variabel array lainnya.

Penggunaan metode POST sering kita jumpai terutama pada saat pengiriman data menggunakan form html. Misal: meneruskan contoh sebelumnya, pada file registrasi.php kita ganti method pada bagian form dari get menjadi post

<html>
<body>
	<form method="POST" action="">
		<input type="text" name="nama"><br>
		<input type="text" name="email"><br>
		<input type="submit" name="submit" value="submit">
	</form>

	<?php
	if ($_POST)
	{
		echo 'Nama: ' . $_POST['nama'];
		echo '<br>';
		echo 'Email: ' . $_POST['email'];
	}
	?>
</body>
</html>

misal field kita isi dengan nama: Agus Prawoto Hadi dan Email: , ketika kita klik submit, maka browser akan mengirim request ke server dengan bentu seperti gambar dibawah ini:

Gambar 2. POST Pada HTTP

dari gambar diatas terlihat data dikirim pada bagian body (kotak merah paling bawah) dan data yang dikirim diencode dengan sistem sama dengan GET (url encode) yang memang secara default cara pengiriman data pada POST adalah menggunakan application/x-www-form-urlencoded, disamping itu juga ada multipart/form-data yang digunakan untuk pengiriman data berupa file/binary.

POST yang dikirim via query string dan HTTP body

Sebelumnya telah kita singgung mengenai pengiriman POST melaui query string yang artinya akan ditampilkan pada URL.

Sering kita fahami bahwa semua yang ada di URL adalah GET, karena kita sering berinteraksi dengan variabel $_GET dan dalam praktek hal tersebut tidak pernah menjadi masalah, tidak akan ada error yang muncul.

Namun demikian sebenarnya yang terjadi tidaklah demikian, coba kita buka kembali file register.php dan kita ubah menjadi:

<html>
<body>
	<form method="POST" action="?action=edit">
		<input type="text" name="nama"><br>
		<input type="text" name="email"><br>
		<input type="submit" name="submit" value="submit">
	</form>

	<?php
	if ($_POST)
	{
		echo '<pre>'; 
		print_r($_GET);
		print_r($_POST);
	}
	?>
</body>
</html>

misal kita isi dengan data yang sama dengan contoh sebelumnya, maka ketika kita klik submit, hasil yang kita peroleh adalah:

// $_GET
Array
(
    [action] => edit
)

// $_POST
Array
(
    [nama] => Agus Prawoto Hadi
    [email] => 
    [submit] => submit
)

dan bentuk HTTP Requestnya seperti gambar dibawah ini:

Gambar 3. Query String Pada POST

dari gambar diatas terlihat bahwa metode yang kita gunakan adalah POST dan data dikirim dengan dua cara baik melalui query string maupun HTTP body. query string disimpan pada variabel $_GET dan HTTP body disimpan pada variabel $_POST

Kelebihan dan kekurangan

Pengiriman data menggunakan metode POST memiliki beberapa kelebihan diantaranya:

  1. Lebih aman dari pada metode GET karena data yang dikirim tidak terlihat, serta parameter yang dikirim tidak disimpan pada history browser/log browser.
  2. Dapat mengirim data dalam jumlah besar.
  3. Dapat mengirim berbagai jenis data seperti gambar, file, dll, tidak harus teks.

Meskipun terdapat kelebihan, penggunaan metode ini juga memiliki beberpa kelemahan, walaupun sebenarnya bukan kelemahan melainkan memang menjadi karakteristik dari metode ini:

  1. Data tidak disimpan pada history browser.
  2. Data tidak dapat dibookmark.
  3. Karena dianggap sebagai data sensitif, maka ketika kita merefresh browser, akan  muncul konfirmasi pengiriman ulang data, demikian juga ketika kita tekan tombol back.

3. Kapan Menggunakan GET dan Kapan Menggunakan POST

Untuk memutuskan apakah kita akan menggunakan metode GET atau POST, kita harus selalu mengajukan pertanyaan: apakah akan terjadi perubahan pada server? jika ya, maka kita gunakan POST, jika tidak maka kita gunakan GET.

Contohnya adalah ketika membuat pagination, kita cukup menggunakan GET tidak perlu POST, bisa dibayangkan ketika kita sudah sampai halaman 5 suatu artikel, dan kita mau membookmarknya untuk dibaca di lain waktu, dan ternyata tidak bisa karena halaman tersebut mengunakan POST, dengan terpaksa kita harus membuka halaman 1 lagi!,

Begitu juga dengan sistem pencarian seperti pada google, bisa dibayangkan jika metode yang digunakan adalah POST.

Contoh lainnya adalah penggunaan ID untuk menghapus data, perhatikan url berikut: http://www.contoh.com/user.php?action=delete&id=1, url ini akan berbahaya jika hal ini benar-benar terjadi.

Kenapa?

Karena data user akan terhapus dengan begitu mudahnya, lain halnya jika ID tersebut digunakan hanya untuk menampilkan data seperti http://www.contoh.com/user.php?action=view&id=1.

singkatnya GET untuk READ data, POST untuk CREATE, UPDATE, DELETE data.

Pertanyaan kedua adalah apakah ada data sensitif yang dikirim? jika ya maka kita gunakan POST.

Contohnya adalah pengiriman username dan password ketika login, atau data keuangan seperti kartu kredit. Jika data tersebut dikirim via url maka jelas data tersebut akan terekspose kemana-mana terutama jika ter index oleh google. (Kecuali pada penggunaan AJAX).

4. $_REQUEST pada PHP

PHP menyediakan variabel global bernama $_REQUEST, variabel ini merupakan gabungan dari tiga variabel yaitu: $_GET, $_POST dan $_COOKIE. Karakteristik variabel ini sama dengan $_GET dan $_POST yaitu berbentuk associative array yang bersifat global dan dapat kita manipulasi seperti variabel array lainnya.

Dalam pembentukan variabel $_REQUEST, variabel yang menjadi prioritas adalah $_POST, sehingga jika antara $_GET dan $_POST terdapat key yang sama, maka yang digunakan adalah data pada variabel $_POST, contoh mari kita ubah file register.php dengan menambahkan satu hidden field bernama action:

<html>
<body>
	<form method="POST" action="?action=edit">
		<input type="text" name="nama"><br>
		<input type="text" name="email"><br>
		<input type="hidden" name="action" value="insert">
		<input type="submit" name="submit" value="submit">
	</form>

	<?php
	if ($_POST)
	{
		echo '<pre>'; 
		print_r($_GET);
		print_r($_POST);
		print_r($_REQUEST);
	}
	?>
</body>
</html>

seperti pada contoh sebelumnya, kita isikan nama: Agus Prawoto Hadi dan email: , ketika kita submit maka kita dapatkan hasil:

// $_GET
Array
(
    [action] => edit
)

// $_POST
Array
(
    [nama] => Agus Prawoto Hadi
    [email] => 
    [action] => insert
    [submit] => submit
)

// $_REQUEST
Array
(
    [action] => insert
    [nama] => Agus Prawoto Hadi
    [email] => 
    [submit] => submit
)

dari contoh diatas terlihat bahwa nilai action yang digunakan adalah insert yang terdapat pada variabel $_POST

Saya pribadi jarang dan mungkin tidak pernah menggunakan variabel $_REQUEST karena akan menyulitkan dan membuat ambigu, tidak jelas dari mana datangnya data apakah dari inputan user atau dari url, terlebih jika program yang kita buat kompleks, dengan menggunakan $_GET atau $_POST masalah tersebut tidak akan terjadi.

Kesimpulan

GET dan POST merupakan metode yang digunakan protokol HTTP untuk pertukaran data.

Pada PHP, data yang dikirim menggunakan metode GET akan disimpan dalam variabel $_GET, sedangkan POST akan disimpan pada variabel $_POST (untuk data yang dikirim via  url disimpan pada variabel $_GET).

Masing masing metode memiliki kelebihan dan kekurangan dan memang sebenarnya kedua metode tersebut ditujukan untuk keperluan berbeda, sehingga kita harus tahu kapan menggunakan GET dan kapan menggunakan POST.

PHP juga menyediakan variabel $_REQUEST yang merupakan gabungan dari variabel $_GET, $_POST dan $_COOKIE. Pada variabel ini tidak terlihat dari mana datangnya data apakah dari GET atau POST sehingga sebaiknya lebih berhati hati ketika menggunakan variabel ini.

Demikian pembahasan mengenai GET dan POST pada PHP dan HTTP semoga dapat bermanfaat.

Jangan lupa beritahu sobat yang lain:

Subscibe Now

Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com

Apa itu GET dalam PHP?

Fungsi POST dan GET pada PHP adalah sama yaitu untuk menampung data atau nilai dari sebuah form atau url sebelum dimanipulasi, post dan get keduanya akan menjadi sebuah nilai dari atribut method pada php.

Apa perbedaan dari penggunaan GET dan POST dalam PHP?

Form pada PHP mempunyai dua method pengiriman data, yaitu GET dan POST. Dengan menggunakan method GET, maka nilai variabel yang dikirimkan ke server melalui url pada address bar browser. Sedangkan method POST akan mengirimkan nilai variabel ke server secara terpisah, sehingga nilai variabelnya tidak terlihat.

Apa fungsi dari GET dan POST?

Pada hakikatnya, kedua method ini yaitu POST dan GET memiliki fungsi yang sama yaitu untuk mengirimkan nilai (value) variabel ke file lain yang telah diatur oleh sang programmer. Sebenarnya tidak hanya mengirimkan value variabel ke file lain saja, bisa saja mengirimkannya ke database.

Apa perbedaan metode GET dan POST pada passing variabel menggunakan form?

Method POST akan mengirimkan data atau nilai langsung ke action untuk ditampung, tanpa menampilkan pada URL. Sedangkan method GET akan menampilkan data/nilai pada URL, kemudian akan ditampung oleh action. 2. Method POST menggunakan variable $_POST untuk menampung data/nilai.