Tutorial PHP #13: Form Handling dengan Method GET dan POST
1. Apa itu Form Handling?
Form handling adalah proses menerima dan mengolah data yang dikirim user melalui form HTML. PHP menyediakan superglobal $_GET dan $_POST untuk mengakses data tersebut.
2. Method GET
Data dikirim melalui URL - terlihat di address bar browser.
<!-- form-get.html -->
<form method="GET" action="proses.php">
<input type="text" name="nama" placeholder="Masukkan nama">
<input type="text" name="kota" placeholder="Masukkan kota">
<button type="submit">Kirim</button>
</form>
<!-- URL setelah submit: proses.php?nama=Ariq&kota=Semarang -->
<?php
// proses.php
if (isset($_GET["nama"]) && isset($_GET["kota"])) {
$nama = $_GET["nama"];
$kota = $_GET["kota"];
echo "Halo $nama dari $kota!";
}
?>
Kapan pakai GET: pencarian, filter, pagination - data yang aman ditampilkan di URL dan bisa di-bookmark.
3. Method POST
Data dikirim melalui body request - tidak terlihat di URL.
<!-- form-post.html -->
<form method="POST" action="proses.php">
<label>Username:</label>
<input type="text" name="username">
<label>Password:</label>
<input type="password" name="password">
<button type="submit">Login</button>
</form>
<?php
// proses.php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$username = $_POST["username"];
$password = $_POST["password"];
echo "Login sebagai: $username";
}
?>
Kapan pakai POST: login, register, submit form, upload file - data sensitif atau besar yang tidak boleh muncul di URL.
4. Form di File yang Sama
Sering lebih praktis menaruh form dan proses di file yang sama:
<?php
$pesan = "";
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$nama = $_POST["nama"] ?? "";
$pesan = "Halo, $nama! Form berhasil dikirim.";
}
?>
<!DOCTYPE html>
<html>
<body>
<?php if ($pesan): ?>
<p style="color:green"><?= $pesan ?></p>
<?php endif; ?>
<form method="POST">
<input type="text" name="nama" placeholder="Nama kamu">
<button type="submit">Kirim</button>
</form>
</body>
</html>
5. Mengecek Apakah Input Ada
<?php
// Cara 1: isset()
if (isset($_POST["nama"])) {
echo $_POST["nama"];
}
// Cara 2: null coalescing (lebih ringkas)
$nama = $_POST["nama"] ?? "Guest";
echo $nama;
?>
6. Perbedaan GET vs POST
- GET: data di URL, bisa di-bookmark, cocok untuk pencarian dan filter
- POST: data tersembunyi, tidak di-cache browser, cocok untuk form sensitif
- Ukuran data GET terbatas oleh panjang URL (~2000 karakter), POST tidak terbatas
- POST lebih aman untuk data seperti password, nomor kartu kredit, dsb
7. Ringkasan
$_GETmengambil data dari URL query string$_POSTmengambil data dari body request- Gunakan
$_SERVER["REQUEST_METHOD"]untuk cek metode pengiriman - Pakai
isset()atau??untuk menghindari error saat key tidak ada
Tutorial berikutnya membahas validasi input form di PHP.
.jpg)
