Dalam pembangunan PHP, selalunya diperlukan untuk memproses data input pengguna, dan data input pengguna yang tidak boleh dipercayai dengan mudah boleh menyebabkan pelbagai isu keselamatan, seperti suntikan SQL, serangan XSS, dsb. Oleh itu, apabila menerima input pengguna, data perlu ditapis dan disahkan untuk memastikan data yang dimasukkan memenuhi keperluan untuk meningkatkan keselamatan sistem.
PHP menyediakan fungsi filter_input_array() untuk menapis data input pengguna tunggal atau berbilang. Fungsi ini boleh meningkatkan keselamatan data input dengan menggunakan penapis untuk mengesahkan dan menapis set data input.
Artikel ini akan memperkenalkan cara menggunakan fungsi filter_input_array() PHP untuk menapis data yang dimasukkan oleh berbilang pengguna tunggal dan memberikan contoh kod yang sepadan.
1. fungsi filter_input_array()
fungsi filter_input_array() digunakan untuk mengesahkan dan menapis berbilang data input. Takrifan fungsi ini adalah seperti berikut:
filter_input_array ( int $type [, mixed $definition [, bool $add_empty = true ]] ) : mixed
Fungsi ini perlu lulus dalam tiga parameter:
Parameter 1: type
, menunjukkan jenis data yang perlu ditapis, yang boleh menjadi INPUT_GET
, INPUT_POST
, INPUT_COOKIE
, INPUT_SERVER
, dsb., maksud khusus adalah seperti berikut: type
,表示需要过滤的数据类型,可以是INPUT_GET
、INPUT_POST
、INPUT_COOKIE
、INPUT_SERVER
等,具体含义如下:
INPUT_GET
:从$_GET
中取得变量;INPUT_POST
:从$_POST
中取得变量;INPUT_COOKIE
:从$_COOKIE
中取得变量;INPUT_SERVER
:从$_SERVER
中取得变量;INPUT_ENV
:从$_ENV
中取得变量;INPUT_REQUEST
:从$_REQUEST
中取得变量。参数2:definition
,表示输入数据的定义规则,可以使用一组规则数组来定义,具体格式如下:
array( '变量名' => array( 'filter' => 指定的验证器, 'flags' => 可选的标记, 'options' => 可选的选项, 'name' => 为变量指定一个替代名称, ), '变量名2' => array( 'filter' => 指定的验证器2, 'flags' => 可选的标记, 'options' => 可选的选项, 'name' => 为变量指定一个替代名称2, ), //... );
其中,filter
表示指定的验证器,可以是内置的验证器如FILTER_VALIDATE_EMAIL
、FILTER_VALIDATE_INT
等,也可以是自定义的验证器,flags
表示可选的标记,options
表示可选的选项,name
表示为变量指定一个替代名称。
参数3:add_empty
,表示是否对空值进行过滤和验证。
该函数的返回值是过滤后的数据,如果发生错误则返回false
。
二、使用filter_input_array()函数过滤多个单个用户输入的数据
下面我们给出一个使用filter_input_array()函数过滤多个单个用户输入的数据的示例。假设我们要验证并过滤一个包含用户名、邮箱和年龄的表单数据,满足以下要求:
示例代码如下:
<?php $definitions = array( 'username' => array( 'filter' => FILTER_VALIDATE_REGEXP, 'options' => array('regexp' => '/^[a-z0-9_-]{6,12}$/i'), 'name' => '用户名', ), 'email' => array( 'filter' => FILTER_VALIDATE_EMAIL, 'name' => '邮箱', ), 'age' => array( 'filter' => FILTER_VALIDATE_INT, 'options' => array('min_range' => 18, 'max_range' => 100), 'name' => '年龄', ), ); $input_data = filter_input_array(INPUT_POST, $definitions); if (!$input_data) { echo '发生了一个错误。'; } else { if (in_array(null, $input_data, true) || in_array(false, $input_data, true)) { echo '输入数据不正确。'; } else { echo '输入数据正确。'; } } ?>
其中,我们定义了一个包含3个输入数据的数组,然后通过filter_input_array()函数对这些输入数据进行验证和过滤。在上面的示例中,我们使用了一些内置的验证器FILTER_VALIDATE_REGEXP
、FILTER_VALIDATE_EMAIL
和FILTER_VALIDATE_INT
,它们分别用来验证输入数据是否符合正则表达式、是否符合邮箱格式、是否为整数。此外,使用了一些选项,如min_range
、max_range
INPUT_GET
: Daripada $_GET;INPUT_POST
: Dapatkan pembolehubah daripada $_POST kod>;
$_COOKIE
INPUT_SERVER
: Dapatkan pembolehubah daripada $_SERVER
Variables; INPUT_ENV
: Dapatkan pembolehubah daripada $_ENV
; >INPUT_REQUEST: Daripada $_REQUEST. rrreee
Antaranya,filter
mewakili pengesah yang ditentukan, yang boleh menjadi validator terbina dalam seperti FILTER_VALIDATE_EMAIL
, FILTER_VALIDATE_INT
, dsb., atau pengesah tersuai, flags
mewakili teg pilihan, options
mewakili pilihan pilihan dan name
mewakili nama alternatif untuk pembolehubah. Parameter 3: add_empty
, menunjukkan sama ada untuk menapis dan mengesahkan nilai kosong. 🎜🎜Nilai pulangan fungsi ini ialah data yang ditapis Jika ralat berlaku, false
dikembalikan. 🎜🎜2. Gunakan fungsi filter_input_array() untuk menapis data yang dimasukkan oleh berbilang pengguna tunggal🎜🎜 Di bawah kami memberikan contoh penggunaan fungsi filter_input_array() untuk menapis data yang dimasukkan oleh berbilang pengguna tunggal. Katakan kami ingin mengesahkan dan menapis data borang yang mengandungi nama pengguna, alamat e-mel dan umur untuk memenuhi keperluan berikut: 🎜FILTER_VALIDATE_REGEXP
, FILTER_VALIDATE_EMAIL
dan FILTER_VALIDATE_INT
, yang digunakan untuk mengesahkan sama ada data input mematuhi Ungkapan biasa, sama ada ia mematuhi format e-mel dan sama ada ia adalah integer. Selain itu, beberapa pilihan digunakan, seperti min_range
, max_range
, untuk membenarkan nilai minimum dan maksimum data input. Akhir sekali, gunakan pernyataan if untuk menentukan sama ada data input adalah sah. 🎜🎜3. Kesimpulan🎜🎜Menggunakan fungsi filter_input_array() boleh dengan mudah mengesahkan dan menapis data yang dimasukkan oleh berbilang pengguna tunggal, dan meningkatkan keselamatan data. Apabila menggunakan fungsi ini, anda perlu menentukan peraturan, pengesah, pilihan, dsb. untuk data input bagi memastikan kesahihan data input. Penggunaan fungsi ini dengan betul boleh melindungi keselamatan sistem dengan berkesan dan mengelakkan kelemahan keselamatan biasa. 🎜Atas ialah kandungan terperinci Gunakan fungsi filter_input_array() PHP untuk menapis data yang dimasukkan oleh berbilang pengguna tunggal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!