4. Validasi Data 2

PHP: Validasi Data Form [2/3]

Kita masih berada pada pembahasan validasi form. Pertemuan kali ini adalah pembahasan bagian 2 dari pembahasan tentang validasi form.

Pada pertemuan sebelumnya, kita telah membuat pondasi validasi form:

  • Mulai dari menampilkan form.
  • Membuat fungsi validasi() beserta membuat peraturannya.
  • Kita juga telah membuat pemeriksaan untuk satu aturan validasi yang kita namakan required.

Pada pertemuan kali ini, kita akan melengkapi proses pemeriksaan untuk:

  • Peraturan format email.
  • Peraturan format username.
  • Peraturan angka numerik.
  • Dan peraturan penulisan format url web.

Menambahkan Beberapa Peraturan

Langsung saja, kita mulai dari file proses.php. Pada pertemuan sebelumnya kita telah menambahkan peraturan “required” pada setiap input. Sekarang, kita akan menambahkan beberapa peraturan lain seperti: emailusernamenumeric dan url.

Ubah variabel $peraturan pada file proses.php menjadi seperti berikut:

<?php

require_once './helper/fungsi-validasi.php';

$peraturan = [
    'nama' => ['required'],
    'email' => ['required', 'email'],
    'username' => ['required', 'username'],
    'usia' => ['required', 'numeric'],
    'website' => ['required', 'url']
];

validasi($peraturan);

Selanjutnya kita akan membuat fungsi untuk memeriksa setiap peraturan baru yang telah kita buat.

Validasi Email

Yang pertama adalah fungsi untuk memeriksa email. Untuk memeriksa email, kita akan membuat fungsi bernama lolosEmail() di dalam file helper/fungsi-validasi.php.

<?php

function lolosEmail($nilai)
{
    return filter_var($nilai, FILTER_VALIDATE_EMAIL);
}

Penjelasan:

  • Di sini untuk memeriksa valid tidaknya sebuah email, kita menggunakan fungsi bawaan PHP dengan nama filter_var().
  • Kita sebenarnya juga bisa menggunakan regex yang pernah kita pelajari pada pembahasan: bekerja dengan regex pada PHP.
  • Akan tetapi, tentu saja menggunakan fungsi bawaan PHP jauh lebih convidence.

Panggil fungsi lolosEmail()

Masih dalam file yang sama, sekarang kita akan memanggil fungsi lolosEmail().

Kapan fungsi ini dipanggil?

Fungsi ini akan dipanggil ketika peraturan yang sedang kita periksa sama dengan “email”.

Pada foreach() kedua di dalam fungsi validasi(), tambahkan blok elseif berikut:

<?php
...
if ($peraturan === 'required') {
    ...
} elseif ($peraturan === 'email') {
    $lolos = lolosEmail($request[$input]);

    echo $lolos ? "Lolos" : "Tidak Lolos";
}
...

Dan agar kita bisa melakukan tes validasi server dengan baik, untuk sementara kita ubah dulu type="email" pada file form.php menjadi type="text".

Dengan seperti itu, kita bisa memasukkan input non-email dan tidak diganggu oleh validasi yang dilakukan oleh browser.

<div style="margin-top: 0.5rem">
    <label>Email</label> <br>
    <input type="text" name="email" placeholder="Masukkan email">
</div>

Validasi Username

Validasi selanjutnya adalah validasi username. Prosesnya sama saja seperti sebelumnya: kita buat fungsi lolosUsername() lalu memanggilnya dari dalam foreach.

Untuk fungsi lolosUsername(), kita akan memanfaat regex:

<?php

function lolosUsername($nilai)
{
    preg_match("/^[a-zA-Z0-9_]+/", $nilai, $output);

    if (count($output)) {
        return $output[0] === $nilai;
    }

    return false;
}

Penjelasan:

Untuk memahami regex lebih lanjut, anda bisa pergi ke tutorial PHP tingkat menengah tentang bekerja dengan regex pada PHP.

Memanggil fungsi lolosUsername()

Sama seperti sebelumnya, kita akan memanggil fungsi lolosUsername() ketika variabel $peraturan pada foreach() ke-2 di fungsi validasi() bernilai string “username”.

<?php
...
if ($peraturan === 'required') {
    ...
} elseif ($peraturan === 'email') {
    ...
} elseif ($peraturan === 'username') {
    $lolos = lolosUsername($request[$input]);

    echo $lolos ? "Lolos" : "Tidak Lolos";
}
...

Validasi Angka Numeric

Selanjutnya adalah validasi angka numerik.

Kita buat fungsi bernama lolosNumeric(). Dan fungsi ini sederhana sekali, ia hanya memanggil fungsi bawaan PHP yang bernama is_numeric().

<?php

function lolosNumeric($nilai)
{
    return is_numeric($nilai);
}

Seperti sebelumnya, langkah selanjutnya adalah memanggil fungsi lolosNumeric() jika variabel $peraturan sama dengan “numeric”.

<?php
...
if ($peraturan === 'required') {
    ...
} elseif ($peraturan === 'email') {
    ...
} elseif ($peraturan === 'username') {
    ...
} elseif ($peraturan === 'numeric') {
    $lolos = lolosNumeric($request[$input]);

    echo $lolos ? "Lolos" : "Tidak Lolos";
}
...

Yang terakhir, untuk menguji validasi server: apakah ia sudah bekerja dengan baik atau tidak. Sementara kita ganti dulu nilai type="numeric" menjadi type="text".

<div style="margin-top: 0.5rem">
    <label>Usia</label> <br>
    <input type="text" name="usia" placeholder="Masukkan usia">
</div>

Validasi URL Website

Kita ulangi lagi langkah-langkah yang telah kita buat sebelumnya.

Sekarang adalah validasi untuk url website.

Kita buat fungsi bernama lolosUrl() lalu memanggil fungsi filter_var() bawaan PHP untuk memvalidasi apakah suatu string adalah sebuah url yang valid atau tidak.

<?php

function lolosUrl($nilai)
{
    return filter_var($nilai, FILTER_VALIDATE_URL);
}

NB: kita tetap bisa menggunakan regex. Akan tetapi dengan cara di atas, kode lebih mudah terbaca dan rasanya lebih convidence karena kita menggunakan fungsi native PHP.

Langkah selanjutnya, panggil fungsi lolosUrl() ketika variabel $peraturan bernilai “url”.

<?php
...
if ($peraturan === 'required') {
    ...
} elseif ($peraturan === 'email') {
    ...
} elseif ($peraturan === 'username') {
    ...
} elseif ($peraturan === 'numeric') {
    ...
} elseif ($peraturan === 'url') {
    $lolos = lolosUrl($request[$input]);

    echo $lolos ? "Lolos" : "Tidak Lolos";
}
...

Yang terakhir, seperti yang sudah-sudah: kita ubah dulu sementara type="url" menjadi type="text" untuk memudahkan kita menguji fungsi validasi yang sudah kita buat di dalam PHP.

<div style="margin-top: 0.5rem">
    <label>Website</label> <br>
    <input type="text" name="website" placeholder="Masukkan website">
</div>

Eksekusi

Sampai sini, semua peraturan validasi telah terimplementasi. Kita bisa mulai memeriksa satu-persatu peraturan yang sudah kita tulis.

Ketika kita coba isi data-data yang terdapat pada form, kita akan mendapatkan output yang kira-kira seperti ini:

Kita lihat, setiap peraturan dari setiap input di atas telah berhasil tereksekusi dengan baik. Setiap peraturan yang lolos validasi, akan mengeluarkan output “Lolos”, dan jika tidak, sistem akan mengeluarkan output tulisan “Tidak Lolos”.

Kode Program Lengkap

Kode program lengkap untuk validasi form PHP part 2 ini bisa kalian dapatkan dalam repositori PHP Web Dinamis pada branch validasi-form-part-2.

Pembahasan Selanjutnya

Pada pembahasan selanjutnya, insyaallah kita akan mulai menampilkan pesan error pada form yang telah kita buat. Kita juga akan mempersingkat kode program untuk validasi, dan juga akan menampilkan nilai form terakhir yang telah dikirim ke file proses.php.

Ikuti terus tutorial PHP di Jago Ngoding, jangan lupa share ke teman-teman kalian, ya!

Terima kasih banyak.