Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie die Funktion filter_input_array() von PHP, um von mehreren einzelnen Benutzern eingegebene Daten zu filtern

Verwenden Sie die Funktion filter_input_array() von PHP, um von mehreren einzelnen Benutzern eingegebene Daten zu filtern

王林
王林Original
2023-11-03 10:46:53782Durchsuche

Verwenden Sie die Funktion filter_input_array() von PHP, um von mehreren einzelnen Benutzern eingegebene Daten zu filtern

Bei der PHP-Entwicklung ist es oft notwendig, Benutzereingabedaten zu verarbeiten, und nicht vertrauenswürdige Benutzereingabedaten können leicht verschiedene Sicherheitsprobleme verursachen, wie z. B. SQL-Injection, XSS-Angriffe usw. Daher müssen die Daten beim Empfang von Benutzereingaben gefiltert und überprüft werden, um sicherzustellen, dass die eingegebenen Daten den Anforderungen zur Verbesserung der Sicherheit des Systems entsprechen.

PHP bietet die Funktion filter_input_array() zum Filtern einzelner oder mehrerer Benutzereingabedaten. Diese Funktion kann die Sicherheit von Eingabedaten verbessern, indem sie Filter zum Validieren und Filtern eines Satzes von Eingabedaten verwendet.

In diesem Artikel wird erläutert, wie Sie mit der PHP-Funktion filter_input_array() Daten filtern, die von mehreren einzelnen Benutzern eingegeben wurden, und entsprechende Codebeispiele bereitstellen.

1. Funktion filter_input_array()

Funktion filter_input_array() wird zum Überprüfen und Filtern mehrerer Eingabedaten verwendet. Die Definition dieser Funktion lautet wie folgt:

filter_input_array ( int $type [, mixed $definition [, bool $add_empty = true ]] ) : mixed

Diese Funktion muss drei Parameter übergeben:

Parameter 1: type, der den Datentyp angibt, der gefiltert werden muss. Dies kann INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER usw., die spezifischen Bedeutungen sind wie folgt: 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,
    ),
    //...
);

其中,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 '输入数据正确。';
        }
    }
?>

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

  • INPUT_GET: Von $_GET;
  • INPUT_POST: Variablen aus $_POST beziehen code>;
  • INPUT_COOKIE: Holen Sie sich die Variable von $_COOKIE;
  • INPUT_SERVER: Holen Sie sich it from $_SERVER Variables;
  • INPUT_ENV: Holen Sie sich Variablen von $_ENV; code>INPUT_REQUEST: Von $_REQUEST abrufen.
Parameter 2: definition, der die Definitionsregel der Eingabedaten darstellt. Er kann mithilfe eines Satzes von Regelarrays definiert werden. Das spezifische Format ist wie folgt:

rrreee

Unter diesen stellt filter den angegebenen Validator dar, der ein integrierter Validator wie FILTER_VALIDATE_EMAIL, FILTER_VALIDATE_INT usw. sein kann ein benutzerdefinierter Validator, flags stellt ein optionales Tag dar, options stellt optionale Optionen dar und name stellt einen alternativen Namen für die Variable dar.

Parameter 3: add_empty, der angibt, ob leere Werte gefiltert und überprüft werden sollen. 🎜🎜Der Rückgabewert dieser Funktion sind die gefilterten Daten. Wenn ein Fehler auftritt, wird false zurückgegeben. 🎜🎜2. Verwenden Sie die Funktion filter_input_array(), um von mehreren einzelnen Benutzern eingegebene Daten zu filtern. 🎜🎜 Nachfolgend geben wir ein Beispiel für die Verwendung der Funktion filter_input_array(), um von mehreren einzelnen Benutzern eingegebene Daten zu filtern. Angenommen, wir möchten Formulardaten mit Benutzername, E-Mail-Adresse und Alter validieren und filtern, um die folgenden Anforderungen zu erfüllen: 🎜
  • Benutzername darf nur Buchstaben und Zahlen enthalten und 6 bis 12 Zeichen lang sein
  • Die E-Mail muss in einem legalen E-Mail-Format vorliegen
  • Das Alter muss eine Zahl sein und zwischen 18 und 100 liegen
🎜Der Beispielcode lautet wie folgt: 🎜rrreee🎜Among Für sie definieren wir ein Array mit drei Eingabedaten, die dann durch die Funktion filter_input_array() validiert und gefiltert werden. Im obigen Beispiel verwenden wir einige integrierte Validatoren FILTER_VALIDATE_REGEXP, FILTER_VALIDATE_EMAIL und FILTER_VALIDATE_INT, die verwendet werden, um zu überprüfen, ob die Eingabedaten konform sind Regulärer Ausdruck, ob er dem E-Mail-Format entspricht und ob es sich um eine Ganzzahl handelt. Darüber hinaus werden einige Optionen verwendet, wie z. B. min_range, max_range, um die minimalen und maximalen Werte der Eingabedaten zu ermöglichen. Verwenden Sie abschließend die if-Anweisung, um festzustellen, ob die Eingabedaten zulässig sind. 🎜🎜3. Fazit🎜🎜Mit der Funktion filter_input_array() können von mehreren einzelnen Benutzern eingegebene Daten einfach überprüft und gefiltert und die Datensicherheit verbessert werden. Wenn Sie diese Funktion verwenden, müssen Sie Regeln, Validatoren, Optionen usw. für Eingabedaten definieren, um die Gültigkeit der Eingabedaten sicherzustellen. Die ordnungsgemäße Verwendung dieser Funktion kann die Sicherheit des Systems wirksam schützen und häufige Sicherheitslücken vermeiden. 🎜

Das obige ist der detaillierte Inhalt vonVerwenden Sie die Funktion filter_input_array() von PHP, um von mehreren einzelnen Benutzern eingegebene Daten zu filtern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn