Sunday, November 2, 2014

Cara Menggunakan PHP Filter

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 "http://www.W3ååSchøøools.com/", variabel $url setelah proses sanitizing akan menjadi seperti ini:

http://www.W3Schools.com/

Referensi:

0 komentar

Post a Comment