PHP의 filter_input_array() 함수는 GET, POST 등 외부에서 전달된 여러 변수를 한 번에 가져와 각각에 맞는 필터를 적용할 수 있는 강력한 입력 검증 도구입니다. 개별 변수마다 filter_input()을 반복 호출하는 대신, 배열 형태로 정의된 규칙에 따라 일괄 처리하므로 코드가 훨씬 간결해집니다.
구문
filter_input_array(type, arraydefine, add_empty)
매개변수
type − 검사할 입력 소스를 지정합니다. 사용 가능한 상수는
INPUT_GET,INPUT_POST,INPUT_COOKIE,INPUT_SERVER,INPUT_ENV다섯 가지입니다.arraydefine − 각 변수에 적용할 필터 규칙을 담은 배열입니다. 생략 가능하며, 생략 시 기본 필터가 적용됩니다.
add_empty −
true로 설정하면 존재하지 않는 키도NULL값으로 결과 배열에 포함시킵니다. 기본값은true입니다.
반환값
필터링에 성공하면 각 변수의 값을 담은 배열을 반환하고, 실패하면 false를 반환합니다. 개별 변수의 검증이 실패한 경우 해당 값은 false로, 변수 자체가 없으면 NULL로 설정됩니다.
예제
다음은 filter_input_array() 함수를 사용해 POST로 전송된 세 개의 변수 — 학생 이름(stname), 학생 점수(stmarks), 학생 이메일(stemail) — 를 각각 다른 필터로 검증하는 예제입니다.
<?php
$filters = array (
"stname" => array (
"filter"=>FILTER_CALLBACK,
"flags"=>FILTER_FORCE_ARRAY,
"options"=>"ucwords"
),
"stmarks" => array (
"filter"=>FILTER_VALIDATE_INT,
"options"=>array (
"min_range"=>1,
"max_range"=>100
)
),
"stemail"=> FILTER_VALIDATE_EMAIL,
);
print_r(filter_input_array(INPUT_POST, $filters));
?>위 코드의 실행 결과는 다음과 같습니다.
Array ( [stname] => Jack [stmarks] => 95 [stemail] => jack@abcde.com )
예제 해설
stname:
FILTER_CALLBACK필터에 PHP 내장 함수ucwords를 옵션으로 전달하여, 입력된 이름의 각 단어 첫 글자를 대문자로 변환합니다.stmarks:
FILTER_VALIDATE_INT필터로 정수 여부를 검사하며, 유효 범위를 1~100으로 제한합니다.stemail:
FILTER_VALIDATE_EMAIL필터만 간단히 지정하여 올바른 이메일 형식인지 확인합니다.
이처럼 filter_input_array()를 활용하면 폼 데이터 검증 로직을 하나의 배열로 체계적으로 관리할 수 있어, 보안성과 유지보수성이 모두 향상됩니다.