Validasi Form PHP

Membuat code validasi form

Sebuah code web form yang baik harus dilengkapi dengan system keamanan agar tidak disalahgunakan oleh hacker dan spammer. Salah satu cara untuk mengamankan web form adalah dengan validasi form.

Validasi form artinya adalah memeriksa data yang dikirimkan melalui web form HTML apakah sudah sesuai dengan data yang diinginkan atau tidak.

Perhatikan contoh web form berikut ini:

Isi file webform.php 1:

<?php
// Memberikan nilai awal untuk variable yang akan menyimpan data form
$nama = $email = $kelamin = $komentar = $website = "";

function validasi_form($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
};

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nama = validasi_form($_POST["nama"]);
    $email = validasi_form($_POST["email"]);
    $website = validasi_form($_POST["website"]);
    $komentar = validasi_form($_POST["komentar"]);
    $kelamin = validasi_form($_POST["kelamin"]);
};
?>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Nama: 
<input type="text" name="nama">
<br /><br />
Email: 
<input type="text" name="email">
<br /><br />
Website: 
<input type="text" name="website">
<br /><br />
Komentar: 
<textarea name="komentar" rows="5" cols="40"></textarea>
<br /><br />
Kelamin:
<input type="radio" name="kelamin" value="perempuan">Perempuan
<input type="radio" name="kelamin" value="lakilaki">Laki-laki
<br /><br />
<input type="submit" value="Submit" />
</form>

Hasil isi file webform.php 1:

Nama:

Email:

Website:

Komentar:

Kelamin:
Perempuan
Laki-laki


Berikut ini adalah penjelasan code web form di atas:

Pada contoh di atas, web form HTML berada di dalam file PHP sehingga data yang diberikan oleh user tidak dikirimkan ke file PHP yang lain melainkan data tersebut dikirimkan dari dan ke file itu sendiri.

Pada atribut action di atas ada code $_SERVER["PHP_SELF"]. Code $_SERVER["PHP_SELF"] adalah variable superglobal yang menghasilkan nama file yang sedang dibuka. Sehingga data yang diberikan oleh user tidak dikirim ke file yang lain melainkan dikirimkan ke file web form HTML itu sendiri.

Sebuah web form tersusun dari beberapa elemen. Elemen-elemen yang bisa digunakan oleh web form untuk mengumpulkan data bisa berbentuk kotak text atau tombol radio.

Berikut ini adalah beberapa elemen yang ada di dalam web form di atas:

Elemen Bentuk Aturan
Nama Kotak text Pilihan. Boleh diisi atau tidak.
Email Kotak text Pilihan. Boleh diisi atau tidak.
Website Kotak text Pilihan. Boleh diisi atau tidak.
Komentar Kotak text Pilihan. Boleh diisi atau tidak.
Kelamin Tombol radio Pilihan. Boleh dipilih salah satu.
$nama = $email = $kelamin = $komentar = $website = "";

Pada code di atas kita membuat beberapa variable yang digunakan untuk menyimpan data yang diberikan oleh user kemudian semua variable tersebut diberi nilai awal berupa string kosong [""]. Berikut ini adalah variable dan data yang disimpan oleh variable tersebut:

  • variable [$nama] untuk menyimpan data [nama]
  • variable [$email] untuk menyimpan data [email]
  • variable [$kelamin] untuk menyimpan data [kelamin]
  • variable [$komentar] untuk menyimpan data [komentar]
  • variable [$website] untuk menyimpan data [website]

Pada web form di atas ada tiga buah code validasi untuk memastikan data yang diberikan oleh user sudah sesuai dengan jenis data yang diinginkan yaitu:

  1. Menghapus character yang tidak perlu (spasi berlebih dan baris baru) menggunakan trim() function.
  2. Menghapus escape character backslash \ menggunakan stripslashes() function.
  3. Mengubah character entity menjadi nama entity menggunakan htmlspecialchars() function.

Selanjutnya ketiga buah validasi di atas kita buat menjadi sebuah function sehingga lebih memudahkan daripada harus berulang-ulang melakukan ketiga hal di atas terhadap setiap data web form. Function tersebut kita namakan validasi_form().

function validasi_form($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

Code di atas adalah validasi_form() function yang berguna untuk melakukan validasi terhadap semua data yang dikirimkan oleh web form HTML. Hasil dari validasi_form() function adalah data yang sudah divalidasi.

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nama = validasi_form($_POST["nama"]);
    $email = validasi_form($_POST["email"]);
    $website = validasi_form($_POST["website"]);
    $komentar = validasi_form($_POST["komentar"]);
    $kelamin = validasi_form($_POST["kelamin"]);
}

Untuk memeriksa apakah data yang diberikan oleh user sudah dikirimkan oleh web form HTML atau belum kita menggunakan code superglobal $_SERVER["REQUEST_METHOD"]. Code $_SERVER["REQUEST_METHOD"] berguna untuk menghasilkan jenis method yang digunakan oleh web form HTML untuk mengirimkan data.

Jika data yang diberikan oleh user dikirimkan menggunakan post method maka $_SERVER["REQUEST_METHOD"] akan menghasilkan "POST", sedangkan jika data dikirimkan menggunakan get method maka $_SERVER["REQUEST_METHOD"] akan menghasilkan "GET".

Sehingga jika $_SERVER["REQUEST_METHOD"] sama dengan "POST" maka artinya data sudah dikirimkan menggunakan post method.

Pada code di atas, jika data yang diberikan oleh user sudah dikirimkan maka validasi_form() function akan dijalankan untuk melakukan validasi terhadap semua jenis data yang dikirimkan tersebut. Selanjutnya beberapa variable ini: [$nama, $email, $kelamin, $komentar, $website] akan berisi data yang dikirimkan tersebut.

Jika data yang diberikan oleh user belum dikirimkan maka beberapa variable ini: [$nama, $email, $kelamin, $komentar, $website] masih berisi string kosong [""].

Misalkan saja user mengisi data [email] pada web form HTML maka data [email] tersebut akan divalidasi dan selanjutnya data [email] tersebut akan disimpan di dalam variable [$email]. Sebaliknya jika user tidak mengirim data [email] maka variable [$email] akan berisi string kosong [""].

Membuat elemen web form yang wajib diisi

Pada contoh web form sebelumnya, semua elemen yang ada di dalam web form masih bersifat pilihan yang artinya elemen-elemen tersebut boleh diisi atau tidak tanpa menimbulkan error.

Pada contoh berikut ini kita akan menambahkan beberapa buah validasi terhadap contoh web form sebelumnya. Validasi yang akan kita tambahkan adalah membuat beberapa elemen yang ada di dalam web form wajib diisi. Jika semua elemen yang wajib diisi tersebut tidak diisi oleh user maka setelah user menekan tombol submit akan muncul pesan error.

Perhatikan contoh web form HTML berikut ini:

Isi file webform.php 2:

<?php
// Membuat variable dan memasukkan nilai awal
$nama_error = $email_error = $kelamin_error = $website_error = "";
$nama = $email = $kelamin = $komentar = $website = "";

function validasi_form($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
};

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["nama"])) {
        $nama_error = "Nama belum dimasukkan";
    } else {
        $nama = validasi_form($_POST["nama"]);
    }

    if (empty($_POST["email"])) {
        $email_error = "Email belum dimasukkan";
    } else {
        $email = validasi_form($_POST["email"]);
    }

    if (empty($_POST["website"])) {
        $website = "";
    } else {
        $website = validasi_form($_POST["website"]);
    }

    if (empty($_POST["komentar"])) {
        $komentar = "";
    } else {
        $komentar = validasi_form($_POST["komentar"]);
    }

    if (empty($_POST["kelamin"])) {
        $kelamin_error = "Kelamin belum dipilih";
    } else {
        $kelamin = validasi_form($_POST["kelamin"]);
    }
};
?>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Nama: 
<input type="text" name="nama"> * <?php echo $nama_error;?>
<br /><br />
Email:
<input type="text" name="email"> * <?php echo $email_error;?>
<br /><br />
Website:
<input type="text" name="website"> <?php echo $website_error;?>
<br /><br />
Komentar: 
<textarea name="komentar" rows="5" cols="40"></textarea>
<br /><br />
Kelamin:
<input type="radio" name="kelamin" value="perempuan">Perempuan
<input type="radio" name="kelamin" value="lakilaki">Laki-laki
* <?php echo $kelamin_error;?>
<br /><br />
<input type="submit" name="submit" value="Submit">

</form>

Hasil isi file webform.php 2:

Nama:
*

Email:
*

Website:

Komentar:

Kelamin:
Perempuan
Laki-laki
*


Berikut ini adalah penjelasan code web form di atas:

Web form yang kita buat tersusun dari beberapa elemen. Berikut ini adalah beberapa elemen yang ada di dalam web form di atas:

Elemen Bentuk Aturan
Nama Kotak text Wajib diisi.
Email Kotak text Wajib diisi.
Website Kotak text Pilihan. Boleh diisi atau tidak.
Komentar Kotak text Pilihan. Boleh diisi atau tidak.
Kelamin Tombol radio Wajib dipilih salah satu.
$nama_error = $email_error = $kelamin_error = $website_error = "";

Pada code di atas kita membuat beberapa variable yang berguna untuk menyimpan pesan error jika user tidak memasukkan data yang wajib diberikan. Misalkan saja user tidak memasukkan data [email] pada web form HTML maka variable [$email_error] akan meyimpan pesan error: [Email belum dimasukkan].

Berikut ini adalah variable dan pesan error yang disimpan oleh variable tersebut:

  • Variable [$nama_error] untuk menyimpan pesan [Nama belum dimasukkan] apabila user tidak memberikan data [nama].
  • Variable [$email_error] untuk menyimpan pesan [Email belum dimasukkan] apabila user tidak memberikan data [email].
  • Variable [$kelamin_error] untuk menyimpan pesan [Kelamin belum dipilih] apabila user tidak memberikan data [kelamin].
  • Variable [$website_error] tidak menyimpan pesan error karena data [website] tidak wajib untuk diberikan.
if (empty($_POST["email"])) {
    $email_error = "Email belum dimasukkan";
} else {
    $email = validasi_form($_POST["email"]);
}

Pada code if else statement di atas:

  • Jika array $_POST["email"] tidak berisi data [email] maka variable [$email_error] akan berisi pesan error.
  • Jika array $_POST["email"] berisi data [email] maka validasi_form() function akan dijalankan terhadap data [email] yang tersimpan di dalam array $_POST["email"].

Code empty() function digunakan untuk memeriksa apakah array $_POST["email"] berisi data [email] atau tidak. Code empty() function akan menghasilkan nilai boolean [true] jika sebuah variable diisi oleh string kosong [""], false, array(), NULL, "0", atau 0.

Code if else statement di atas digunakan untuk memvalidasi data [email] yang diberikan oleh user. Code if else statement yang hampir sama juga digunakan untuk beberapa data lainnya (nama, kelamin, komentar, dan website).

Selanjutnya semua code if else statement tersebut digabung menjadi satu dan dimasukkan dalam sebuah code if statement.

Untuk menampilkan pesan error pada web form HTML setelah user menekan tombol submit tanpa mengisi data form kita menggunakan script kecil yang berisi code echo seperti di bawah ini:

Email:
<input type="text" name="email"> * <?php echo $email_error;?>

Pada code web form HTML di atas ada script kecil yang menampilkan isi dari variable [$email_error].

2 Responses to “Validasi Form PHP”

  1. Whenn you create this kind of investment, it is wise to make certain you aree experiencing the product quality that you will be paying for.

    Neveer choose the ring within your choice which is quite obvious she
    would possibly not much like your choice. The fact remains, mopst of these darling gems usually aren’t formed neither crreated using the same ultra technology advances used to mass-produce the vast majority oof ouur latest expensive
    jewelry merchandise.

  2. Thank you, I have just been searching for information approximately this toopic for
    a wwhile and yours is the greatest I have
    discovered so far. However, what in regards to the bottom line?
    Aree you certain concerning the source?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>