Filter PHP digunakan untuk memvalidasi dan memfilter data dari sumber yang tidak aman, seperti input pengguna.
Filter PHP digunakan untuk memvalidasi dan memfilter data dari sumber yang tidak aman.
Menguji, memvalidasi, dan memfilter input pengguna atau data khusus adalah bagian penting dari aplikasi web apa pun.
Ekstensi filter PHP dirancang untuk membuat pemfilteran data lebih mudah dan cepat.
Hampir semua aplikasi web bergantung pada masukan eksternal. Data ini biasanya berasal dari pengguna atau aplikasi lain (seperti layanan web). Dengan menggunakan filter, Anda dapat memastikan bahwa aplikasi Anda mendapatkan jenis masukan yang benar.
Anda harus selalu memfilter data eksternal!
Pemfilteran masukan adalah salah satu topik keamanan aplikasi yang paling penting.
Apa itu data eksternal?
Masukkan data dari formulir
kue
Data layanan web
variabel server
Hasil kueri basis data
Untuk memfilter variabel, gunakan salah satu fungsi filter berikut:
filter_var() - memfilter satu variabel melalui filter tertentu
filter_var_array() - memfilter beberapa variabel dengan filter yang sama atau berbeda
filter_input - mengambil variabel input dan memfilternya
filter_input_array - mengambil beberapa variabel masukan dan memfilternya melalui filter yang sama atau berbeda
Dalam contoh berikut, kami memvalidasi bilangan bulat menggunakan fungsi filter_var():
<?php $int = 123 ; jika ( ! filter_var ( $int , FILTER_VALIDATE_INT ) ) { echo ( " Bukan bilangan bulat sah " ) ; kalau tidak { echo ( " adalah bilangan bulat sah " ) ; ?>
Kode di atas menggunakan filter "FILTER_VALIDATE_INT" untuk memfilter variabel.
Jika kita mencoba menggunakan variabel non-integer (seperti "123abc"), outputnya akan menjadi: "Integer tidak valid".
Untuk daftar lengkap fungsi dan filter, kunjungi Manual Referensi Filter PHP kami.
Ada dua jenis filter:
Memvalidasi filter:
Digunakan untuk memvalidasi input pengguna
Aturan pemformatan yang ketat (seperti validasi URL atau E-Mail)
Mengembalikan tipe yang diharapkan jika berhasil atau FALSE jika gagal
Filter sanitasi:
Digunakan untuk mengizinkan atau melarang karakter tertentu dalam sebuah string
Tidak ada aturan format data
selalu mengembalikan string
Opsi dan tanda digunakan untuk menambahkan opsi pemfilteran tambahan ke filter yang ditentukan.
Filter yang berbeda memiliki opsi dan tanda yang berbeda.
Dalam contoh berikut, kami memvalidasi bilangan bulat menggunakan filter_var() dengan opsi "min_range" dan "max_range":
<?php $var = 300 ; $int_options = susunan ( " pilihan " => susunan ( " min_range " => 0 , " max_range " => 256 ) ) ; jika ( ! filter_var ( $var , FILTER_VALIDATE_INT , $int_options ) ) { echo ( " Bukan bilangan bulat sah " ) ; kalau tidak { echo ( " adalah bilangan bulat sah " ) ; ?>
Sama seperti kode di atas, opsi harus dimasukkan ke dalam array terkait yang disebut "opsi". Jika menggunakan flag, tidak perlu berada dalam array.
Karena bilangan bulatnya adalah "300", yang tidak berada dalam kisaran yang ditentukan, keluaran dari kode di atas adalah:
bukan bilangan bulat hukum
Untuk daftar lengkap fungsi dan filter, kunjungi Manual Referensi Filter PHP kami. Anda dapat melihat opsi dan tanda yang tersedia untuk setiap filter.
Mari kita coba memvalidasi masukan dari formulir.
Hal pertama yang perlu kita lakukan adalah memastikan bahwa data masukan yang kita cari ada.
Kemudian kita menggunakan fungsi filter_input() untuk memfilter data masukan.
Dalam contoh berikut, variabel input "email" diteruskan ke halaman PHP:
<?php jika ( ! filter_has_var ( INPUT_GET , " email " ) ) { echo ( " Tidak ada parameter email " ) ; kalau tidak { jika ( ! filter_input ( INPUT_GET , " email " , FILTER_VALIDATE_EMAIL ) ) { gema " Bukan email yang valid " } kalau tidak { gema " Ini adalah Email yang sah " } } ?>
Contoh di atas memiliki variabel masukan (email) yang diteruskan melalui metode "GET":
Periksa apakah ada variabel input "email" bertipe "GET"
Jika variabel input ada, periksa apakah itu alamat email yang valid
Mari kita coba membersihkan URL yang diteruskan dari formulir.
Pertama, kita ingin memastikan bahwa data masukan yang kita cari ada.
Kemudian, kita menggunakan fungsi filter_input() untuk memurnikan data masukan.
Dalam contoh berikut, variabel input "url" diteruskan ke halaman PHP:
<?phpif(!filter_has_var(INPUT_GET, "url")){ echo("Tidak ada parameter url");}else{ $url = filter_input(INPUT_GET, "url", FILTER_SANITIZE_URL);
Contoh di atas memiliki variabel masukan (url) yang diteruskan melalui metode "GET":
Periksa apakah ada variabel input "url" bertipe "GET"
Jika variabel masukan ini ada, bersihkan (hapus karakter ilegal) dan simpan dalam variabel $url
Jika variabel input berupa string yang mirip dengan ini: "http://www.ruåånoøøob.com/", variabel $url yang sudah disanitasi akan terlihat seperti ini:
Formulir biasanya terdiri dari beberapa kolom input. Untuk menghindari panggilan berulang ke fungsi filter_var atau filter_input, kita dapat menggunakan fungsi filter_var_array atau filter_input_array.
Dalam contoh ini, kita menggunakan fungsi filter_input_array() untuk memfilter tiga variabel GET. Variabel GET yang diterima adalah nama, umur, dan alamat email:
<?php $filter = susunan ( " nama " => susunan ( " menyaring " => FILTER_SANITIZE_STRING ) , " umur " => larik ( " filter " => FILTER_VALIDATE_INT , " opsi " => larik ( " min_range " => 1 , " max_range " => 120 ) ) , " email " => FILTER_VALIDATE_EMAIL ) ; $ hasil = filter_input_array ( INPUT_GET , $filter ) ; ( ! $hasil [ " usia " ] ) { echo ( " Umur harus antara 1 dan 120. <br> " ) ; elseif ( ! $hasil [ " email " ] ) { echo ( " Email itu ilegal <br> " ) } kalau tidak { echo ( " Masukan benar " ) ; ?>
Contoh di atas memiliki tiga variabel input (nama, umur dan email) yang diteruskan melalui metode "GET":
Menetapkan array yang berisi nama variabel masukan dan filter untuk variabel masukan tertentu
Panggil fungsi filter_input_array(), parameternya mencakup variabel input GET dan array yang baru saja disetel
Periksa apakah variabel "age" dan "email" dalam variabel $result memiliki input ilegal. (Jika ada input ilegal, variabel inputnya adalah FALSE setelah menggunakan fungsi filter_input_array().)
Argumen kedua pada fungsi filter_input_array() dapat berupa array atau ID dari satu filter.
Jika parameter ini adalah ID dari satu filter, maka filter yang ditentukan akan memfilter semua nilai dalam array input.
Jika parameternya adalah array, maka array harus mengikuti aturan berikut:
Harus berupa array asosiatif yang berisi variabel input yang merupakan kunci dari array (seperti variabel input "usia")
Nilai larik ini harus berupa ID filter, atau larik yang menentukan filter, tanda, dan opsi
Dengan menggunakan filter FILTER_CALLBACK, Anda dapat memanggil fungsi khusus dan menggunakannya sebagai filter. Dengan cara ini, kami memiliki kendali penuh atas pemfilteran data.
Anda dapat membuat fungsi kustom Anda sendiri atau menggunakan fungsi PHP yang sudah ada.
Tentukan fungsi filter yang ingin Anda gunakan dengan cara yang sama seperti opsi yang ditentukan. Dalam array asosiatif, dengan nama "opsi".
Dalam contoh berikut, kami menggunakan fungsi khusus untuk mengonversi semua "_" menjadi ".":
<?php fungsi convertSpace ( $string ) { kembali str_replace ( " _ " , " . " , $ string ) } $string = " www_codercto_com ! " ; filter_var ( $string , FILTER_CALLBACK , array ( " pilihan " => " convertSpace " ) ? > ;
Contoh di atas mengubah semua "_" menjadi ".":
Buat fungsi yang menggantikan "_" dengan "."
Panggil fungsi filter_var() dengan filter FILTER_CALLBACK dan array yang berisi fungsi kita