ARI JULIANTO Network www.arijulianto.com

Oleh | PHP | | Dibaca 17.066 kali | 0 komentar

Bahasan lebih mendalam mengenai $_POST dan $_GET insya Allah akan saya bahas disini. Seperti telah kita ketahui dalam bahasan HTTP POST dan HTTP GET di bahasan Predefined Variabel dulu.

Mengenai $_POST dan $_GET ini bahasan yang paling lekat dan paling berhubungan adalah PROSES FORM dan QUERY STRING karena pada dasarnya $_POST dan $_GET ini emang dihasilkan dari sana.

Memproses Data yang Dikirim Form

Input FormPernahkah temen2 terpikirkan akan sebuah input form: "Dikirim kemana data yang kita inputkan itu?". Sedikit bercerita nih sejarah saya dulu. Masih ingat pengalaman saya pribadi akan motivasi untuk belajar PHP. Ketika itu saya melihat sebuah halaman buku tamu. Di atasnya saya bisa lihat kiriman2 orang lain sebelum-sebelumnya. Saat itu saya baru paham tentang HTML. Kalo gak salah saya masih kelas 2 SMA. Buku tamu yang saya lihat adalah di situs okezone.com dan indowebster.com. Saya sempat kebingungan dengan sistem pemrosesan datanya. Ko bisa ya HTML menyimpan data yang dikirim user kemudian ditampilkan lagi di halaman HTML itu juga. Google pun jadi andalan saya hingga kurang lebih seminggu kemudian ditemukanlah jawabannya. "Database". Ya database lah yang menampung data-data yang dikirim itu. Namun saya masih saja bingung, bagaimana pengiriman data itu bisa ditransfer ke database. Jawaban awal yang saya temukan adalah JSP (Java Servlet Page) dan ASP.

Beberapa minggu kemudian saya menemukn jawabannya: PHP. Browsing deh saya dengan keyword 'membuat buku tamu dengan PHP' di Google. Sejak saat itulah saya mulai belajar mendalami PHP. Yap itulah sepotong kisah saya menggeluti PHP, dan sekarang saya akan mencoba berbagi apa yang saya dapatkan di ARI JULIANTO Network ini.

Proses pengrimian data dari form dapat dilakukan melalui 2 metode yaitu POST (transfer sebagai HTTP POST) dan GET (transfer sebagai HTTP GET).

1. Pengiriman Data dengan metode HTTP POST

Menurut hemat saya pengiriman data melalui metode POST ini merupakan salah satu metode sederhana yang relatif aman dilakukan. Ya saya katakan demikian karena data-data yang dikirim di sebuah form tidak bisa langsung bisa dilihat dan dibaca oleh user. Metode seperti ini banyak dilakukan pada halaman login, proses input dan edit data, juga beberapa proses yang memerlukan input atau komponen relatif cukup banyak seperti form registrasi.

Untuk mengecek sebuah input yang dikirim melalui metode POST bisa kita gunakan fungsi isset(). Perlu diinformasikan, jika input form berupa input text oleh user maka isset() ini berfungsi sebagai pengecek isi inputnya, sedangkan bila inputnya berupa tombol submit, maka isset() ini berfungsi sebagai pengecek bahwa tombol telah ditekan atau di klik. Tapi ingat, dalam sebuah input text form, meskipun isinya hanya satu spasi tanpa teks tetap dianggap input text itu tidak kosong, nah saya punya sedikit trik untuk mengakali input kosong atau hanya berupa spasi tersebut, yakni dengan menambahkn fungsi trim(). Tujuannya adalah menghapus spasi yang ada di kiri dan kanan input dalam sebuah input teks di form. Contohnya bisa dilihat seperti di bawah.

<form action="" method="post">
Nama: <input type="text" name="nama" size=30 /><br />
Kota: <input type="text" name="kota" size=30 /><br />
<input type="submit" name="kirim" value="Kirim Data" />
</form>
<?php
if(isset($_POST['kirim']) && isset(trim($_POST['nama'])) && isset(trim($_POST['kota']))){
  echo "Hallo $_POST[nama], Anda berasal dari kota $_POST[kota]...";
}
?>

2. Pengiriman Data dengan Metode HTTP GET

Cara ini berbeda dengan cara di atas, hanya saja sumber pengiriman datanya adalah sama, yakni dari input form. Metode ini banyak dimanfaatkan untuk halaman pencarian atau situs berbasis menu atau model dengan kunci query string. Kalau kita menggunakan metode GET pada proses pengiriman form, maka data yang diinputkan bisa langsus terbaca oleh user, namun tampilannya tidak berupa teks seutuhnya melainkan otomatis terformat URL Encode. Data-data yang diencode ini tidak semuanya, melainkan hanya untuk karakter-karakter tertentu seperti spasi dan karakter khusus seperti <>/& dan lain-lain. Perhatikanlah contoh berikut (kita gunakan lagi code contoh di atas, hanya rubah method jadi post)!

<form action="" method="get">
Nama: <input type="text" name="nama" size=30 /><br />
Kota: <input type="text" name="kota" size=30 /><br />
<input type="submit" name="kirim" value="Kirim Data" />
</form>

Setelah tombol Kirim Data diklik maka URL akan berubah menjadi kira-kira seperti ini

URL post form dengan method GET

Menerima Data yang Dikirim Dari Form

Untuk menerima data yang dikirim dari form cara mengambilnya cukup sederhana. Yang perlu kita ketahui adalah telah dijelaskan di atas, yakni tau dulu method pengiriman form. Bila kita menggunakan method "post", maka data yang dikirm dari form bisa diambil dan dipanggil dengan format $_POST[nama_input_form]. Begitu juga dengan method "get" cukup dipanggil dengan $_GET[nama_input_form]. Contoh: echo $_POST[nama];

NB:
Mengenai metode pengiriman dengan form ini ada yang ungin saya sampaikan buat sahabat AJN semuanya. di tag <form kita perlu menambahkan attribut action dengan format <form method="post|get" action="namafiletujuan">. Bila kita TIDAK MENGISI attribut action itu artinya file tujuan (halaman proses dari input form) akan diproses di file yang sama dengan file form

Apakah Bisa Mendeteksi Bahwa ada Data yang Dikirim Melalui Form, Atau Mendeteksi Ada tombol Submit yang Ditekan?

Menjawab sub judul ini saya pastikan dulu bahwa PHP mampu mendeteksi bahwa ada data yang dikirim melalui form, bahkan bisa juga memvalidasinya apakah inputannya sudah diisi atau belum. Oke yang akan pertama di bahas adalah mendeteksi submit dengan metode POST. Yuk kita pelajari dari contoh script di bawah ini. Oya saya akan mencoba mengambil ulang script sampel yang ada di akhir tutorial pas pembahasan if, if else, if elseif dan switch di PHP

<h1>Cek Nilai (Lulus atau Tidak)</h1>
<form action="" method="post">
Nilai: <input type="text" name="nilai" /> <input type="submit" name="cek" value="Lihat Hasil" />
</form>

<?php
$nilai_lulus = 70; // nilai batas minimum
if($_SERVER['REQUEST_METHOD']=="POST"){ // cek bahwa ada form (method POST) yang disubmit
if($_POST['nilai']>=$nilai_lulus){
echo "Selamat, Anda LULUS...";
}else{
echo "Maaf, nilai Anda masuh kurang. Batas kelulusan $nilai_lulus...";
}
}
?>

Script di atas kuncinya berada di $_SERVER['REQUEST_METHOD']. Dengan superglobal variabel tersebut kita akan mengetahui apa metode rekues yang dilakukan user, apakah dengan GET (biasa-biasa tanpa submit apa-pa, atau dengan submit form: POST atau GET). Namun teknik ini memiliki kelemahan, yakni akan menganggap ada data yang dikirim tanpa mengetahui dulu apa dan dari mana inputan-inputan form yang dibutuhkannya, karena yang dilakukan hanyalah mengecek bahwa ada rekues -- baik dengan GET maupun POST --. Untuk memastikan dan mengecek bahwa form yang dikirim adalah form yang sesuai dengan keinginan maka kita bisa menambahkan pengecekan nama tombol yang ditekannya, sehingga pengecekannya menjadi seperti berikut

if($_SERVER['REQUEST_METHOD']=="POST" && isset($_POST['namaInputSubmit'])){

Jadi, setiap input submit akan memeriksa dulu nama tombol submit yang ditekannya sehingga kecil kemungkinan ada submit data yang nyasar. Teknik ini dipakai pada script yang memisahkan file tampil data, tambah/edit dan proses simpan, tepatnya di file proses simpan yang prosesnya akan dilakukan jika terdeteksi ada form yang disubmit