Penyaring (Filter) PHP
- Halaman sebelumnya Exception PHP
- Halaman berikutnya Pengenalan MySQL
Penapis PHP digunakan untuk mengesahkan dan menapis data dari sumber yang tidak selamat, seperti input pengguna.
Apakah penapis PHP?
Penapis PHP digunakan untuk mengesahkan dan menapis data dari sumber yang tidak selamat.
Pengesahan dan penapisan input pengguna atau data pilihan adalah bagian penting dalam mana-mana aplikasi web.
Tujuannya untuk merancang ekstensi penapis PHP adalah untuk membuat penapisan data lebih mudah dan cepat.
Mengapa menggunakan penapis?
Sebarang aplikasi web kebanyakan bergantung kepada input luaran. Data ini biasanya berasal daripada pengguna atau aplikasi lain (seperti perkhidmatan web). Dengan menggunakan penapis, anda dapat memastikan bahawa aplikasi mendapat jenis input yang betul.
Anda sebaiknya selalu menapis data eksternal!
Penapisan input adalah salah satu topik keamanan aplikasi yang penting.
Apa itu data eksternal?
- Input data dari formulir
- Cookies
- Variabel server
- Hasil kueri database
Fungsi dan penapisan
Untuk menapis variabel, gunakan salah satu fungsi penapisan di bawah ini:
- filter_var() - Menapis variabel tunggal melalui penapisan yang ditentukan
- filter_var_array() - Menapis berbagai variabel melalui penapisan yang sama atau berbeda
- filter_input - Mengambil variabel input satu dan menapisnya
- filter_input_array - Mengambil berbagai variabel input dan menapisnya melalui penapisan yang sama atau berbeda
Dalam contoh di bawah ini, kami menggunakan fungsi filter_var() untuk memvalidasi bilangan bulat:
<?php $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)) { echo("Integer is not valid"); } else { echo("Integer is valid"); } ?>
Kode di atas menggunakan penapisan "FILTER_VALIDATE_INT" untuk menapis variabel. Karena bilangan bulat ini sah, output kode adalah: "Integer is valid".
Jika kami mencoba menggunakan variabel yang bukan bilangan bulat, outputnya adalah: "Integer is not valid".
Untuk daftar lengkap fungsi dan penapisan, silakan kunjungi Panduan Penapis PHP。
Validating dan Sanitizing
Ada dua penapisan:
Penapisan Validating:
- Untuk memvalidasi input pengguna
- Aturan format yang ketat (seperti pengesahan URL atau E-Mail)
- Jika sukses, kembalikan tipe yang diharapkan, jika gagal, kembalikan FALSE
Penapisan Sanitizing:
- Untuk memungkinkan atau melarang karakter yang ditentukan di dalam string
- Tidak ada aturan format data
- Selalu mengembalikan string
Opsi dan tanda
Opsi dan tanda digunakan untuk menambahkan opsi penapisan ekstra ke penapisan yang ditentukan.
Penapisan yang berbeda memiliki berbagai opsi dan tanda.
Dalam contoh di bawah ini, kami menggunakan filter_var() dan pilihan "min_range" serta "max_range" untuk memvalidasi bilangan bulat:
<?php $var=300; $int_options = array( "options"=>array ( "min_range"=>0, "max_range"=>256 ) ); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) { echo("Integer is not valid"); } else { echo("Integer is valid"); } ?>
Seperti kode di atas, opsi harus disimpan dalam array yang dinamai "options". Jika digunakan tanda, maka tidak perlu disimpan dalam array.
Karena bilangan bulat adalah "300", ia tidak berada dalam rentang yang ditentukan, output kode di atas akan adalah "Integer adalah tidak sah".
Untuk daftar lengkap fungsi dan penapis, kunjungi CodeW3C.com yang disediakan Panduan Penapis PHPAnda dapat melihat opsi dan tanda yang tersedia untuk setiap penapis.
Verifikasi input
Biarkan kami mencoba memverifikasi input yang datang dari formulir.
Yang pertama yang perlu kami lakukan adalah memastikan adanya data input yang kita cari.
Lalu kami menggunakan fungsi filter_input() untuk menyaring data input.
Dalam contoh di bawah, variable input "email" diangkut ke halaman PHP:
<?php if(!filter_has_var(INPUT_GET, "email")) { echo("Tipe input tidak ada"); } else { if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) { echo "E-Mail adalah tidak sah"; } else { echo "E-Mail adalah sah"; } } ?>
Pengertian contoh:
Contoh di atas ada variable input (email) yang diangkut melalui metode "GET":
- Periksa apakah ada variable input "email" jenis "GET"
- Jika ada variable input, periksa apakah itu adalah alamat email yang sah
Pembersihan input
Biarkan kami mencoba membersihkan URL yang datang dari formulir.
Pertama, kami harus memastikan adanya data input yang kita cari.
Lalu, kami menggunakan fungsi filter_input() untuk memurahkan data input.
Dalam contoh di bawah, variable input "url" diangkut ke halaman PHP:
<?php if(!filter_has_var(INPUT_POST, "url")) { echo("Tipe input tidak ada"); } else { $url = filter_input(INPUT_POST, "url", FILTER_SANITIZE_URL); } ?>
Pengertian contoh:
Contoh di atas ada variable input (url) yang diangkut melalui metode "POST":
- Periksa apakah ada variable input "url" jenis "POST"
- Jika ada variable input ini, lakukan pembersihan (hapus karakter ilegal) dan simpan di variable $url
Jika variable input seperti ini: "http://www.W3非o法ol.com.c字符n/", maka variable $url setelah dipurifikasi seharusnya seperti ini:
http://www.codew3c.com/
Menapiskan beberapa input
Form biasanya terdiri dari banyak bidang input. Untuk menghindari pemanggilan berulang filter_var atau filter_input, kita dapat menggunakan filter_var_array atau fungsi filter_input_array.
Dalam contoh ini, kita menggunakan fungsi filter_input_array() untuk menapis tiga variabel GET. Variabel GET yang diterima adalah nama, umur serta alamat email:
<?php $filters = array ( "name" => array ( "filter"=>FILTER_SANITIZE_STRING ), "age" => array ( "filter"=>FILTER_VALIDATE_INT, "options"=>array ( "min_range"=>1, "max_range"=>120 ) ), "email"=> FILTER_VALIDATE_EMAIL, ); $result = filter_input_array(INPUT_GET, $filters); if (!$result["age"]) { echo("Umur harus berupa angka antara 1 dan 120.<br />"); } elseif (!$result["email"]) { echo("E-Mail tidak valid.<br />"); } else { echo("Input pengguna valid"); } ?>
Pengertian contoh:
Contoh di atas memiliki tiga variabel input yang dikirim melalui metode "GET" (name, age dan email)
- Atur sebuah array yang mengandung nama variabel input serta penapisan untuk variabel input yang ditentukan
- Panggil fungsi filter_input_array, parameter termasuk variabel input GET serta array yang disetel sebelumnya
- Deteksi variabel $result untuk "age" dan "email" untuk memeriksa input yang ilegal.
Parameter kedua fungsi filter_input_array() dapat berupa array atau ID penapisan tunggal.
Jika parameter adalah ID penapisan tunggal, penapisan yang ditentukan akan menyaring semua nilai dalam array input.
Jika parameter adalah array, array itu harus mematuhi aturan di bawah ini:
- Mesti adalah array hubungan, yang mengandungi variabel input yang adalah kunci array (contohnya "umur" variabel input)
- Nilai array ini mesti adalah ID pemilih, ataupun array yang menentukan pemilih, tanda dan pilihan
Penggunaan Filter Callback
Dengan menggunakan pemilih FILTER_CALLBACK, anda boleh panggil fungsi yang disusun sendiri, dan gunakannya sebagai pemilih. Dengan cara ini, kita mendapat kawalan penuh atas pengurusan data.
Anda boleh membuat fungsi yang disusun sendiri sendiri, ataupun menggunakan fungsi PHP yang sudah ada.
Tentukan cara yang anda gunakan untuk menentukan fungsi pemilih, seperti cara menentukan pilihan.
Dalam contoh di bawah, kami menggunakan fungsi yang disusun sendiri untuk mengganti semua "_" dengan ruang:
<?php function convertSpace($string) { return str_replace("_", " ", $string); } $string = "Peter_is_a_great_guy!"; echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace")); ?>
Hasil kode di atas adalah seperti ini:
Peter adalah lelaki yang hebat!
Pengertian contoh:
Contoh di atas menggantikan semua "_" dengan ruang:
- Buatkan fungsi yang menggantikan "_" dengan ruang
- Panggil fungsi filter_var(), parameternya adalah pemilih FILTER_CALLBACK serta array yang mengandungi fungsi kami
- Halaman sebelumnya Exception PHP
- Halaman berikutnya Pengenalan MySQL