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

  1. 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'];
    }
    ?>

  1. 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
email 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

  1. XSS (Cross Site Scripting)

    Terjadi ketika script berbahaya disisipkan ke input.

    Solusi:

    htmlspecialchars()

  1. 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";
        }
    }
    ?>