>  기사  >  백엔드 개발  >  여러 단일 사용자가 입력한 데이터를 필터링하려면 PHP의 filter_input_array() 함수를 사용하세요.

여러 단일 사용자가 입력한 데이터를 필터링하려면 PHP의 filter_input_array() 함수를 사용하세요.

王林
王林원래의
2023-11-03 10:46:53799검색

여러 단일 사용자가 입력한 데이터를 필터링하려면 PHP의 filter_input_array() 함수를 사용하세요.

PHP 개발에서는 사용자 입력 데이터를 처리해야 하는 경우가 많으며, 신뢰할 수 없는 사용자 입력 데이터는 SQL 주입, XSS 공격 등 다양한 보안 문제를 쉽게 일으킬 수 있습니다. 따라서 사용자 입력을 받을 때 입력 데이터가 시스템 보안을 향상시키기 위한 요구 사항을 충족하는지 확인하기 위해 데이터를 필터링하고 검증해야 합니다.

PHP는 단일 또는 다중 사용자 입력 데이터를 필터링하는 filter_input_array() 함수를 제공합니다. 이 기능은 필터를 사용하여 입력 데이터 세트의 유효성을 검사하고 필터링함으로써 입력 데이터의 보안을 향상시킬 수 있습니다.

이 글에서는 PHP의 filter_input_array() 함수를 사용하여 여러 단일 사용자가 입력한 데이터를 필터링하는 방법을 소개하고 해당 코드 예제를 제공합니다.

1. filter_input_array() 함수

filter_input_array() 함수는 여러 입력 데이터를 확인하고 필터링하는 데 사용됩니다. 이 함수의 정의는 다음과 같습니다.

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

이 함수는 세 개의 매개변수를 전달해야 합니다:

매개변수 1: type, 필터링해야 하는 데이터 유형을 나타냅니다. INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER 등의 구체적인 의미는 다음과 같습니다. 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: $_GET에서;
  • INPUT_POST: $_POST에서 변수 가져오기 code>;
  • INPUT_COOKIE: $_COOKIE에서 변수 가져오기
  • INPUT_SERVER: 변수 가져오기 $_SERVER 변수에서
  • INPUT_ENV: $_ENV에서 변수 가져오기
  • INPUT_REQUEST: $_REQUEST에서.
파라미터 2: 입력 데이터의 정의 규칙을 나타내는 definition. 구체적인 형식은 다음과 같습니다. rrreee

그 중 filter 는 지정된 유효성 검사기를 나타내며 FILTER_VALIDATE_EMAIL, FILTER_VALIDATE_INT 등과 같은 내장 유효성 검사기가 될 수 있습니다. 사용자 정의 유효성 검사기인 flags는 선택적 태그를 나타내고 options는 선택적 옵션을 나타내며 name은 변수의 대체 이름을 나타냅니다.

매개변수 3: add_empty, 빈 값을 필터링하고 확인할지 여부를 나타냅니다.

🎜이 함수의 반환 값은 필터링된 데이터입니다. 오류가 발생하면 false가 반환됩니다. 🎜🎜2. filter_input_array() 함수를 사용하여 여러 단일 사용자가 입력한 데이터를 필터링하세요🎜🎜 아래에서는 filter_input_array() 함수를 사용하여 여러 단일 사용자가 입력한 데이터를 필터링하는 예를 제공합니다. 다음 요구 사항을 충족하기 위해 사용자 이름, 이메일 주소 및 나이가 포함된 양식 데이터를 검증하고 필터링한다고 가정해 보겠습니다. 🎜
  • 사용자 이름은 문자와 숫자만 포함할 수 있으며 길이는 6~12자입니다.
  • 이메일은 합법적인 이메일 형식이어야 합니다.
  • 나이는 18세에서 100세 사이의 숫자여야 합니다.
🎜샘플 코드는 다음과 같습니다: 🎜rrreee🎜Among 이를 위해 우리는 3개의 입력 데이터를 포함하는 배열을 정의합니다. 그런 다음 이를 확인하고 filter_input_array() 함수를 통해 필터링합니다. 위 예에서는 입력 데이터가 정규식, 메일박스 형식을 준수하는지, 정수인지 여부. 또한 min_range, max_range와 같은 일부 옵션을 사용하여 입력 데이터의 최소값과 최대값을 허용합니다. 마지막으로 if 문을 사용하여 입력 데이터가 유효한지 확인합니다. 🎜🎜3. 결론🎜🎜filter_input_array() 함수를 사용하면 여러 명의 단일 사용자가 입력한 데이터를 쉽게 확인하고 필터링할 수 있으며 데이터 보안이 향상됩니다. 이 기능을 사용할 때 입력 데이터의 유효성을 보장하기 위해 입력 데이터에 대한 규칙, 유효성 검사기, 옵션 등을 정의해야 합니다. 이 기능을 올바르게 사용하면 시스템 보안을 효과적으로 보호하고 일반적인 보안 취약성을 피할 수 있습니다. 🎜

위 내용은 여러 단일 사용자가 입력한 데이터를 필터링하려면 PHP의 filter_input_array() 함수를 사용하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.