Form Handling: GET dan POST Method
Form handling adalah proses mengambil, mengirim, dan mengolah data dari pengguna melalui form HTML menggunakan PHP. Proses ini menjadi dasar dalam pembuatan fitur seperti login, registrasi, pencarian, dan input data.
Dalam PHP, data dari form dapat diakses menggunakan superglobal variable seperti:
$_GET$_POST$_REQUEST
-
Method GET
Method GET digunakan untuk mengirim data melalui URL (query string). Data akan terlihat di address bar browser.
Karakteristik GET:
- Data ditampilkan di URL
- Mudah diakses dan dibagikan
- Tidak aman untuk data sensitif
- Memiliki batas panjang karakter
Contoh Form GET:
<form method="GET" action=""> Nama: <input type="text" name="nama"> <button type="submit">Kirim</button> </form>Mengambil Data:
<?php if (isset($_GET['nama'])) { echo "Nama: " . $_GET['nama']; } ?>
-
Method POST
Method POST digunakan untuk mengirim data melalui body HTTP request sehingga tidak terlihat di URL.
Karakteristik POST:
- Data tidak terlihat di URL
- Lebih aman dibanding GET
- Dapat mengirim data dalam jumlah besar
- Digunakan untuk form penting (login, register)
Contoh Form POST:
<form method="POST" action=""> Nama: <input type="text" name="nama"> <button type="submit">Kirim</button> </form>Mengambil Data:
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { echo "Nama: " . $_POST['nama']; } ?>
Field Configuration
Dalam form:
- Channel → metode pengiriman data (GET / POST)
- Field → elemen input yang diisi oleh pengguna
Jenis Field pada Form
| Tipe Field | Fungsi |
|---|---|
| text | Input teks |
| password | Input kata sandi |
| Input email | |
| number | Input angka |
| textarea | Input teks panjang |
| select | Pilihan dropdown |
Contoh Form Lengkap
<form method="POST">
Nama: <input type="text" name="nama"><br>
Email: <input type="email" name="email"><br>
Password: <input type="password" name="password"><br>
Jenis Kelamin:
<select name="jk">
<option value="L">Laki-laki</option>
<option value="P">Perempuan</option>
</select><br>
<button type="submit">Kirim</button>
</form>
Mengambil dan Mengelola Data
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nama = $_POST['nama'];
$email = $_POST['email'];
echo "Nama: $nama <br>";
echo "Email: $email";
}
?>
Validasi Field
<?php
if (empty($_POST['nama'])) {
echo "Nama wajib diisi";
}
?>
Session, Cookie, dan Validasi Input
Session
Session digunakan untuk menyimpan data pengguna di server secara sementara selama user masih aktif.
Kegunaan:
- Login system
- Menyimpan status user
- Menyimpan data sementara
Contoh:
<?php
session_start();
$_SESSION['username'] = "Nadia";
echo $_SESSION['username'];
?>
Menghapus Session
<?php
session_start();
session_destroy();
?>
Cookie
Cookie adalah data kecil yang disimpan di browser pengguna.
Kegunaan:
- Mengingat login
- Menyimpan preferensi user
Contoh:
<?php
setcookie("username", "Nadia", time() + 3600);
?>
Mengambil cookie:
<?php
echo $_COOKIE['username'];
?>
🔹 Perbandingan Session vs Cookie
| Aspek | Session | Cookie |
|---|---|---|
| Penyimpanan | Server | Browser |
| Keamanan | Lebih aman | Kurang aman |
| Durasi | Selama sesi | Bisa diatur |
Validasi Input dan Keamanan
Pentingnya Validasi
Validasi bertujuan untuk:
- Mencegah input kosong
- Memastikan format benar
- Menghindari serangan
Validasi Dasar
<?php
$nama = $_POST['nama'];
if (empty($nama)) {
echo "Nama tidak boleh kosong";
}
?>
Validasi Format Email
<?php
$email = $_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Email tidak valid";
}
?>
Sanitasi Input
Sanitasi digunakan untuk membersihkan input dari karakter berbahaya.
<?php
$nama = htmlspecialchars($_POST['nama']);
?>
Keamanan Dasar
-
XSS (Cross Site Scripting)
Terjadi ketika script berbahaya disisipkan ke input.
Solusi:
htmlspecialchars()
-
SQL Injection
Terjadi saat input user langsung dimasukkan ke query database.
Solusi:
- Gunakan prepared statement (dibahas di materi database)
Contoh Form
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $nama = htmlspecialchars($_POST['nama']); if (empty($nama)) { echo "Nama wajib diisi"; } else { echo "Halo $nama"; } } ?>