Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP filter_input_array() 함수 완벽 정리 – 외부 변수 일괄 필터링 방법

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_emptytrue로 설정하면 존재하지 않는 키도 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()를 활용하면 폼 데이터 검증 로직을 하나의 배열로 체계적으로 관리할 수 있어, 보안성과 유지보수성이 모두 향상됩니다.