사용자 입력 데이터를 필터링할 때 일반적으로 자신만의 방법을 작성하여 판단합니다.
예를 들어 이메일을 확인할 때 정규식을 사용하세요
$pattern = "/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/"; if (!preg_match($pattern, $email)) { throw new \Exception(self::ERROR_PARAMETER_EMPTY . '_邮件格式有误:' . $email); }
로그인 후 복사
정규식을 사용하지 않는 경우에는 다른 간단한 방법은 없나요?
필터 관련 함수를 사용하세요
filter_has_var(type,variable) 지정된 유형의 변수가 있는지 여부.
filter_input은 스크립트 외부에서 입력을 받아 필터링합니다.
filter_input_array는 스크립트 외부에서 여러 입력을 가져와 필터링합니다.
filter_var는 변수를 가져와서 필터링합니다.
filter_var_array는 여러 변수를 가져와서 필터링합니다.
filter_has_var
$_GET 결과에 name
if(!filter_has_var(INPUT_GET, "name")) { echo("name 不存在"); } else { echo("name 存在"); }
로그인 후 복사
filter_input
이메일 확인 예시 보기
if (!filter_input(INPUT_GET, 'email', FILTER_VALIDATE_EMAIL)) { echo "E-Mail is not valid"; } else { echo "E-Mail is valid"; }
로그인 후 복사
filter_input_array
전체 입력 소스 필터링
$filters = array ( "name" => array ( "filter"=>FILTER_CALLBACK, "flags"=>FILTER_FORCE_ARRAY, "options"=>"ucwords" ), "age" => array ( "filter"=>FILTER_VALIDATE_INT, "options"=>array ( "min_range"=>1, "max_range"=>120 ) ), "email"=> FILTER_VALIDATE_EMAIL, ); print_r(filter_input_array(INPUT_POST, $filters));
로그인 후 복사
filter_var, filter_var_array
입력 소스가 필요하지 않습니다. , 값을 직접 필터링
if(!filter_var("someone@example....com", FILTER_VALIDATE_EMAIL)) { echo("E-mail is not valid"); } else { echo("E-mail is valid"); }
로그인 후 복사
입력 소스 범위
검증
기타 필터링 방법
strip_tags html 태그 제거
htmlentities 문자를 HTML 엔터티로 변환, (통화도 변환함) 탈출 유로, 파운드 등과 같은 기호, 저작권 기호 등)
htmlspecialchars 함수는 미리 정의된 문자를 HTML 엔터티로 변환합니다.
미리 정의된 문자는 다음과 같습니다.
&(앰퍼샌드)는 &
"(큰따옴표)는 "
'(작은따옴표)는 '
<(보다 작음)은 <
(보다 큼)이 됩니다.
* 팁: 특수 HTML 엔터티를 다시 문자로 변환해야 하는 경우 htmlspecialcharsdecode() 함수를 사용하세요.
$input = "我是标题"; echo htmlspecialchars($input) . "\n"; echo htmlentities($input) . "\n"; echo strip_tags($input) . "\n"; $input = "-- 'select * from "; echo addslashes($input) . "\n";