PHP Filter adalah cara yang digunakan untuk memvalidasi dan memfilter/menyaring masukan yang tidak aman misal dari input text. Hal ini sangat penting bagi sebuah aplikasi berbasis web yang diakses oleh banyak orang diseluruh dunia. Ekstensi PHP Filter membuat proses filtering data menjadi lebih mudah dan lebih cepat.
Mengapa perlu menggunakan PHP Filter ?
Hampir semua website sekarang menggunakan eksternal input, misal yang paling sederhara adalah untuk memberi sebuah komentar pada sebuah blog. Selanjutnya eksternal input tadi dihubungkan dengan sebuah aplikasi web service yang menangani proses submit form. Nah, PHP Filter dibutuhkan agar data yang menjadi masukan program benar-benar valid dan tidak membahayakan website.
Data-data eksternal yang menjadi input sebuah program diantaranya adalah Input data dari form, Data dari Cookies, Web services data, Server variables dan Hasil Query Database. Data-data ini harus benar-benar valid sesuai dengan kebutuhan variabel pada program dan tidak membahayakan dan mengancam keamanan sebuah website.
Fungsi-fungsi untuk PHP Filter
Ada beberapa fungsi PHP yang bisa dipakai untuk memfilter sebuah variabel, diantaranya adalah sebagai berikut :
- filter_var() – Memfilter satu variable dengan filter tententu
- filter_var_array() – Memfilter beberapa variabel dengan filter yang sama atau berbeda
- filter_input – Mengambil sebuah variabel input lalu memfilternya
- filter_input_array – Mengambil beberapa variabel input dan memfilternya dengan flter yang sama atau berbeda
Ada dua macam filter yang diset pada fungsi PHP filter diatas, yaitu Validating Filters dan Sanitizing Filters.
Contoh penggunaan fungsi filter_var() untuk memfilter variabel bertipe integer
<?php
$int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT)) {
echo("Bukan tipe Integer");
} else {
echo("Variabel bertipe Integer");
}
?>
Penjelasan Script :
Program diatas menggunakakan fungsi filter_var dengan parameter FILTER_VALIDATE_INT untuk memfilter variabel $int. Jika benar bertipe integer maka ditampilkan pesan “Variabel bertipe Integer”. Fungsi diatas akan menampilkan “Bukan tipe Integer” jika variabel $int diisi dengan huruf misal “abc” atau campuran huruf dan angka seperti “abc999”.
Validating filters
adalah filter yang digunakan untuk memvalidasi input, misalnya mengecek URL dan Email. Validating Filters mengembalikan nilai FALSE jika salah.
Berikut ini beberapa macam Validating Filter:
Nama ID | Deskripsi |
---|---|
FILTER_VALIDATE_BOOLEAN | Mengembalikan nilai TRUE jika yang dicek bernilai “1”, “true”, “on” and “yes”, dan mengembalikan FALSE jika yang dicek bernilai “0”, “false”, “off”, “no”, and “”, NULL |
FILTER_VALIDATE_EMAIL | Memvalidasi nilai sebagai email |
FILTER_VALIDATE_FLOAT | Memvalidasi nilai sebagai float |
FILTER_VALIDATE_INT | Memvalidasi nilai sebagai integer,opsional dari range tertentu |
FILTER_VALIDATE_IP | Memvalidasi nilai sebagai alamat IP, opsional IPv4 dan IPv6 |
FILTER_VALIDATE_REGEXP | Memvalisadi nilai terhadap regexp, kompatibel dengan Perl-regular expression |
FILTER_VALIDATE_URL | Memvalidasi nilai sebagai URL, opsional dengan komponen required |
Contoh script menggunakan Validating Filters
<?php
if(!filter_has_var(INPUT_GET, "email")) {
echo("Tipe input tidak ditemukan");
} else {
if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) {
echo "E-Mail tidak valid";
} else {
echo "E-Mail valid";
}
}
?>
Penjelasan Script :
Pada contoh diatas terdapat masukan email yang dikirim dengan metode GET. Pengecekan dilakukan dua kali, yang pertama dengan fungsi filter_has_var() dan dilanjutkan dengan fungsi filter_input(). Untuk mengecek validitas masukan email digunakan fungsi filter_input dengan parameter FILTER_VALIDATE_EMAIL.
Sanitizing filters
adalah filter yang digunakan untuk membersihkan karakter pada string. Sanitizing filters bekerja dengan mengijinkan atau melarang penggunaan karakter tertentu pada string. Sanitizing filter mengembalikan nilai string.
Berikut ini beberapa macam Sanitizing Filter:
ID Name | Description |
---|---|
FILTER_SANITIZE_EMAIL | Membuang semua karakter kecuali huruf, angka dan !#$%&’*+-/=?^_`{|}~@.[] |
FILTER_SANITIZE_ENCODED | Meng-encode string URL, optional memotong atau meng-encode karakter khusus. |
FILTER_SANITIZE_MAGIC_QUOTES | Mengaplikasikan addslashes() |
FILTER_SANITIZE_NUMBER_FLOAT | Membuang semua karakter, kecuali angka, +- dan opsional .,eE |
FILTER_SANITIZE_NUMBER_INT | Membuang semua karakter kecuali angka and +- |
FILTER_SANITIZE_SPECIAL_CHARS | Melepaskan karakter dari HTML encode ‘”<>& dan karakter dengan nilai ASCII kurang dari 32 |
FILTER_SANITIZE_FULL_SPECIAL_CHARS | |
FILTER_SANITIZE_STRING | Tag pemotongan, opsional memotong atau meng-encode karakter khusus. |
FILTER_SANITIZE_STRIPPED | Nama lain dari filter “string” |
FILTER_SANITIZE_URL | Membuang semua karakter kecuali huruf, angka dan $-_.+!*'(),{}|\^~[]`<>#%”;/?:@&= |
FILTER_UNSAFE_RAW | Tidak melakukan apa-apa, opsional memotong atau meng-encode karakter khusus. |
Contoh script meggunakan Sanitizing Filters
<?php
if(!filter_has_var(INPUT_POST, "url")) {
echo("Tipe input tidak ditemukan");
} else {
$url = filter_input(INPUT_POST,
"url", FILTER_SANITIZE_URL);
}
?>
Penjelasan Script :
Pada contoh diatas terdapat input URL yang dikirim dengan metode POST. Pengecekan dilakukan dua kali, yang pertama dengan fungsi filter_has_var() dan dilanjutkan dengan fungsi filter_input(). Dengan parameter FILTER_SANITIZE_URL pada fungsi filter_input maka semua karakter yang tidak valid akan dibuang lalu nilai baru disimpan dalam variabel $url.
Sebagai contoh jika variabel input diberi nilai seperti ini “//www.W3ååSchøøools.com/”, variabel $url setelah proses sanitizing akan menjadi seperti ini:
//www.W3Schools.com/
Referensi: