Cara Lebih Efektif Membangun Fungsi Penanganan Input di PHP
Oleh : Reza Ervani bin Asmanu
بسم الله الرحمن الرحيم
Nampak kode seperti berikut :
function forminput($span, $tipe, $nama,$value) { echo "<span class=\"input-group-text\">$span</span>\n"; echo "<input class=\"form-control\" type=\"".$tipe."\" name=\"".$nama."\" value=\"".$value."\">\n"; echo "<br />"; }
Kode tersebut berjalan dengan baik. Tapi ada beberapa hal yang bisa masuk dalam pertimbangan untuk menjadikan kode tersebut lebih baik. Diantaranya :
- Pemisahan (Separation of Concerns) : Daripada melakukan echo tag html dan nilainya secara langsung di dalam suatu fungsi, adalah lebih baik untuk membuat return HTML sebagai setring dan memunculkannya (print) dimanapun dia dibutuhkan. Pemisahan ini membuat kode lebih mudah digunakan ulang dan meningkatkan readibility suatu kode.
- Sanitasi Input Pengguna : adalah penting untuk melakukan sanitasi input sebelum menggunakannya di HTML untuk mencegah serangan XSS (Cross-Site Scripting). Kita dapat menggunakan fungsi
htmlspecialchars()
untuk melakukan sanitasi pada input
- Validasi Argumen Fungsi : adalah praktika yang baik untuk melakukan validasi argumen fungsi untuk mencegah error dan perilaku yang tidak diharapkan. Kita dapat mengunnakan fungsi PHP
assert()
untuk memeriksa tipe dan value dari suatu argumen
Berikut ini versi yang sudah ditingkatkan dari kode diatas dengan memasukkan 3 (tiga) pertimbangan tersebut :
function formInput(string $label, string $type, string $name, string $value = ""): string { assert(in_array($type, ['text', 'password', 'email', 'number'])); assert(!empty($label) && !empty($type) && !empty($name)); $sanitizedLabel = htmlspecialchars($label, ENT_QUOTES); $sanitizedType = htmlspecialchars($type, ENT_QUOTES); $sanitizedName = htmlspecialchars($name, ENT_QUOTES); $sanitizedValue = htmlspecialchars($value, ENT_QUOTES); $input = "<span class=\"input-group-text\">$sanitizedLabel</span>\n"; $input .= "<input class=\"form-control\" type=\"$sanitizedType\" name=\"$sanitizedName\" value=\"$sanitizedValue\">\n"; $input .= "<br />\n"; return $input; }
Leave a Reply