PHP 의 새로운 입력 필 터 는 $GET 또는 $POST 배열 을 읽 지 않 습 니 다.
PHP 5.2 에 좋 은 안전 함 수 를 추가 하 였 습 니 다.
'input filter' 라 고 해서 말 하지 않 았 습 니 다.
$name = $_GET['name'];
당신 은 지금 말 할 수 있 습 니 다.
$name = filter_input (INPUT_GET, 'name', FILTER_SANITIZE_STRING);
문자열 을 자동 으로 삭제 합 니 다.
그리고:
FILTER_SANITIZE_ENCODED
FILTER_SANITIZE_NUMBER_INT
FILTER_SANITIZE_EMAIL
FILTER_SANITIZE_URL
기다리다.
그래서 이것 은 매우 편리 한 안전 특성 이 므 로 나 는 그것 으로 완전히 전환 하고 싶다.
문 제 는...나 는 항상 $GET 와 $POST 배열 을 처리 하기 전에 다음 과 같이 이 를 처리 합 니 다.
$ GET ['name'] = '(기본 이름)';
그러나 filter input 는 $ GET 에 접근 할 수 없 는 것 같 습 니 다.
int (?) 형식의 'inpt GET' 를 읽 고 있 기 때 문 입 니 다.
$get 을 filter input 에서 읽 을 수 있다 면 다행 이 겠 지만:
$name = filter_input ( $_GET, 'name', FILTER_SANITIZE_STRING );
잘못 을 저 에 게 알려 주 십시오:
Warning: filter_input() expects parameter 1 to be long, array given.
누가 내 가 할 수 있 을 것 이 라 고 생각 할 수 있 겠 습 니까?
- manipulate the source of
INPUT_GET
(whereever it is) so that I can change its values before filter_input can read them - get filter_input to read
$_GET
부록:
Rich 는 "어쨌든 배열 을 바 꾸 는 이 유 는 당연히 프로그램 을 통 해 추 가 된 내용 이 아니 라 입력 하 기 를 바 라 는 것" 이 라 고 물 었 다.
이것 은 입력 된 변 수 를 미리 처리 할 수 있 는 매우 편리 한 곳 입 니 다.
예 를 들 어:
- set defaults (if $_GET['state'] = '' then $_GET['state'] = 'AL')
- do manual processing (delete all spaces, etc.)
- security (some of which will be done by filter_input now)
그리고 나 서 나 는 내 가 입력 변 수 를 받 았 을 때 이 변 수 는 안전 하고 효과 적 이라는 것 을 알 았 다.
물론 저 는 GET 배열 을 다른 배열 로 복사 하여 처리 할 수 있 습 니 다.
그러나 이것 은 불필요 한 절차 입 니 다.
I $GET 는 정상 적 인 작업 을 하 는 배열 이기 때문에 존재 하 는 시스템 배열 을 처리 하 는 것 이 의미 가 있 습 니 다.
대답 하 다.
filter var 와 filter var array 를 사용 하여 다시 배열 을 읽 도록 수 동 으로 강제 할 수 있 습 니 다.
$name = filter_var ( $_GET['name'], FILTER_SANITIZE_STRING );