Cara menggunakan empty array python check

Setelah berhasil mengambil dan menampilkan nilai dari form, hal berikutnya yang harus kita lakukan terhadap data tersebut adalah melakukan proses validasi. Proses validasi dilakukan terhadap nilai yang dimasukkan melalui form.

Dalam tutorial kali ini kita akan membahas Cara Membuat Validasi Form dengan PHP menggunakan fungsi isset() dan fungsi empty().


Pentingnya Melakukan Validasi Nilai Form

Nilai yang telah diinput oleh user atau pengunjung web, tidak bisa begitu saja di simpan langsung ke dalam database. Karena kita tidak tahu apakah nilai tersebut telah sesuai dengan nilai yang kita kehendaki. Misalkan apakah nilai tersebut harus berupa angka, atau hanya bisa berupa huruf, atau apakah hanya bisa diinput dalam range tertentu saja.

Dalam kasus yang ekstrim, seorang user bisa saja memasukkan kode script atau tag HTML yang bisa merusak situs kita, hal ini dikenal dengan Cross-site Scripting. Sebuah proses validasi nilai merupakan hal yang sangat penting dalam merancang form. Khusus untuk validasi mencegah Cross-site Scripting dan juga HTML injection ini akan saya bahas pada tutorial form PHP berikutnya.

Dalam pembahasan tutorial validasi form ini, saya masih menggunakan contoh halaman form.html yang pernah kita buat pada tutorial sebelumnya, berikut adalah kode HTML untuk halaman form.html:

<!DOCTYPE html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <title>Belajar Form PHP</title>
</head>
<body>
   <h2>Tutorial Belajar Form HTML - PHP </h2>
   <form action="proses.php" method="get">
     Nama: <input type="text" name="nama" />
     <br />
     E-Mail: <input type="text" name="email" />
     <br />
     <input type="submit" value="Proses Data" >
   </form>
</body>
</html>

Cara menggunakan empty array python check


Memeriksa Ketersediaan Variabel Form dengan Fungsi isset()

Validasi pertama yang paling sederhana dan ‘hampir’ selalu ada dalam tiap proses validasi form dalam PHP adalah memeriksa apakah objek form tersebut sudah tersedia atau tidak. Sebagai contoh sederhananya: apakah variabel $_GET[‘nama’] tersedia untuk diproses atau tidak.

Proses memeriksa ‘ketersediaan’ variabel ini menjadi penting karena PHP akan mengeluarkan pesan peringatan jika kita mengakses nilai sebuah variabel yang belum didefenisikan terlebih dahulu.

Sebagai contoh, jika kita mengakses langsung halaman proses.php (tanpa melalui halaman form.html) dan tanpa menambahkan URL (seperti pembahasan pada tutorial Perbedaan Metode Pengiriman Form GET dan POST) PHP akan menampilkan pesan peringatan seperti berikut ini:

Cara menggunakan empty array python check

Notice: Undefined index adalah pesan error yang terjadi karena kita langsung menampilkan variabel $_GET[’nama’] dan $_GET[’email’] yang memang belum diset sebelumnya.

Untuk memeriksa apakah sebuah objek form telah didefenisikan atau telah di-set sebelumnya, kita bisa menggunakan fungsi bawaan PHP: isset(). Fungsi isset() akan menghasilkan nilai true jika sebuah variabel telah didefenisikan, dan false jika variabel tersebut belum dibuat.

Sebagai langkah antisipasi, saya akan membuat proses validasi untuk menangani variabel $_GET yang belum di-set, berikut adalah modifikasi file proses.php:

<?php
if (isset($_GET['nama']))
{
   echo $_GET['nama'];
}
 
echo "<br />";
 
if (isset($_GET['email']))
{
   echo $_GET['email'];
}
?>

Sekarang, file proses.php tidak akan menghasilkan error apabila diakses tanpa melalui form.html. Namun perubahan kode tersebut tidak terlalu berguna karena tidak memberikan pesan error yang jelas. Berikut adalah modifikasi file proses.php agar lebih informatif:

<?php
if (isset($_GET['nama']) AND isset($_GET['email']))
{
   echo $_GET['nama'];
   echo $_GET['email'];
}
else
{
   echo "Maaf, anda harus mengakses halaman ini dari form.html";
}
?>

Cara menggunakan empty array python check
Pada kode PHP diatas saya mengharuskan nilai $_GET[‘nama’] dan $_GET[’email’] tersedia, baru nilai ditampilkan, namun jika tidak ada, akan ditampilkan pesan bahwa halaman ini hanya bisa diakses dari form.html.


Memeriksa Apakah Variabel Form Telah Diisi

Fungsi isset() yang kita bahas sebelumnya hanya memeriksa apakah sebuah objek form ada atau tidak. Fungsi isset() tetap bernilai true meskipun user tidak mengisi form sama sekali (variabel form bernilai kosong, namun variabel tersebut dianggap telah di-set).

Untuk memeriksa apakah sebuah objek form telah diisi atau tidak, kita bisa menggunakan fungsi: empty().

Fungsi empty() akan menghasilkan nilai false jika sebuah variabel telah diisi, dan bernilai true jika variabel tersebut belum diisi. Dengan menggunakan stuktur IF dan fungsi empty(), kita bisa membuat logika validasi objek form mana saja yang dianggap perlu (harus diisi) dan mana yang boleh dikosongkan. Dan kemudian menampilkan pesan error yang sesuai.

Sebagai contoh, saya akan memodifikasi file proses.php agar menampilkan pesan error jika kotak input nama tidak diisi. Berikut adalah kode PHP pada halaman proses.php:

<?php
if (isset($_GET['nama']) AND isset($_GET['email']))
{
   $nama=$_GET['nama'];
   $email=$_GET['email'];
}
else
{
   die("Maaf, anda harus mengakses halaman ini dari form.html");
}
 
if (!empty($nama))
{
   echo "Nama: $nama <br /> Email: $email";
}
else
{
   die("Maaf, anda harus mengisi nama");
}
?>

Dalam kode PHP diatas, saya memodifikasi beberapa bagian kode program.

Pada logika IF pertama, saya melakukan pengecekan apakah variabel $_GET[‘nama’] dan $_GET[‘email’] tersedia atau tidak. Jika tersedia maka pindahkan nilainya ke variabel $nama dan $email agar lebih mudah untuk diproses. Namun jika tidak, fungsi die() akan menghentikan proses dan menampilkan pesan kesalahan.

Pada logika IF kedua, saya memeriksa apakah variabel $nama kosong atau tidak dengan fungsi !empty(). Fungsi !empty($nama) akan menghasilkan nilai true hanya jika variabel $nama tidak kosong (perhatikan tanda ! sebagai pembalik logika empty()). Namun jika $nama ternyata kosong (tidak diisi), maka tampilkan pesan kesalahan.

Cara menggunakan empty array python check


Menyeleksi Tipe Data Objek Form

Setelah objek form dipastikan tersedia, tidak kosong, validasi berikutnya yang biasanya dilakukan adalah memastikan tipe data dan range data yang diinput oleh user.

Untuk mengecek tipe data sebuah variabel, PHP menyediakan beberapa fungsi tergantung tipe datanya, yakni fungsi is_string(), is_int(),is_float(),is_numeric(),is_bool(), is_array(), dan is_object(). Sesuai dengan namanya, masing-masing fungsi tersebut akan mengecek tipe data dari variabel yang ditest.

Diantara fungsi-fungsi diatas, fungsi is_numeric() mungkin butuh sedikit penjelasan. Fungsi is_numeric() akan mengecek apakah sebuah tipe data merupakan angka baik itu float atau integer.

Khusus objek form variabel angka seperti umur, biasanya selain menyeleksi apakah nilainya berupa angka integer, kita mungkin juga menambahkan aturan bahwa nilai umur harus diatas 17 tahun. Untuk menambahkan fungsi ini, fungsi is_int() dapat dikombinasikan dengan struktur IF.

Sebagai contoh saya akan menambahkan validasi untuk tag input nama bahwa nama tidak boleh diisi dengan angka. Untuk keperluan ini saya akan menggunakan fungsi is_numeric(). Berikut adalah modifikasi file proses.php:

<?php
if (isset($_GET['nama']) AND isset($_GET['email']))
{
   $nama=$_GET['nama'];
   $email=$_GET['email'];
}
else
{
   die("Maaf, anda harus mengakses halaman ini dari form.html");
}
 
if(empty($nama))
{
   die("Maaf, anda harus mengisi nama");
}
else
{
   if (is_numeric($nama))
   {
      die("Maaf, nama harus berupa huruf");
   }
   else
   {
      echo "Nama: $nama <br /> Email: $email";
   }
}
?>

Dalam kode diatas, saya menambahkan 1 lagi logika IF untuk menyeleksi apakah variabel $nama berisi angka numerik (integer atau float). Jika $nama bertipe numerik, maka tampilkan pesan error.

Cara menggunakan empty array python check


Di dalam tutorial form PHP kali ini kita telah mempelajari cara menvalidasi nilai inputan form. Namun apa yang telah kita pelajari disini hanya sebagian kecil dari proses validasi yang sebenarnya harus dilakukan. Misalnya, untuk menfilter variabel $nama diatas, akan lebih cocok menggunakan regular expression daripada fungsi is_numeric(), namun yang penting kita telah bisa ’menangkap’ cara pembuatan validasi form.

Di dalam tutorial berikutnya, masih berkaitan dengan proses validasi form, kita akan mempelajari tentang Cara Mencegah Cross-site Scripting dan HTML injection.