Salah satu keunggulan PHP adalah kemampuannya untuk memproses data dari pengguna melalui form. Contohnya saat pengguna login, register, atau mengirim pesan kontak, PHP akan membaca data dari form HTML dan mengolahnya.
Pada bagian ini, kamu akan belajar:
-
Membuat form HTML sederhana.
-
Mengambil data dari form dengan PHP.
-
Memahami perbedaan metode
GET
danPOST
. -
Melakukan validasi sederhana pada input.
1. Membuat Form HTML Sederhana
Buat file baru bernama form.php
di folder proyek kamu (htdocs/belajarphp
).
Isi dengan kode berikut:
<!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Form Input Data</title> </head> <body> <h2>Formulir Pendaftaran</h2> <form action="proses.php" method="post"> Nama: <input type="text" name="nama" required><br><br> Email: <input type="email" name="email" required><br><br> Umur: <input type="number" name="umur"><br><br> <input type="submit" value="Kirim"> </form> </body> </html>
Penjelasan:
-
action="proses.php"
→ data akan dikirim ke fileproses.php
. -
method="post"
→ menggunakan metode POST (lebih aman untuk data pribadi). -
name
→ digunakan sebagai kunci untuk mengakses data di PHP.
2. Menangani Data di PHP
Sekarang buat file baru bernama proses.php
di folder yang sama, lalu isi dengan:
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $nama = $_POST["nama"]; $email = $_POST["email"]; $umur = $_POST["umur"]; echo "<h3>Data yang Anda Kirim:</h3>"; echo "Nama: " . htmlspecialchars($nama) . "<br>"; echo "Email: " . htmlspecialchars($email) . "<br>"; echo "Umur: " . htmlspecialchars($umur) . "<br>"; } else { echo "Form belum dikirim."; } ?>
Penjelasan:
-
$_SERVER["REQUEST_METHOD"]
→ memastikan data dikirim melaluiPOST
. -
$_POST["nama"]
→ mengambil data dari form berdasarkan atributname
. -
htmlspecialchars()
→ mencegah XSS (Cross-Site Scripting) dengan mengamankan input dari karakter berbahaya.
3. Perbedaan GET dan POST
PHP memiliki dua cara umum untuk mengirim data dari form:
Metode | Ciri Khas | Contoh URL | Keamanan |
---|---|---|---|
GET | Data dikirim lewat URL | ?nama=Arvian&umur=25 |
Kurang aman |
POST | Data dikirim secara tersembunyi | Tidak terlihat di URL | Lebih aman |
Contoh form dengan GET:
<form action="proses.php" method="get"> Nama: <input type="text" name="nama"> <input type="submit" value="Kirim"> </form>
Dan di file PHP:
<?php $nama = $_GET["nama"]; ?>
Gunakan GET
untuk pencarian atau navigasi (misalnya ?q=kata+kunci
) dan POST
untuk data sensitif seperti login, password, atau form pendaftaran.
4. Validasi Input Sederhana
Sebelum memproses data, penting untuk memeriksa apakah semua field sudah diisi dengan benar.
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $nama = trim($_POST["nama"]); $email = trim($_POST["email"]); $umur = trim($_POST["umur"]); if (empty($nama) || empty($email)) { echo "Nama dan email wajib diisi!"; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo "Format email tidak valid!"; } else { echo "Halo, $nama! Data kamu berhasil dikirim."; } } ?>
Penjelasan:
-
trim()
→ menghapus spasi di awal dan akhir input. -
empty()
→ mengecek apakah input kosong. -
filter_var($email, FILTER_VALIDATE_EMAIL)
→ memastikan format email benar.
5. Menampilkan Data ke Halaman Lain (Opsional)
Kadang kamu ingin menampilkan hasil input di halaman berbeda. Misalnya, pengguna mengisi form di form.php
, lalu diarahkan ke hasil.php
.
<!-- form.php --> <form action="hasil.php" method="post"> Nama: <input type="text" name="nama"> <input type="submit" value="Kirim"> </form>
<!-- hasil.php --> <?php $nama = $_POST["nama"]; echo "Selamat datang, " . htmlspecialchars($nama) . "!"; ?>
Tips Keamanan
-
Gunakan
htmlspecialchars()
untuk setiap output yang berasal dari input pengguna. -
Hindari menampilkan data mentah dari
$_GET
atau$_POST
. -
Validasi semua input, bahkan jika form dikirim dari sisi client (karena bisa dimanipulasi).
6. Latihan Lengkap
Buat form pendaftaran dengan field berikut:
-
Nama
-
Email
-
Umur
-
Jenis Kelamin (radio button)
-
Hobi (checkbox)
Tugas:
-
Tampilkan data hasil input di halaman
hasil.php
. -
Gunakan
foreach()
untuk menampilkan daftar hobi. -
Pastikan ada validasi agar semua field wajib diisi.
Contoh tampilan output:
Nama: Arvian Email: arvian@mail.com Umur: 25 Jenis Kelamin: Laki-laki Hobi: Membaca, Coding
Kesimpulan
Di bagian ini kamu telah belajar:
-
Cara membuat form HTML dan menghubungkannya ke PHP.
-
Perbedaan metode GET dan POST.
-
Dasar validasi input dan keamanan data.
Langkah selanjutnya, kamu siap menghubungkan form ke database MySQL untuk menyimpan data pengguna.