Pengertian dan Cara Membuat Form Validasi PHP Lengkap | PHP Form

Membuat Form Validasi PHP Sederhana | PHP Form
Pendahuluan
Pernahkah kalian mengisi suatu folmulir online, dan di folmulir tersebut terdapat bagian yang harus kita isi, jika tidak diisi maka kita tidak bisa melanjutkan ke tahap selanjutnya? Kalau pernah itulah yang disebut Form Validasi. Nah untuk kali ini kita akan mencoba membuat form validasi seperti itu dengan bahasa pemrograman PHP.

Pembahasan
Kenapa Form Validasi Penting?
Menurut KBBI, Validasi merupakan pengesaha, pengujian kebenaran atas sesuatu. Dari pengertian tersebut tentu telah sangat jelas bahwa validasi sangat erat kaitannya dengan kebenaran dan keamanan, sehingga sangat penting di pahami oleh setiap programmer dan di terapkan sehingga web atau aplikasi yang dibuat dapat aman bagi penggunanya.

Untuk membuat Form Validasi PHP Sederhana, setidaknya kita membutuhkan alat dan bahan sebagai berikut.
Alat dan Bahan
1. PC/Laptop 
2. PHP Versi 7 dan Web Server (XAMPP/LAMPP/MAMPP, dll)
3. Browser
4. Code Editor (Visual Studio Code)

Tahapan Membuat Form Validasi PHP
1. Siapkan alat dan bahan.
2. Masuk ke folder htdocs, dan buatlah file dengan format .php. Disini saya membuat file dengan nama validasi.php di folder blog yang terdapat di folder htdocs.
3. Buka file tersebut di code editor.
4.  Membuat Form Validasi
Untuk membuat Form Validasi diperlukan perencanaan mengenai input mana saja yang harus diisi dan input mana saja yang opsional atau boleh di kosongkan. Disini saya contohkan membuat perencanaan sebagai berikut.
Perencanaan Form Validasi PHP

5. Dari tabel perencanaan form diatas, jika di buat dengan HTML maka kodenya akan seperti ini.


<!
DOCTYPE html>
<html lang="en">

<head>
<title>ValidasiPHP</title>
</head>

<body>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
Nama : <input type="text" name="nama"> <br>
Email : <input type="text" name="email"> <br>
NIS: <input type="text" name="nis"> <br>
Pesan: <br><textarea name="pesan" rows="5" cols="40"></textarea> <br>
Jurusan:
<input type="radio" name="jurusan" value="tkj">TKJ
<input type="radio" name="jurusan" value="rpl">RPL
<input type="radio" name="jurusan" value="tkr"> TKR
<br>
<input type="submit" name="submit" id="submit" br value="submit">
</form>
</body>

</html>
*form untuk membuat folmulir, input berarti masukan dengan type, name dan value yang disesuaikan.
Apakah variabel $ _SERVER ["PHP_SELF"]? 
$ _SERVER ["PHP_SELF"] adalah variabel super global yang mengembalikan nama file dari skrip yang sedang dieksekusi. 
Jadi, $ _SERVER ["PHP_SELF"] mengirim data formulir yang dikirimkan ke halaman itu sendiri, alih-alih melompat ke halaman lain. Dengan cara ini, pengguna akan mendapatkan hasil input di halaman yang sama dengan folmulir, termasuk pesan kesalahan juga akan ditampilkan di halaman yang sama dengan formulir.

6. Dari code HTML diatas, jika kita buka di browser dengan url http://localhost/blog/validasi.php  
maka akan tampil seperti berikut.
7. Agar form kita dapat berjalan
Kita harus menambahkan script PHP untuk memberi nilai default, membuat fungsi yang akan menvalidasi input, menvalidasi setiap input dengan fungsi yang sudah dibuat, dan yang terakhir menampilkan hasil input yang sudah di submit. Sehingga jika melanjutkan code HTML sebelumnya akan seperti ini.
<?php
// mendefinisikan variabel dan set ke nilai defaul kosong
$nama = $email = $jurusan = $pesan = $nis = " ";
// Fungsi untuk menvalidasi seluruh Input
function validasi_input($data)
{
$data = trim($data); //
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

// Jika terdapat request method post, maka variabel input akan diisi dengan
$_POST yang akan divalidasi terlebih dahulu oleh fungsi validasi_input()
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nama = validasi_input($_POST["nama"]);
$email = validasi_input($_POST["email"]);
$nis = validasi_input($_POST["nis"]);
$pesan = validasi_input($_POST["pesan"]);
$jurusan = validasi_input($_POST["jurusan"]);
}

?>

<!DOCTYPE html>
<html lang="en">

<head>
<title>ValidasiPHP</title>
</head>

<body>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
Nama : <input type="text" name="nama"> <br>
Email : <input type="text" name="email"> <br>
NIS: <input type="text" name="nis"> <br>
Pesan: <br><textarea name="pesan" rows="5" cols="40"></textarea> <br>
Jurusan:
<input type="radio" name="jurusan" value="tkj">TKJ
<input type="radio" name="jurusan" value="rpl">RPL
<input type="radio" name="jurusan" value="tkr"> TKR
<br>
<input type="submit" name="submit" id="submit" br value="submit">
</form>

<!-- Menampilkan seluruh hasil validasi dari variabel input dengan echo -->
<?php
echo "<h2>Masukan Kamu:</h2>";
echo $nama;
echo "<br>";
echo $email;
echo "<br>";
echo $nis;
echo "<br>";
echo $pesan;
echo "<br>";
echo $jurusan;
?>
</body>

</html>

8. Dari script diatas contoh jika saya buka di browser dan saya coba masukan input dengan benar seperti ini,
Jika ditekan submit, maka akan tampil outputnya di bawah seperti ini.

9. Sekilas sampai disini selesai ya? tidak ada masalah, namun ini yang sering tidak diperhatikan oleh para programmer pemula.
 Jadi sebenernya terdapat titik yang sangat rentan di contoh kode kita diatas, tepatnya di bagian action="<?php echo $_SERVER["PHP_SELF"];?>".
Jadi masalahnya Variabel $ _SERVER ["PHP_SELF"]  yang juga variabel super global ini dapat digunakan oleh peretas! dan spammer. Jika PHP_SELF digunakan di halaman anda maka pengguna dapat memasukkan slash (/) dan kemudian beberapa perintah Cross Site Scripting (XSS) untuk dieksekusi.
Apa itu Cross Site Scripting (XSS)?
Cross-site scripting (XSS) adalah jenis kerentanan keamanan komputer yang biasanya ditemukan dalam aplikasi Web. XSS memungkinkan penyerang untuk menyuntikkan skrip sisi klien ke halaman Web yang dilihat oleh pengguna lain.
10. Bukti kelemahan program
Dari kode : <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
jika di terjemahkan maka akan jadi seperti ini : <form method="post" action="validasi.php"dengan url http://localhost/blog/validasi.php
Sejauh ini tidak ada masalah, namun bagaimana jika ada orang yang jahat dan memasukan script di url seperti ini: http://localhost/blog/validasi.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
kode tersebut akan diterjemahkan menjadi seperti digambar ini.
Dan ketika di enter maka orang tersebut akan bisa memasukan script ke program kita seperti ini.
Taraaa.... halaman kalian yang sudah dibuat bisa di hacked 😁.
Naah dari sini validasi pada PHP menjadi sangat penting, karena untuk mengatasi hal tersebut, kita tidak boleh hanya menvalidasi input dari isi halaman, namun juga harus menvalidasi url dan seluruh celah yang dapat digunakan user untuk memberi input.

11. Cara memberi keamanan dengan validasi URL di PHP
Ganti kode:  <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">
menjadi: <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
*htmlspecialchars() merupakan fungsi untuk pengubah setiap karakter input yang rentan menjadi karakter encoding yang tidak akan dijalankan oleh program.

Jadi jika ada orang yang mencoba memaksa masuk ke akses halaman kita, contoh dengan code yang sama seperti yang tadi, 
menjadi : http://localhost/blog/validasi.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;
Yang tidak akan dijalankan oleh program dan hanya menghasilkan script di URL seperti ini.

12. Jadi hasil kode dari membuat form validasi PHP Sederhana akan seperti ini.
<?php
// mendefinisikan variabel dan set ke nilai defaul kosong
$nama = $email = $jurusan = $pesan = $nis = " ";
// Fungsi untuk menvalidasi seluruh Input
function validasi_input($data)
{
$data = trim($data); //
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

// Jika terdapat request method post, maka variabel input akan diisi dengan $_POST yang akan divalidasi terlebih dahulu oleh fungsi validasi_input()
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nama = validasi_input($_POST["nama"]);
$email = validasi_input($_POST["email"]);
$nis = validasi_input($_POST["nis"]);
$pesan = validasi_input($_POST["pesan"]);
$jurusan = validasi_input($_POST["jurusan"]);
}

?>

<!DOCTYPE html>
<html lang="en">

<head>
<title>ValidasiPHP</title>
</head>

<body>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Nama : <input type="text" name="nama"> <br>
Email : <input type="text" name="email"> <br>
NIS: <input type="text" name="nis"> <br>
Pesan: <br><textarea name="pesan" rows="5" cols="40"></textarea> <br>
Jurusan:
<input type="radio" name="jurusan" value="tkj">TKJ
<input type="radio" name="jurusan" value="rpl">RPL
<input type="radio" name="jurusan" value="tkr"> TKR
<br>
<input type="submit" name="submit" id="submit" br value="submit">
</form>

<!-- Menampilkan seluruh hasil validasi dari variabel input dengan echo -->
<?php
echo "<h2>Masukan Kamu:</h2>";
echo $nama;
echo "<br>";
echo $email;
echo "<br>";
echo $nis;
echo "<br>";
echo $pesan;
echo "<br>";
echo $jurusan;
?>
</body>

</html>
Penutup
Jadi, pemahaman dalam Membuat Form Validasi PHP Sederhana sangat perlu dipahami dengan matang, karena ini berkaitan dengan keamanan dimana menurut saya keamanan adalah harga mati yang harus di penuhi, semaksimal mungkin. Terima Kasih. Semoga bermanfaat:)
Sampai jumpa di artikel selanjutnya.




2 comments for "Pengertian dan Cara Membuat Form Validasi PHP Lengkap | PHP Form"

  1. mantab kak jelas banget, ditunggu artikel selanjutnya ya

    ReplyDelete

Post a Comment

Berlangganan via Email