브라우저로부터 데이터 가져오기(6)

minah moon·2023년 8월 14일

PHP

목록 보기
26/58
post-thumbnail

필터 함수를 사용하여 데이터 수집하기

PHP는 브라우저로부터 전송된 데이터를 수집하고 그것을 변수에 저장하는 내장 함수 두 개가 있다. 이 함수는 브라우저가 전송한 데이터에 필터를 적용할 수 있기 때문에 필터 함수라고 한다.


$data = filter_input(INPUT_SOURCE, 'name');

filter_input()은 서버로 전송된 단일값을 가져온다.

이 함수는 두 개의 인수가 필요하다. 첫 번째 인수는 입력 소스로, 다음을 사용한다.

  • HTTP GET을 통해 전송된 데이터를 가져오기 위한 INPUT_GET
  • HTTP POST를 통해 전송된 데이터를 가져오기 위한 INPUT_POST

  • 슈퍼글로벌 배열인 $_SERVER에서 사용할 수 있던 것과 동일한 데이터를 가져오기 위한 INPUT_SERVER

두 번째 인수는 서버로 전송된 이름/값 쌍의 이름으로, 이것은 따옴표로 묶여야 한다. 이렇게 사용하면 filter_input()은 다음을 반환한다.

  • 데이터가 서버로 전송되었다면 전송된 그 값
  • 데이터가 서버로 전송되지 않았다면 null

$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]);

함수는 다음을 반환한다.

  • 필터를 통과했다면 전송받은 값
  • 필터를 통과하지 못했다면 false
  • 해당 이름이 서버로 전송되지 않았다면 null

필터가 플래그와 옵션을 사용할 경우, 두 개의 키를 가진 연관 배열에 저장된다.

  • falgs는 켤 수 있는 설정을 갖는다.
  • options은 값이 필요한 설정을 갖는다.

다음의 플래그와 옵션의 배열은 $settings라는 변수에 저장된다.

$settings['flags'] = FLAG_NAME1 | FLAG_NAME2;
$settings['options']['option1'] = value1;
$settings['options']['option2'] = value2;

flags 키에 대한 값은 켜야 하는 플래그의 이름이다. 이것은 따옴표로 묶지 않는다. 여러 플래그를 사용하려면 각 플래그 이름을 | 로 구분한다.

options 키에 대한 값은 또 다른 연고나 배열이다. 각 요소의 키는 설정 중인 옵션의 이름이고 값은 사용할 값이다.






출처 - 존 두켓, <백엔드 프로그래밍을 위한 PHP & MySQL>, Jpub, 2022

0개의 댓글