Daftar Isi
Halo semua pada artikel sebelumnya kita sudah belajar tentang sintaksis dasar PHP dan Salah satu fitur penting dalam pengembangan web adalah menangani data yang dikirim melalui formulir. Dalam artikel ini, kita akan membahas cara mengumpulkan, memproses, dan memvalidasi data formulir menggunakan PHP dengan cara yang mudah dipahami. Yuk, kita mulai!!
PHP - Superglobal $_GET dan $_POST
Di PHP, kita bisa menggunakan superglobal $_GET dan $_POST untuk mengumpulkan data dari formulir. Superglobal ini adalah array yang selalu bisa diakses dari mana saja dalam skrip PHP kita.
Membuat Formulir HTML Sederhana
Contoh di bawah ini menampilkan formulir HTML sederhana dengan dua input field dan satu tombol submit:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formulir Sederhana</title>
</head>
<body>
<form action="welcome.php" method="POST">
Nama: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit" value="Kirim">
</form>
</body>
</html>
Ketika user mengisi formulir di atas dan mengklik tombol submit, data formulir akan dikirim untuk diproses ke file PHP bernama "welcome.php" menggunakan metode POST.
Menampilkan Data yang Dikirim
Untuk menampilkan data yang dikirim, kita bisa cukup menggunakan echo untuk semua variabel. Berikut contoh "welcome.php":
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hasil Formulir</title>
</head>
<body>
Selamat datang, <?php echo $_POST["name"]; ?><br>
Alamat email Anda adalah: <?php echo $_POST["email"]; ?>
</body>
</html>
Outputnya bisa seperti ini:
Selamat datang, John
Alamat email Anda adalah: john.doe@example.com
Metode GET
Hasil yang sama juga bisa dicapai dengan menggunakan metode GET. Berikut contohnya dengan metode GET:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formulir Sederhana</title>
</head>
<body>
<form action="welcome_get.php" method="GET">
Nama: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit" value="Kirim">
</form>
</body>
</html>
Dan "welcome_get.php" tampilannya seperti ini:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hasil Formulir</title>
</head>
<body>
Selamat datang, <?php echo $_GET["name"]; ?><br>
Alamat email Anda adalah: <?php echo $_GET["email"]; ?>
</body>
</html>
GET vs. POST
Baik GET maupun POST membuat array (contoh: array( key1 => value1, key2 => value2, key3 => value3, ...)) yang memegang pasangan key/value, dimana key adalah nama-nama dari kontrol form dan value adalah data input dari user.
- $_GET adalah array dari variabel yang dikirim ke skrip saat ini melalui URL.
- $_POST adalah array dari variabel yang dikirim ke skrip saat ini melalui metode POST.
Kapan Menggunakan GET?
- Data yang dikirim dengan metode GET terlihat oleh semua orang (nama dan nilai variabel ditampilkan di URL).
- GET punya batasan jumlah informasi yang bisa dikirim, sekitar 2000 karakter.
- Karena variabel ditampilkan di URL, halaman bisa dibookmark. Ini bisa berguna dalam beberapa kasus.
- GET cocok untuk mengirim data yang tidak sensitif.
Catatan: GET sebaiknya TIDAK PERNAH digunakan untuk mengirimkan password atau informasi sensitif lainnya!
Kapan Menggunakan POST?
- Data yang dikirim dengan metode POST tidak terlihat oleh orang lain (nama/nilai tertanam dalam body dari request HTTP) dan tidak ada batasan jumlah informasi yang bisa dikirim.
- POST mendukung fungsionalitas lanjutan seperti dukungan untuk input binary multi-part saat mengunggah file ke server.
- Karena variabel tidak ditampilkan di URL, halaman tidak bisa dibookmark.
Validasi Formulir dengan PHP
Validasi data form sangat penting untuk melindungi skrip dari kode berbahaya. Kita akan bahas cara melakukan validasi data form yang benar.
Membuat Formulir dengan Validasi
Pertama, kita buat formulir yang sama seperti sebelumnya, tapi kali ini kita tambahkan validasi di file PHP-nya.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formulir dengan Validasi</title>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
Nama: <input type="text" name="name" required><br>
E-mail: <input type="text" name="email" required><br>
<input type="submit" value="Kirim">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = test_input($_POST["name"]);
$email = test_input($_POST["email"]);
if (!preg_match("/^[a-zA-Z-' ]*$/", $name)) {
echo "Hanya huruf dan spasi yang diizinkan pada nama<br>";
} else {
echo "Nama: $name<br>";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Format email tidak valid<br>";
} else {
echo "Email: $email<br>";
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
</body>
</html>
Penjelasan Kode Validasi
- htmlspecialchars($_SERVER["PHP_SELF"]): Ini untuk melindungi dari serangan XSS. Dengan ini, form akan dikirim ke halaman yang sama untuk memproses data.
- test_input(): Fungsi ini untuk membersihkan data input dengan trim(), stripslashes(), dan htmlspecialchars().
- preg_match(): Untuk memeriksa apakah nama hanya mengandung huruf dan spasi.
- filter_var(): Untuk memvalidasi format email.
Penutup
Validasi formulir sangat penting untuk menjaga keamanan aplikasi web kita. Dengan memeriksa dan membersihkan data input, kita bisa mencegah serangan-serangan yang bisa merusak aplikasi kita. Selalu pastikan untuk memvalidasi data sebelum memprosesnya. Semoga bermanfaat dan selamat mencoba!๐ฅ๐ฅ