Pengiriman Variabel dari Form
Pengiriman Variabel dari Form
Penulis : Wiwid Lukiyanto
E-mail : wiwid-l@centrin.net.id
URL : http://www.wiwid-l.net
"
Dalam tutorial ini file-file yang saya buat, saya letakkan di dalam folder D:\Apache\htdocs\coba dan dipanggil dari browser pada alamat http://localhost/coba. Silakan sesuaikan dengan kondisi di komputer Anda.
Form mempunyai arti yang sangat penting dalam dunia website. Dari form inilah user dapat memasukkan input. Dari input yang dimasukkan oleh user ini, informasi yang telah didapat akan ditampilkan di layar monitor, dimasukkan ke database, atau hal-hal lainnya. Dalam artikel ini, diharapkan Anda sudah mengerti cara pembuatan form pada dokumen HTML. Di sini akan diterangkan bagaimana mengirimkan isi form untuk diproses oleh script PHP.
Kita mulai saja. Misalnya ada sebuah file HTML dengan isi sebagai berikut:
d>
/>
Umur : type="text" name="umur">
orm>
y>
Dari script di atas, terlihat bahwa form yang digunakan menggunakan method POST (perhatikan teks method="post"). Ada dua jenis method yang dapat digunakan pada suatu form, yaitu GET atau POST. Baiklah, akan kita bahas keduanya satu per satu.
Pengiriman Variabel dari Form dengan Method GET
Secara garis besar, pengiriman variabel dari form bisa ditujukan kepada dua tujuan utama, yaitu ditujukan ke file lain atau ditujukan ke file itu sendiri. Saya lebih senang dengan merujuk ke file itu sendiri. Karena dengan merujuk ke file itu sendiri tidak banyak nama file yang digunakan dan menghindari kebingungan. Untuk merujuk ke file lainnya, bisa dibuat seperti ini.
d>
Masukkan Nomor Induk Mahasiswa (NIM) Anda
/>
NIM : type="text" name="nim"> <br />
<input type="submit" name="submit" value="Kirim">
orm>
y>
l>
Sedangkan untuk yang ditujukan ke file itu sendiri adalah seperti di bawah ini (simpan dengan nama formget.php):
d>
Masukkan Nomor Induk Mahasiswa (NIM) Anda
/> NIM : type="text" name="nim"> <br />
<input type="submit" name="submit" value="Kirim">
orm>
y>
l>
Namun, karena seperti telah saya bahas sebelumnya, bahwa saya lebih senang menggunakan nama file yang sama, maka untuk selanjutnya penjelasan yang digunakan hanya untuk action yang merujuk pada nama file yang sama
Pada cara yang kedua, action=”<?php echo $_SERVER['PHP_SELF']; ?> maksudnya adalah tujuan pengiriman form adalah kepada file itu sendiri (formget.php). Jika Anda jalankan pada browser dan melihat source code HTML-nya, Anda akan mendapati bahwa
method=”get” action=” echo $_SERVER['PHP_SELF']; ?>”> telah berubah menjadi method=”get” action=”/coba/formget.php”>. Lalu, untuk apa jika hanya dikirimkan ke file itu sendiri? Tenang, ini belum selesai ☺. Berikutnya tambahkan sedikit (bagian yang ditambahkan ditebalkan) isi file formget.php tersebut sehingga menjadi seperti di bawah ini:
d>
if (isset($_GET['kirim'])) {
echo "NIM yang Anda masukkan adalah ".$_GET['nim'];
echo "
/>\n";
}
?>
/>
NIM : type="text" name="nim"> <br />
<input type="submit" name="kirim" value="Kirimkan">
orm>
y>
l>
Jika script di atas ini dijalankan, Akan muncul form yang meminta Anda untuk memasukkan NIM Anda. Kenapa teks NIM yang Anda masukkan adalah tidak muncul? Hal ini dikarenakan variable yang bernama kirim belum ada. Pada form terdapat dua variabel yang akan dikirimkan, yaitu nim dan kirim. Fungsi isset() akan bernilai true jika variabel kirim ini sudah dikirimkan.
Gambar 1
Form menggunakan method GET
Karena method yang Anda gunakan pada penggunaan form adalah GET, maka digunakanlah superglobal variable $_GET. Sintaksnya yaitu $_GET[‘var’], sehingga pada contoh ini menjadi isset($_GET[‘kirim’]). Sebenarnya Anda juga bisa menggunakan isset($kirim) saat kondisi register globals bernilai on, namun secara default, sejak PHP
4.1.2 nilai register globals bernilai off, karena memang cara ini sangat tidak disarankan
(karena masalah security). Untuk lebih jelasnya mengenai hal ini, silakan lihat artikel saya yang membahas register globals.
Fungsi isset() digunakan untuk mengecek apakah suatu variable ada (sudah diset) atau tidak ada (belum diset). Oleh karena itu baris perintah if (isset($_GET[‘kirim’])) berarti akan mengecek apakah variabel kirim sudah di-set atau belum. Karena pada saat ini variabel $_GET[‘kirim’] belum ada, maka script yang ada di dalam if tidak akan dijalankan, dan program akan meloncat ke baris berikutnya di luar lingkup if.
Sekarang masukkan NIM Anda, misalnya 12345678. Selanjutnya klik tombol Kirim. Hasilnya terlihat seperti pada Gambar 2.
Gambar 2
Pengiriman variabel dengan method GET
Hasilnya, tampil teks NIM yang Anda masukkan adalah 12345678, dan diikuti dengan form untuk memasukkan NIM lagi. Kenapa form ini masih ada? Karena memang tidak ada keadaan yang membuat form ini menghilang. Jika Anda ingin membuat agar form ini tidak terlihat setelah nilai NIM dimasukkan, ketikkan seperti berikut:
d>
if (isset($_GET['kirim'])) {
echo "NIM yang Anda masukkan adalah ".$_GET['nim'];
echo "
/>\n";
} else {
?>
/>
NIM : type="text" name="nim"> <br />
<input type="submit" name="kirim" value="Kirimkan">
orm>
}
?>
y>
l>
Jangan bingung dengan keberadaan satu tanda } di bagian paling bawah. Tanda ini digunakan untuk menutup else. Dengan cara ini, maka setelah Anda memasukkan nilai NIM, form akan hilang. Tapi karena ini hanya contoh, saya biarkan saja form ini tetap Anda agar Anda bisa mencoba lagi.
Saat Anda melihat teks NIM yang Anda masukkan adalah 12345678 sudah tampil, perhatikan address bar pada browser Anda (tempat Anda mengetikkan http://). Di sana akan terlihat alamat http://localhost/coba/formget.php?nim=12345678&kirim=Kirimkan. Dapat Anda lihat, bahwa dengan menggunakan method GET, nama dan isi variabel akan terlihat di address bar dengan format namafile?nama_var1=isi_var&nama_var2=isi_var2.
Perhatikan, antar namafile dengan variabel diberikan tanda ?, isi didefinisikan dengan tanda
Karakter URL Enc. ( %28 ) %29 + %2B , %2C . %2E / %2F : %3A
=, dan untuk memisahkan antara dua variabel digunakan tanda &.
Karakter URL Enc. ; %3B < %3C = %3D > %3E ? %3F @ %40 \ %5C
Lalu bagaimana jika ada spasi pada isi variabelnya? Jika terdapat karakter khusus seperti spasi, maka gunakanlah URL encoding padanannya seperti tabel di bawah ini:
Karakter | URL Encoding |
Tab | %09 |
Spasi | %20 atau + |
! | %21 |
" | %22 |
# | %23 |
% | %25 |
& | %26 |
Tabel 1
URL Encoding
Sebagai contoh, misalkan Anda menuliskan NIM sebagai 1234 5678, maka pada address bar akan tertulis http://localhost/coba/formget.php?nim=1234+5678&kirim=Kirimkan, atau bisa juga dituliskan dengan menggunakan URL encoding %20 seperti berikut: http://localhost/coba/formget.php?nim=1234%205678&kirim=Kirimkan.
Dengan melihat address bar ini, mungkin Anda bertanya, "Apakah kita bisa langsung memasukkan isi variabel dari address bar tanpa harus lewat form?" Jawabannya BISA. Itulah kelebihan method GET. Karena dengan method GET ini mengubah isi address bar yang sebelumnya hanya memiliki alamat yang pendek (http://localhost/formget.php) menjadi http://localhost/formget.php?nim=12345678&kirim=Kirimkan, berarti kita juga bisa mengetikkan langsung dari address bar dan juga menyimpan alamatnya di bookmark atau favorites browser kita.
Sebagai catatan, karena untuk method GET kita bisa menggantikan penggunaan form dengan pengetikan variabel yang diinginkan langsung dari address bar, justru jarang sekali form yang meminta masukan dari pemakai dengan menggunakan method GET. Kebanyakan justru untuk mengambil suatu bagian pada database. Misalnya mungkin Anda pernah menemui penggunaan seperti http://localhost/news.php?id=354. Dengan cara ini, maka berita dengan nomor ID 354 akan diambil dari database dan ditampilkan di halaman news.php.
Ada kelebihan biasanya tentu saja ada kekurangannya. Address bar browser hanya dapat dimuati maksimal sebanyak 255 karakter. Jika lebih, maka karakter selebihnya akan dibuang. Jadi sebaiknya nama variabel yang digunakan pendek saja, dan isi variabelnya juga pendek. Perhatikanlah bahwa situs-situs search engine menerapkan cara dengan menggunakan method GET ini agar hasil searching yang telah Anda lakukan dapat disimpan di bookmark atau favorites.
Gambar 3
Contoh penggunaan method GET pada salah satu situs search engine
Pengiriman Variabel dari Form dengan Method POST
Karena method GET mengirimkan informasi nama dan isi variabel ke address bar bar, tentu ada kekurangannya. Misalnya saja, tentunya kita tidak ingin informasi yang bersifat rahasia (seperti password yang kita ketikkan dan tampil sebagai tanda asterisk di form) bisa terlihat dengan jelas di address bar. Selain itu tentunya kita juga ingin agar informasi yang dikirimkan tidak terbatas sebanyak 255 karakter saja (itupun masih dikurangi karakter seperti http://, nama file, dll). Untuk hal ini digunakanlah method POST. Untuk menggunakan method POST, ketikkan script di bawah ini dan namai dengan formpost.php.
d>
if (isset($_POST['kirim'])) {
echo "NIM yang Anda masukkan adalah ".$_GET['nim'];
echo "
/>\n";
}
?>
/>
NIM : type="text" name="nim"> <br />
<input type="submit" name="kirim" value="Kirimkan">
orm>
y>
l>
Gambar 3
Form menggunakan method POST
Script di atas ini mirip dengan script sebelumnya. Perbedaannya adalah yang tadinya GET diubah menjadi POST. Saat pertama kali Anda menjalankan script ini akan ditampilkjan suatu halaman yang menanyakan NIM Anda. Masukkan NIM Anda (misalnya 12345678) dan tekan tombol Kirimkan. Selanjutnya akan keluar teks: NIM yang Anda masukkan adalah
12345678. Perhatikan address bar. Akan terlihat bahwa alamat yang ada di sana tetap sama, yaitu http://localhost/formpost.php.
Gambar 4
Pengiriman variabel dengan method POST
Di sini digunakan superglobal variable $_POST karena method yang digunakan adalah POST. Formatnya mirip dengan $_GET, yaitu $_POST['var']. Dengan menggunakan cara ini, jika Anda memasukkan variabel dengan method GET (misalnya dengan mengetikkan http://localhost/coba/formget.php?nim=12345678&kirim=Kirimkan dari address bar), tidak akan tampil tulisan NIM yang Anda masukkan adalah 12345678, karena yang ada (sudah di-set dari address bar) hanyalah variabel kirim yang dikirimkan dengan method GET, yaitu $_GET['kirim'], bukan variabel kirim yang dikirimkan dengan method POST, yaitu $_POST['kirim'].
Dari sini terlihat bahwa dengan menggunakan method POST informasi yang kita kirimkan tidak akan tampil di address bar, tapi langsung masuk ke script yang dituju saja (dalam hal ini adalah file itu sendiri). Dan karena variabel yang dimasukkan tidak tampil di address bar, kita tidak bisa mem-bookmark tampilan yang sudah kita dapatkan ini, karena jika di-bookmark maka tampilan yang akan kita dapatkan adalah tampilan saat ada permintaan pengisian form.
Menampilkan isi $_GET dan $_POST
Anda sudah tahu bahwa dengan mengetikkan echo $_GET['nim'];, maka akan tampil isi variabel nim yang dikirimkan dari form. Mungkin suatu saat Anda perlu mengetahui variabel-variabel apa saja yang dikirimkan dari suatu form, baik dengan method GET ataupun POST. Sebagai contoh, edit sedikit script formget.php seperti di bawah ini:
d>
if (isset($_GET['kirim'])) { echo ""; print_r($_GET);
echo "";
}
?>
Masukkan Nomor Induk Mahasiswa (NIM) Anda
/>
NIM : type="text" name="nim"> <br />
<input type="submit" name="kirim" value="Kirimkan">
orm>
y>
l>
Akan keluar tampilan seperti di bawah ini:
Gambar 5
Menggunakan print_r untuk mengetahui isi $_GET
Terlihat bahwa variabel $_GET merupakan variabel array yang memiliki nilai key dan value seperfti terlihat di atas. Fungsi print_r() digunakan untuk menampilkan isi suatu array. Namun agar tampilannya tepat seperti di atas, keluarannya harus dituliskan dalam bentuk plain text, oleh karena itu diperlukan tag r
Kesimpulan
Ada dua method yang dapat digunakan untuk mengirimkan isi form, yaitu GET dan POST. Berikut ini perbedaan GET dan POST.
GET | POST |
Hanya dapat menampung nama variabel dan value yang sedikit. | Dapat menampung nama variabel dan value yang banyak. |
Alamat URL yang dihasilkan dari pengiriman dengan GET dapat disimpan pada bookmark/favorites browser. | Alamat URL yang dihasilkan dari pengiriman dengan POST tidak dapat disimpan pada bookmark/favorites browser. |
Tabel 2
Perbedaan method GET dan POST
0 komentar for this post
Leave a reply