Belajar PHP & MySQL #4: Menangkap Data Form HTML
Heru Iryanto
Teacher, Content Creator and Full-Stack DeveloperDi materi ini, kita resmi membuat aplikasi hidup yang bisa berinteraksi dengan dunia luar.
Katakanlah kita memiliki file index.html (Atau bisa juga bereksistensi .php) yang berisi formulir pencarian.
Pernahkah Anda bertanya-tanya, bagaimana cara si kotak input teks (<input>) ini memberikan isinya kepada mesin server? Jawabannya ada pada 2 (dua) buah atribut sakti di dalam tag <form> HTML.
1️⃣ Anatomi Pengirim Data (Form HTML)
Sekarang buat file form.html di folder belajar_php/cari/, lalu ketikkan kode berikut ini:
<!-- Atribut ACTION: "Ke file mana paket data ini harus saya kirimkan/lempar?" -->
<!-- Atribut METHOD: "Bagaimana cara pengirimannya? Terbuka (GET) atau Tersembunyi (POST)?" -->
<form action="proses_cari.php" method="GET">
<label>Cari Nama Barang:</label>
<!-- Atribut NAME sangat fatal! Ini akan menjadi "Label Label/ID" bagi PHP nanti. -->
<input type="text" name="kata_kunci">
<button type="submit">Mulai Cari</button>
</form>
Buka http://localhost/belajar_php/cari/form.html di browser Anda, lalu ketikkan “Sepatu” pada kotak input dan tekan tombol “Mulai Cari”. Saat ini file proses_cari.php belum ada, sehingga akan terjadi error 404 atau Not Found.
Analisis:
Saat pengunjung mengetikkan tulisan “Sepatu” lalu memencet tombol Submit, HTML akan segera mengemas tulisan “Sepatu” tersebut, memberinya tempelan stiker pengiriman bertuliskan kata_kunci, lalu melemparkannya jauh ke udara menuju file tujuan bernama proses_cari.php. Karena file proses_cari.php belum ada, maka akan terjadi error 404 atau Not Found.
2️⃣ Variabel SuperGlobal: $_GET (Metode Terbuka)
Sekarang, kita harus membuat jaring penangkap di pihak Server (PHP).
Buatlah file tujuan bernama proses_cari.php di folder yang sama.
Karena formulir HTML di atas menggunakan method="GET", maka PHP harus menyiapkan jaring penangkap khusus bernama variabel superglobal $_GET.
<?php
// Isi $_GET['...'] HARUS SAMA PERSIS dengan atribut 'name' di form HTML tadi!
$barang_yang_dicari = $_GET['kata_kunci'];
echo "Anda sedang mencari barang dengan nama: " . $barang_yang_dicari;
?>
Rahasia Metode GET (Perhatikan URL Browser Anda!):
Sekarang coba buka kembali http://localhost/belajar_php/cari/form.html dan masukkan “Buku” lalu tekan tombol “Mulai Cari”. Saat PHP memproses file ini, coba lihat kotak alamat URL browser Anda di atas. URL-nya akan berubah menjadi panjang seperti ini: http://localhost/cari/proses_cari.php?kata_kunci=Buku. Jika tidak muncul tulisan error 404, itu artinya PHP berhasil menangkap data yang dikirimkan oleh HTML. Harusnya sekarang muncul tulisan “Anda sedang mencari barang dengan nama: Buku”.
[!WARNING] Metode GET sangat membahayakan keamanan jika Anda menggunakannya untuk Form Login. Bayangkan Anda mengetikkan Password, lalu Password tersebut terpampang jelas di URL
http://localhost/login.php?pass=Rahas1aKudan bisa dibaca oleh teman yang kebetulan melihat layar laptop Anda! Metode GET HANYA DIGUNAKAN untuk fitur Pencarian (Search) karena URL-nya bisa dibagikan (Copy-Paste) ke teman.
3️⃣ Variabel SuperGlobal: $_POST (Metode Tersembunyi Rahasia)
Lalu, metode apa yang digunakan oleh Form Login, Form Register, atau Pengiriman Uang? Jawabannya adalah metode POST.
Mari kita buat form baru login.html di folder belajar_php/login/:
<form action="proses_login.php" method="POST">
<input type="text" name="username_login" placeholder="Ketik Username">
<input type="password" name="password_login" placeholder="Ketik Sandi">
<button type="submit">Masuk</button>
</form>
Dan ini adalah file penangkap saktinya (proses_login.php):
<?php
// PHP menangkapnya menggunakan jaring rahasia $_POST
$user = $_POST['username_login'];
$pass = $_POST['password_login'];
// Menggabungkan logika If/Else dari Bab 3!
if ($user == "admin" && $pass == "12345") {
echo "Selamat datang, Tuan Admin!";
} else {
echo "Login Gagal! Siapa Anda?!";
}
?>
Coba eksekusi kodingan ini dengan membuka browser Anda http://localhost/belajar_php/login/login.html. Setelah Anda memasukkan Username dan Password, lalu menekan tombol Masuk, Anda akan menyadari bahwa URL di browser Anda akan tetap bersih (http://localhost/login/proses_login.php), tidak ada embel-embel teks apa pun di ujungnya. Datanya dikirim oleh browser melalui jalur bawah tanah (HTTP Body Payload) yang tidak terlihat oleh mata telanjang!
🗽 Kesimpulan
Jika Anda merasa kepanasan karena terlalu banyak berpikir, istirahatlah sejenak. Menyerap logika lempar-tangkap Data antara HTML -> METHOD -> PHP ini adalah transisi kognitif tersulit bagi seorang calon Full-Stack Developer.
Ketika Anda sudah paham bahwa setiap input ketikan pengguna HTML bisa diselundupkan dan ditampung ke dalam Variabel Kardus ($user) di PHP…
Lalu, mau dikemanakan data tersebut?
Di sinilah letak Jembatan Emas Kedua: Menghubungkan PHP dan Database. Mari kita sambungkan pipa data ini ke sarang MySQL di materi berikutnya, yaitu Koneksi PHP ke MySQL.
