Form Handling dalam PHP

Form handling adalah salah satu fitur paling umum dan penting dalam pengembangan web. PHP memungkinkan Anda untuk mengumpulkan, memproses, dan memvalidasi data yang dikirimkan melalui formulir HTML. Berikut adalah cara untuk menangani formulir dalam PHP, mulai dari mengumpulkan data hingga memvalidasinya.

Membuat Formulir HTML #

Pertama, Anda perlu membuat formulir HTML yang akan digunakan untuk mengumpulkan data dari pengguna. Formulir ini biasanya menggunakan metode POST atau GET untuk mengirimkan data.

Contoh Formulir HTML:

<!DOCTYPE html>
<html>
<head>
    <title>Form Handling dalam PHP</title>
</head>
<body>
    <h1>Formulir Pengguna</h1>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
        Nama: <input type="text" name="name"><br><br>
        Email: <input type="email" name="email"><br><br>
        <input type="submit" value="Kirim">
    </form>
</body>
</html>

  • method="post": Mengatur metode pengiriman data formulir sebagai POST.
  • action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>": Mengatur skrip yang akan menangani data formulir. htmlspecialchars digunakan untuk menghindari serangan XSS (Cross-Site Scripting).

Mengumpulkan Data Formulir di PHP #

Setelah formulir dikirim, data dapat dikumpulkan menggunakan variabel superglobal $_POST (atau $_GET jika menggunakan metode GET).

Contoh Pengumpulan Data:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = $_POST['name'];
    $email = $_POST['email'];
    echo "Nama: " . $name . "<br>";
    echo "Email: " . $email . "<br>";
}
?>

Validasi Data Formulir #

Sebelum memproses data formulir lebih lanjut, penting untuk memvalidasi dan membersihkan data untuk mencegah kesalahan dan potensi masalah keamanan.

Contoh Validasi dan Sanitasi Data:

<?php
$name = $email = "";
$nameErr = $emailErr = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["name"])) {
        $nameErr = "Nama diperlukan";
    } else {
        $name = test_input($_POST["name"]);
        if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
            $nameErr = "Hanya huruf dan spasi yang diizinkan";
        }
    }
  
    if (empty($_POST["email"])) {
        $emailErr = "Email diperlukan";
    } else {
        $email = test_input($_POST["email"]);
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $emailErr = "Format email tidak valid";
        }
    }
}

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
?>

  • test_input: Fungsi untuk membersihkan data input.
  • empty: Fungsi untuk memeriksa apakah input kosong.
  • preg_match: Fungsi untuk memeriksa apakah input sesuai dengan pola tertentu (dalam hal ini, hanya huruf dan spasi yang diizinkan).
  • filter_var: Fungsi untuk memvalidasi format email.

Menampilkan Formulir dengan Pesan Kesalahan #

Formulir dapat ditampilkan kembali dengan pesan kesalahan jika ada data yang tidak valid.

Contoh Menampilkan Formulir dengan Pesan Kesalahan:

<!DOCTYPE html>
<html>
<head>
    <title>Form Handling dengan Validasi</title>
</head>
<body>
    <h1>Formulir Pengguna</h1>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
        Nama: <input type="text" name="name" value="<?php echo $name; ?>">
        <span style="color: red;"><?php echo $nameErr; ?></span>
        <br><br>
        Email: <input type="text" name="email" value="<?php echo $email; ?>">
        <span style="color: red;"><?php echo $emailErr; ?></span>
        <br><br>
        <input type="submit" value="Kirim">
    </form>

    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST" && empty($nameErr) && empty($emailErr)) {
        echo "<h2>Data yang dikirim:</h2>";
        echo "Nama: " . $name . "<br>";
        echo "Email: " . $email . "<br>";
    }
    ?>
</body>
</html>

Pada contoh di atas:

  • Formulir HTML disertai dengan pesan kesalahan yang akan ditampilkan jika input tidak valid.
  • Data formulir yang valid akan ditampilkan setelah pengiriman.

Contoh Lengkap Form Handling dengan PHP #

Berikut adalah contoh lengkap dari pengumpulan, validasi, dan penampilan data formulir dalam PHP:

<!DOCTYPE html>
<html>
<head>
    <title>Form Handling Lengkap dengan PHP</title>
</head>
<body>
    <?php
    // Inisialisasi variabel
    $name = $email = "";
    $nameErr = $emailErr = "";

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        // Validasi Nama
        if (empty($_POST["name"])) {
            $nameErr = "Nama diperlukan";
        } else {
            $name = test_input($_POST["name"]);
            if (!preg_match("/^[a-zA-Z-' ]*$/", $name)) {
                $nameErr = "Hanya huruf dan spasi yang diizinkan";
            }
        }

        // Validasi Email
        if (empty($_POST["email"])) {
            $emailErr = "Email diperlukan";
        } else {
            $email = test_input($_POST["email"]);
            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $emailErr = "Format email tidak valid";
            }
        }
    }

    // Fungsi untuk membersihkan data input
    function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }
    ?>

    <h1>Formulir Pengguna</h1>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
        Nama: <input type="text" name="name" value="<?php echo $name; ?>">
        <span style="color: red;"><?php echo $nameErr; ?></span>
        <br><br>
        Email: <input type="text" name="email" value="<?php echo $email; ?>">
        <span style="color: red;"><?php echo $emailErr; ?></span>
        <br><br>
        <input type="submit" value="Kirim">
    </form>

    <?php
    if ($_SERVER["REQUEST_METHOD"] == "POST" && empty($nameErr) && empty($emailErr)) {
        echo "<h2>Data yang dikirim:</h2>";
        echo "Nama: " . $name . "<br>";
        echo "Email: " . $email . "<br>";
    }
    ?>
</body>
</html>

Pada contoh ini:

  • > Formulir HTML memungkinkan pengguna untuk memasukkan nama dan email.
  • > Data formulir dikumpulkan dan divalidasi oleh skrip PHP.
  • > Pesan kesalahan ditampilkan jika data tidak valid.
  • > Data yang valid ditampilkan setelah pengiriman formulir.

Dengan memahami dan menggunakan form handling dalam PHP, Anda dapat membuat halaman web yang interaktif dan aman untuk mengumpulkan data dari pengguna. Jika ada pertanyaan lebih lanjut atau bagian yang perlu diperjelas, jangan ragu untuk bertanya.