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_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()函数过滤多个单个用户输入的数据的示例。假设我们要验证并过滤一个包含用户名、邮箱和年龄的表单数据,满足以下要求:
示例代码如下:
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
: $_GET에서;INPUT_POST
:$_POST에서 변수 가져오기 code>;
$_COOKIE
에서 변수 가져오기INPUT_SERVER
: 변수 가져오기$_SERVER
변수에서INPUT_ENV
:$_ENV
에서 변수 가져오기INPUT_REQUEST
: $_REQUEST에서.definition
. 구체적인 형식은 다음과 같습니다. rrreee
그 중filter
는 지정된 유효성 검사기를 나타내며FILTER_VALIDATE_EMAIL
,FILTER_VALIDATE_INT
등과 같은 내장 유효성 검사기가 될 수 있습니다. 사용자 정의 유효성 검사기인flags
는 선택적 태그를 나타내고options
는 선택적 옵션을 나타내며name
은 변수의 대체 이름을 나타냅니다.
매개변수 3:add_empty
, 빈 값을 필터링하고 확인할지 여부를 나타냅니다.
false
가 반환됩니다. 2. filter_input_array() 함수를 사용하여 여러 단일 사용자가 입력한 데이터를 필터링하세요 아래에서는 filter_input_array() 함수를 사용하여 여러 단일 사용자가 입력한 데이터를 필터링하는 예를 제공합니다. 다음 요구 사항을 충족하기 위해 사용자 이름, 이메일 주소 및 나이가 포함된 양식 데이터를 검증하고 필터링한다고 가정해 보겠습니다.
min_range
,
max_range
와 같은 일부 옵션을 사용하여 입력 데이터의 최소값과 최대값을 허용합니다. 마지막으로 if 문을 사용하여 입력 데이터가 유효한지 확인합니다. 3. 결론filter_input_array() 함수를 사용하면 여러 명의 단일 사용자가 입력한 데이터를 쉽게 확인하고 필터링할 수 있으며 데이터 보안이 향상됩니다. 이 기능을 사용할 때 입력 데이터의 유효성을 보장하기 위해 입력 데이터에 대한 규칙, 유효성 검사기, 옵션 등을 정의해야 합니다. 이 기능을 올바르게 사용하면 시스템 보안을 효과적으로 보호하고 일반적인 보안 취약성을 피할 수 있습니다.
위 내용은 여러 단일 사용자가 입력한 데이터를 필터링하려면 PHP의 filter_input_array() 함수를 사용하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!