
PHP는 브라우저로부터 전송된 데이터를 수집하고 그것을 변수에 저장하는 내장 함수 두 개가 있다. 이 함수는 브라우저가 전송한 데이터에 필터를 적용할 수 있기 때문에 필터 함수라고 한다.
$data = filter_input(INPUT_SOURCE, 'name');
filter_input()은 서버로 전송된 단일값을 가져온다.
이 함수는 두 개의 인수가 필요하다. 첫 번째 인수는 입력 소스로, 다음을 사용한다.
HTTP POST를 통해 전송된 데이터를 가져오기 위한 INPUT_POST
슈퍼글로벌 배열인 $_SERVER에서 사용할 수 있던 것과 동일한 데이터를 가져오기 위한 INPUT_SERVER
두 번째 인수는 서버로 전송된 이름/값 쌍의 이름으로, 이것은 따옴표로 묶여야 한다. 이렇게 사용하면 filter_input()은 다음을 반환한다.
$data = filter_input_array(INPUT_SOURCE);
filter_input_array()는 HTTP GET 또는 POST를 통해 서버로 전송된 모든 값을 수집하고 각 값을 배열의 요소로 저장한다.
이것은 모든 값을 가져오기 때문에, 하나의 인수인 입력 소스만 필요하다. 입력 소스에 대한 값을 filter_input()의 값과 동일하다.
데이터를 받게 되면, 문자열 데이터 타입으로 저장된다. 이러한 필터 함수를 적용할 수 있는 몇몇 필터는 데이터 타입을 변환한다.
필터 함수가 브라우저로부터 전송된 데이터를 얻을 때 문자열로 저장된다. 다음의 세 가지 유효성 검사 필터는 값이 불리언인지, 정수인지, 아니면 부동 소수점 수인지를 확인한다.
- FILTER_VALIDATE_BOOLEAN : 값이 true인지 확인한다. 1, on, 그리고 yes 모두는 true로 간주된다. 대소문자를 구분하지는 않는다. 만약에 true면, 함수는 불리언값이 true를 반환하며, 그렇지 않으면 false를 반환한다.
- FILTER_VALIDATE_INT : 숫자가 정수인지 확인한다(0은 유효한 정수로 간주되지 않는다). 만약에 숫자가 유효하다면 int 데이터 타입의 숫자가 반환되며, 그렇지 않더면 false가 반환된다.
- FILTER_VALIDATE_FLOAT : 숫자가 부동 소수점 수(10진수)인지 확인한다. 정수는 이 필터를 통과한다(0은 유효한 정수로 간주되지 않는다). 만약에 숫자가 유효하다면 float 데이터 타입의 값이 반환되며, 그렇지 않다면 false가 반환된다.
각 필터는 필터가 동작하는 방식을 제어하는 데 사용할 수 있는 두 가지 유형의 설정도 가지고 있다.
▪️ 플래그는 켜고 끌 수 있는 설정이다.
▪️ 옵션은 반드시 값을 설정해야 하는 설정이다.
다음은 텍스트를 수집하는 데 사용되는 유효성 검사 필터다.
- FILTER_VALIDATE_EMAIL : 문자열의 구조가 이메일 주소의 구조와 일치하는지 확인한다.
- FILTER_VALIDATE_URL : 문자열의 구조가 URL의 구조와 일치하는지 확인한다.
- FILTER_VALIDATE_DOMAIN : 문자열의 구조가 도메인 이름의 구조와 일치하는지 확인한다.
- FILTER_VALIDATE_IP : 문자열의 구조가 유효한 IP 주소의 구조와 일치하는지 확인한다.
정규 표현식은 값에 문자 패턴이 포함되어 있는지 확인하는 다른 필터를 작성하는 데 사용할 수 있다. 정규 표현식은 FILTER_VALIDATE_REGEXP 필터에 대한 옵션으로 지정된다.
- FILTER_VALIDATE_REGEXP : 정규 표현식을 사용하여 기술된 문자 패턴이 문자열에 포함되어 있는지 확인한다.
필터 함수를 사용하여 데이터를 확인할 때, 사용할 필터의 ID와 필터가 따라야 하는 플래그나 옵션을 알려야 한다.
filter_input() 함수가 개별 데이터를 수집하는 데 사용될 때, 세 번째 매개변수는 사용할 필터의 ID고, 네 번째(옵셔널) 매개변수는 그 필터가 사용할 수 있는 설정이다.
$data = filter_input(INPUT_SOURCE, 'name' , FILTER_ID[, $settings]);
함수는 다음을 반환한다.
필터가 플래그와 옵션을 사용할 경우, 두 개의 키를 가진 연관 배열에 저장된다.
다음의 플래그와 옵션의 배열은 $settings라는 변수에 저장된다.
$settings['flags'] = FLAG_NAME1 | FLAG_NAME2; $settings['options']['option1'] = value1; $settings['options']['option2'] = value2;
flags 키에 대한 값은 켜야 하는 플래그의 이름이다. 이것은 따옴표로 묶지 않는다. 여러 플래그를 사용하려면 각 플래그 이름을 | 로 구분한다.
options 키에 대한 값은 또 다른 연고나 배열이다. 각 요소의 키는 설정 중인 옵션의 이름이고 값은 사용할 값이다.
출처 - 존 두켓, <백엔드 프로그래밍을 위한 PHP & MySQL>, Jpub, 2022