cloud-hosting-terbaik-indonesia

Tutorial Form PHP Part 5: Cara Membuat Validasi Form PHP (fungsi isset dan empty)

Posted on

Setelah berhasil mengambil dan menampilkan nilai dari form, hal berikutnya yang mesti kita lakukan kepada data tersebut yakni menjalankan proses validasi. Proses validasi dilakukan kepada nilai yang dimasukkan via form.

Pada panduan kali ini kita akan membahas Cara Membuat Validasi Form dengan PHP menggunakan kegunaan isset() dan kegunaan empty().


Pentingnya Menjalankan Validasi Nilai Form

Nilai yang telah diinput oleh user atau pengunjung web, tak dapat demikian itu saja di simpan seketika ke pada database. Karena kita tak tahu apakah nilai tersebut telah sesuai dengan nilai yang kita kehendaki. Misalkan apakah nilai tersebut mesti berupa angka, atau hanya dapat berupa huruf, atau apakah hanya dapat diinput pada range tertentu saja.

Pada kasus yang ekstrim, seorang user dapat saja memasukkan kode script atau tag HTML yang dapat merusak situs kita, hal ini dikenal dengan Cross-site Scripting. Sebuah proses validasi nilai adalah sebuah hal yang benar-benar urgen pada mendesain form. Khusus bagi validasi mencegah Cross-site Scripting dan pun HTML injection ini akan saya bahas di panduan form PHP berikutnya.

Pada pembahasan panduan validasi form ini, saya masih menggunakan contoh halaman form.html yang pernah kita bikin di panduan sebelumnya, berikut yakni kode HTML bagi halaman form.html:


Memeriksa Ketersediaan Variabel Form dengan Manfaat isset()

Validasi pertama-tama yang sangat sederhana dan ‘hampir’ selalu ada pada tiap proses validasi form pada PHP yakni memeriksa apakah objek form tersebut telah terdapat atau tak. Selaku contoh sederhananya: apakah variabel $_GET[‘nama’] terdapat bagi diproses atau tak.

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

Selaku contoh, kalau kita mengakses seketika halaman proses.php (tanpa via halaman form.html) dan tanpa menambahkan URL (seperti pembahasan di panduan Perbedaan Metode Pengiriman Form GET dan POST) PHP akan menampilkan pesan peringatan seperti berikut ini:

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

Bagi memeriksa apakah sebuah objek form telah didefenisikan atau telah di-set sebelumnya, kita dapat menggunakan kegunaan bawaan PHP: isset(). Manfaat isset() akan menghasilkan nilai true kalau sebuah variabel telah didefenisikan, dan false kalau variabel tersebut belum dibangun.

Selaku langkah antisipasi, saya akan membangun proses validasi bagi menangani variabel $_GET yang belum di-set, berikut yakni modifikasi file proses.php:

Sekarang ini, file proses.php tak akan menghasilkan error apabila diakses tanpa via form.html. Namun perubahan kode tersebut tak terlalu bermanfaat karena tak memberikan pesan error yang jelas. Berikut yakni modifikasi file proses.php agar lebih informatif:

 Di kode PHP diatas saya mengharuskan nilai $_GET[‘nama’] dan $_GET[’email’] terdapat, baru nilai ditampilkan, namun kalau tak ada, akan ditampilkan pesan bahwa halaman ini hanya dapat diakses dari form.html.


Memeriksa Apakah Variabel Form Telah Diisi

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

Bagi memeriksa apakah sebuah objek form telah diisi atau tak, kita dapat menggunakan kegunaan: empty().

Manfaat empty() akan menghasilkan nilai false kalau sebuah variabel telah diisi, dan bernilai true kalau variabel tersebut belum diisi. Dengan menggunakan stuktur IF dan kegunaan empty(), kita dapat membangun logika validasi objek form mana saja yang dianggap perlu (mesti diisi) dan mana yang boleh dikosongkan. Dan kemudian menampilkan pesan error yang sesuai.

Selaku contoh, saya akan memodifikasi file proses.php agar menampilkan pesan error kalau kotak input nama tak diisi. Berikut yakni kode PHP di halaman proses.php:

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

Di logika IF pertama-tama, saya menjalankan pengecekan apakah variabel $_GET[‘nama’] dan $_GET[‘email’] terdapat atau tak. Jikalau terdapat karenanya pindahkan nilainya ke variabel $nama dan $email agar lebih gampang bagi diproses. Namun kalau tak, kegunaan die() akan menghentikan proses dan menampilkan pesan kesalahan.

Di logika IF kedua, saya memeriksa apakah variabel $nama kosong atau tak dengan kegunaan !empty(). Manfaat !empty($nama) akan menghasilkan nilai true hanya kalau variabel $nama tak kosong (perhatikan tanda ! selaku pembalik logika empty()). Namun kalau $nama ternyata kosong (tak diisi), karenanya tampilkan pesan kesalahan.


Menyeleksi Tipe Data Objek Form

Setelah objek form dipastikan terdapat, tak kosong, validasi berikutnya yang biasanya dilakukan yakni memastikan tipe data dan range data yang diinput oleh user.

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

Diantara fungsi-fungsi diatas, kegunaan is_numeric() mungkin butuh sedikit penjelasan. Manfaat is_numeric() akan mengecek apakah sebuah tipe data adalah sebuah angka bagus itu float atau integer.

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

Selaku contoh saya akan menambahkan validasi bagi tag input nama bahwa nama tak boleh diisi dengan angka. Bagi kebutuhan ini saya akan menggunakan kegunaan is_numeric(). Berikut yakni modifikasi file proses.php:

Pada kode diatas, saya menambahkan 1 lagi logika IF bagi menyeleksi apakah variabel $nama berisi angka numerik (integer atau float). Jikalau $nama bertipe numerik, karenanya tampilkan pesan error.


Di pada panduan form PHP kali ini kita telah mempelajari cara menvalidasi nilai inputan form. Namun apa yang telah kita pelajari disini hanya beberapa kecil dari proses validasi yang sebetulnya mesti dilakukan. Misalnya, bagi menfilter variabel $nama diatas, akan lebih cocok menggunakan regular expression daripada kegunaan is_numeric(), namun yang urgen kita telah dapat ’menangkap’ cara penyusunan validasi form.

Di pada panduan berikutnya, masih berkaitan dengan proses validasi form, kita akan mempelajari mengenai Cara Mencegah Cross-site Scripting dan HTML injection.


Sumber https://www.duniailkom.com/