Cara Lebih Efektif Membangun Fungsi Penanganan Input di PHP

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 :

  1. 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.
  2. 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

  3. 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;
}

 

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*