post method dan get method PHP

Tutorial ini merupakan lanjutan dari tutorial form HTML.

Setelah web form HTML mengumpulkan data dari user maka data tersebut akan dikirimkan menuju ke sebuah file PHP untuk diproses dan disimpan.

Pada web form HTML, atribut action berguna untuk menentukan tempat penyimpanan data dan atribut method berguna untuk menentukan cara mengirim data dari web form HTML menuju file penyimpanan data.

Ada dua jenis atribut method yaitu post method dan get method.

post method

Berikut ini adalah contoh web form HTML yang menggunakan post method:

Bayangkan bahwa kita memiliki sebuah toko alat tulis yang menjual pulpen, pensil, dan penghapus. Untuk mengumpulkan data pesanan dari pembeli kita akan menggunakan sebuah web form HTML.

Pertama kita akan membuat web form HTML. Form ini akan berisi daftar pilihan barang yang akan dipesan oleh pembeli. Form ini akan kita simpan dalam sebuah file bernama [order.html].

Isi file order.html 1:

<h4>Form pemesanan barang di bangjuju</h4>
<form action="proses.php" method="post">
    <select name="nama_barang">
        <option>Pulpen</option>
        <option>Pensil</option>
        <option>Penghapus</option>
    </select>
    Jumlah: <input name="jumlah" type="text" />
    <input type="submit" value="Submit" />
</form>

Hasil isi file order.html 1:

Form pemesanan barang di bangjuju

Jumlah:


Setelah user menekan tombol submit di atas maka informasi dari user akan disimpan di dalam file [proses.php] menggunakan post method.

Dengan post method ini maka data akan disimpan di dalam sebuah associative array bernama $_POST. $_POST adalah sebuah superglobal yang berguna untuk menyimpan data yang dikirimkan oleh web form HTML menggunakan post method.

Perhatikan pada code [name="jumlah"]. Atribut [name] akan menjadi [key] pada associative array $_POST. Sedangkan data yang diberikan oleh user tersimpan dalam bentuk value pada associative array $_POST.

Untuk menampilkan data yang tersimpan di dalam associative array $_POST, gunakan code echo.

Berikut ini adalah isi file proses.PHP:

Isi file proses.php 1:

<?php
echo "Anda membeli ". $_POST['jumlah'] . " " . $_POST['nama_barang'] . ".<br />";
echo "Barang yang sudah dibeli tidak bisa dikembalikan!";
?>

Pada file [proses.php] di atas, data [jumlah] tersimpan dalam associative array $_POST['jumlah']. Sedangkan data [nama_barang] tersimpan dalam associative array $_POST['nama_barang'].

Jika user memilih barang berupa [Pulpen] dengan jumlah [3] maka data yang akan muncul pada file [proses.php] adalah seperti berikut ini.

Hasil isi file proses.php 1:

Anda membeli 3 Pulpen.
Barang yang sudah dibeli tidak bisa dikembalikan!

Keuntungan dan kerugian menggunakan post method yaitu:

  • Lebih cocok digunakan untuk data-data rahasia seperti password.
  • Bisa digunakan untuk mengirimkan data berupa text maupun file.
  • Batasan data yang dikirimkan lebih banyak daripada get method.

get method

Alternative lainnya selain post method adalah get method. Perhatikan contoh pemakaian get method di bawah ini.

Isi file order.html 2:

<h4>Form pemesanan barang di bangjuju</h4>
<form action="proses.php" method="get">
    <select name="nama_barang">
        <option>Pulpen</option>
        <option>Pensil</option>
        <option>Penghapus</option>
    </select>
    Jumlah: <input name="jumlah" type="text" />
    <input type="submit" value="Submit" />
</form>

Pada get method, data dikirimkan melalui URL sehingga saat user menekan tombol submit maka pada URL akan ada tambahan seperti dibawah ini:

?name1=value1&name2=value2&name3=value3

Berdasarkan form di atas, maka pada URL akan tampak seperti berikut ini:

http://www.bangjuju.com/order.html?nama_barang=Pulpen&jumlah=2

Dengan get method maka data akan disimpan di dalam sebuah associative array bernama $_GET. $_GET adalah sebuah superglobal yang berguna untuk menyimpan data yang dikirimkan oleh web form HTML menggunakan get method.

Perhatikan pada code [name="jumlah"]. Atribut [name] akan menjadi [key] pada associative array $_GET. Sedangkan data yang diberikan oleh user tersimpan dalam bentuk value pada associative array $_GET.

Untuk menampilkan data yang tersimpan di dalam associative array $_GET, gunakan code echo.

Berikut ini adalah isi file proses.PHP:

Isi file proses.php 2:

<?php
echo "Anda membeli ". $_GET['jumlah'] . " " . $_GET['nama_barang'] . ".<br />";
echo "Barang yang sudah dibeli tidak bisa dikembalikan!";
?>

Keuntungan dan kerugian menggunakan get method yaitu:

  • Karena data dikirimkan melalui URL maka memungkinkan URL yang mengirimkan data tersebut untuk dibookmark. Sehingga memungkinkan untuk mengirimkan data yang sama berulang-ulang melalui URL yang dibookmark tersebut.
  • get method tidak cocok digunakan untuk mengirimkan data-data rahasia seperti password karena data tersebut akan terlihat pada URL dan juga tersimpan di dalam browser history.
  • Karena jumlah character yang bisa digunakan pada URL terbatas menyebabkan data yang dikirimkan mengggunakan get method juga terbatas.

$_REQUEST

$_REQUEST adalah sebuah superglobal yang menyimpan data $_POST, $_GET dan $_COOKIE.

$_REQUEST bisa dimanfaatkan untuk menampilkan data yang tersimpan dalam $_POST maupun $_GET. Perhatikan contoh berikut ini:

Isi file order.html 3:

<h4>Form pemesanan barang di bangjuju</h4>
<form action="proses.php" method="get">
    <select name="nama_barang">
        <option>Pulpen</option>
        <option>Pensil</option>
        <option>Penghapus</option>
    </select>
    Jumlah: <input name="jumlah" type="text" />
<input type="submit" value="Submit" />
</form>

Isi file proses.php 3:

<?php
echo "Anda membeli ". $_REQUEST['jumlah'] . " " . $_REQUEST['nama_barang'] . ".<br />";
echo "Barang yang sudah dibeli tidak bisa dikembalikan!";
?>

Pada contoh di atas walaupun data dikirimkan menggunakan get method namun data tersebut bisa ditampilkan menggunakan $_REQUEST.

Salah satu kelemahan $_REQUEST adalah tidak bisa membedakan data yang ada merupakan data yang berasal dari $_POST, $_GET maupun $_COOKIE sehingga $_REQUEST memiliki kerentanan dalam hal keamanan.

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>