Gunakan fungsi filter_input_array() PHP untuk menapis data yang dimasukkan oleh berbilang pengguna tunggal

王林
Lepaskan: 2023-11-03 10:48:01
asal
782 orang telah melayarinya

Gunakan fungsi filter_input_array() PHP untuk menapis data yang dimasukkan oleh berbilang pengguna tunggal

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
Salin selepas log masuk

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_GETINPUT_POSTINPUT_COOKIEINPUT_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,
    ),
    //...
);
Salin selepas log masuk

其中,filter表示指定的验证器,可以是内置的验证器如FILTER_VALIDATE_EMAILFILTER_VALIDATE_INT等,也可以是自定义的验证器,flags表示可选的标记,options表示可选的选项,name表示为变量指定一个替代名称。

参数3:add_empty,表示是否对空值进行过滤和验证。

该函数的返回值是过滤后的数据,如果发生错误则返回false

二、使用filter_input_array()函数过滤多个单个用户输入的数据

下面我们给出一个使用filter_input_array()函数过滤多个单个用户输入的数据的示例。假设我们要验证并过滤一个包含用户名、邮箱和年龄的表单数据,满足以下要求:

  • 用户名只能包含字母和数字,且长度为6到12个字符
  • 邮箱必须是合法的邮箱格式
  • 年龄必须是数字,且在18到100之间

示例代码如下:

<?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 '输入数据正确。';
        }
    }
?>
Salin selepas log masuk

其中,我们定义了一个包含3个输入数据的数组,然后通过filter_input_array()函数对这些输入数据进行验证和过滤。在上面的示例中,我们使用了一些内置的验证器FILTER_VALIDATE_REGEXPFILTER_VALIDATE_EMAILFILTER_VALIDATE_INT,它们分别用来验证输入数据是否符合正则表达式、是否符合邮箱格式、是否为整数。此外,使用了一些选项,如min_rangemax_range

  • INPUT_GET: Daripada $_GET;
  • INPUT_POST: Dapatkan pembolehubah daripada $_POST kod>;
  • INPUT_COOKIE: Dapatkan pembolehubah daripada $_COOKIE
  • INPUT_SERVER: Dapatkan pembolehubah daripada $_SERVER Variables;
  • INPUT_ENV: Dapatkan pembolehubah daripada $_ENV; >INPUT_REQUEST: Daripada $_REQUEST.
Parameter 2: takrifan, yang mewakili peraturan takrifan data input Ia boleh ditakrifkan menggunakan set tatasusunan peraturan Format khusus adalah seperti berikut:

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: 🎜
  • Nama pengguna hanya boleh mengandungi huruf dan nombor dan panjangnya 6 hingga 12 aksara
  • E-mel mestilah dalam format e-mel yang sah
  • Umur mestilah nombor dan antara 18 dan 100
🎜Kod sampel adalah seperti berikut: 🎜rrreee🎜Antara mereka, kami mentakrifkan Tatasusunan yang mengandungi 3 data input, yang kemudiannya disahkan dan ditapis melalui fungsi filter_input_array(). Dalam contoh di atas, kami menggunakan beberapa pengesah terbina dalam 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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!