PHP 개발 기본 튜토리얼 ...LOGIN

PHP 개발 기본 튜토리얼 - 필터

1. PHP 필터란 무엇인가요?

PHP 필터는 사용자 입력과 같은 비보안 소스의 데이터를 검증하고 필터링하는 데 사용됩니다.

사용자 입력 또는 맞춤 데이터를 테스트하고 검증하고 필터링하는 것은 모든 웹 애플리케이션에서 중요한 부분입니다.

PHP의 필터 확장은 데이터 필터링을 더 쉽고 빠르게 할 수 있도록 설계되었습니다.


2. 필터를 사용하는 이유는 무엇인가요?

거의 모든 웹 애플리케이션은 외부 입력에 의존합니다. 이 데이터는 일반적으로 사용자 또는 기타 애플리케이션(예: 웹 서비스)에서 제공됩니다. 필터를 사용하면 애플리케이션이 올바른 입력 유형을 얻도록 할 수 있습니다.

외부 데이터는 항상 필터링해야 합니다!

입력 필터링은 가장 중요한 애플리케이션 보안 주제 중 하나입니다.

외부데이터란?

  • 양식에서 데이터 입력

  • 쿠키

  • 웹 서비스 데이터

  • 서버 변수

  • 데이터베이스 쿼리 결과


3. 🎜>

변수를 필터링하려면 다음 필터 함수 중 하나를 사용하세요.

filter_var() - 지정된 필터로 단일 변수를 필터링합니다. 변수

filter_var_array() - 동일하거나 다른 필터로 여러 변수 필터링

filter_input - 입력 변수 가져오기 및 필터링

filter_input_array - 여러 입력 변수를 가져와 동일하거나 다른 필터로 필터링합니다.

아래 예에서는 filter_var() 함수를 사용하여 정수를 확인합니다. 코드는 다음과 같습니다. 다음

<?php
$int = 12443633;
//验证一个数是不是整数
if(!filter_var($int, FILTER_VALIDATE_INT))
{
	echo("不是一个合法的整数");
}
else
{
	echo("是个合法的整数");
}
?>

출력은 오른쪽 그림에 표시됩니다

참고: 다른 변수를 사용하여 출력 결과를 관찰할 수 있습니다


4. 검증 및 삭제

필터링에는 두 가지 종류가 있습니다.

필터 확인:

  • 사용자 입력을 확인하는 데 사용됩니다.

  • 엄격한 형식 지정 규칙(예: URL 또는 이메일 확인)

  • 성공하면 예상 유형을 반환하고, 실패하면 FALSE를 반환합니다.

위생 필터:

  • 허용하는 데 사용됩니다. 또는 문자열에서 지정된 문자를 금지합니다

  • 데이터 형식 규칙 없음

  • 항상 문자열을 반환합니다


5. 옵션 및 플래그

옵션 및 플래그는 추가 필터링 옵션을 추가하는 데 사용됩니다.

필터마다 옵션과 플래그가 다릅니다.

아래 예에서는 "min_range" 및 "max_range" 옵션과 함께 filter_var()를 사용하여 정수의 유효성을 검사합니다.

코드는 다음과 같습니다

<?php
$var=300;

$int_options = array(
	"options"=>array
	(
		"min_range"=>0,
		"max_range"=>256
	)
);

if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
{
	echo("不是一个合法的整数");
}
else
{
	echo("是个合法的整数");
}
?>

위의 코드처럼 옵션은 "options"라는 관련 배열에 넣어야 합니다. 플래그를 사용하는 경우 배열에 있을 필요는 없습니다.

정수가 "300"이므로 지정된 범위 내에 있지 않으므로 위 코드의 출력은 다음과 같습니다.

은(는) 유효한 정수가 아닙니다.

함수 및 필터의 전체 목록을 보려면 PHP 설명서를 참조하세요.


6. 입력 유효성 검사

Let's 양식에서 입력 유효성을 검사해 보세요.

가장 먼저 해야 할 일은 찾고 있는 입력 데이터가 존재하는지 확인하는 것입니다.

그런 다음 filter_input() 함수를 사용하여 입력 데이터를 필터링합니다.

다음 예에서는 입력 변수 "email"이 PHP 페이지에 전달됩니다.

<?php
if(!filter_has_var(INPUT_GET, "email"))
{
	echo("没有 email 参数");
}
else
{
	if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
	{
		echo "不是一个合法的 E-Mail";
	}
	else
	{
		echo "是一个合法的 E-Mail";
	}
}
?>

위 예에서는 "GET" 메소드를 통해 전달된 입력 변수(email)가 있습니다.

  • "GET" 유형의 "email" 입력 변수가 있는지 확인

  • 입력 변수가 있으면 a인지 확인 유효한 이메일 주소


7. 입력 정화

URL을 정리해보자 양식에서 전달되었습니다.

먼저 우리가 찾고 있는 입력 데이터가 존재하는지 확인하고 싶습니다.

그런 다음 filter_input() 함수를 사용하여 입력 데이터를 정제합니다.

다음 예에서는 입력 변수 "url"이 PHP 페이지에 전달됩니다.

<?php
if(!filter_has_var(INPUT_GET, "url"))
{
	echo("没有 url 参数");
}
else
{
	$url = filter_input(INPUT_GET, 
	"url", FILTER_SANITIZE_URL);
	echo $url;
}
?>

예제 설명:

위 예에는 "GET" 메소드를 통해 전송된 입력 변수(url)가 있습니다.

"GET" 유형의 "url" 입력 변수가 있는지 감지

이 입력 변수가 존재하는 경우 삭제합니다. (삭제) 잘못된 문자) $url 변수에 저장합니다


8. 여러 입력 필터링

양식 일반적으로 여러 개의 입력 필드로 구성됩니다. filter_var 또는 filter_input 함수에 대한 반복 호출을 방지하려면 filter_var_array 또는 filter_input_array 함수를 사용할 수 있습니다.

이 예에서는 filter_input_array() 함수를 사용하여 세 개의 GET 변수를 필터링합니다. 수신된 GET 변수는 이름, 나이, 이메일 주소입니다.

예제는 다음과 같습니다

<?php
$filters = array
(
	"name" => array
	(
		"filter"=>FILTER_SANITIZE_STRING
	),
	"age" => array
	(
		"filter"=>FILTER_VALIDATE_INT,
		"options"=>array
		(
			"min_range"=>1,
			"max_range"=>120
		)
	),
	"email"=> FILTER_VALIDATE_EMAIL
);

$result = filter_input_array(INPUT_GET, $filters);

if (!$result["age"])
{
	echo("年龄必须在 1 到 120 之间。<br>");
}
elseif(!$result["email"])
{
	echo("E-Mail 不合法<br>");
}
else
{
	echo("输入正确");
}
?>

설명 예

위의 예 "GET" 메소드를 통해 전달된 세 가지 입력 변수(이름, 나이 및 이메일)가 있습니다.

  • 입력 변수의 이름과 입력의 이름을 포함하는 배열을 설정합니다. 지정된 필터

  • 에 대한 변수는 filter_input_array() 함수를 호출하고 매개변수에는 GET 입력 변수가 포함되며 방금 설정된 배열은

  • " $result 변수 " 및 "email" 변수의 age에 잘못된 입력이 있습니다. (잘못된 입력이 있는 경우 filter_input_array() 함수 사용 후 입력 변수는 FALSE입니다.)

filter_input_array() 함수의 두 번째 매개변수는 배열이거나 단일 필터의 ID일 수 있습니다.

매개변수가 단일 필터의 ID인 경우 지정된 필터는 입력 배열의 모든 값을 필터링합니다.

매개변수가 배열인 경우 배열은 다음 규칙을 따라야 합니다.

은 배열의 키인 입력 변수(예: "age")를 포함하는 연관 배열이어야 합니다. " 입력 변수 )

이 배열의 값은 필터의 ID이거나 필터, 플래그 및 옵션을 지정하는 배열이어야 합니다


9. 사용 필터 콜백

FILTER_CALLBACK 필터를 사용하면 사용자 정의 함수를 호출하여 필터로 사용할 수 있습니다. 이러한 방식으로 우리는 데이터 필터링을 완벽하게 제어할 수 있습니다.

자신만의 맞춤 함수를 만들거나 기존 PHP 함수를 사용할 수 있습니다.

지정된 옵션의 지정 방식에 따라 사용할 필터의 기능을 지정합니다. 이름이 "options"인 연관 배열에서.

아래 예에서는 사용자 정의 함수를 사용하여 모든 "_"를 공백으로 변환합니다.

<?php
function convertSpace($string)
{
	return str_replace("_", ".", $string);
}

$string = "www_php_cn!";

echo filter_var($string, FILTER_CALLBACK,
array("options"=>"convertSpace"));
?>

출력 결과는 오른쪽에 표시됩니다

예 설명

위의 예는 "_"를 모두 "."로 변환합니다.

  • "_"를 "."으로 바꾸는 함수를 만듭니다.

  • filter_var() 함수를 호출합니다. 해당 매개변수는 FILTER_CALLBACK 필터와 함수가 포함된 배열입니다.

  • 다음 섹션
<?php $int = 12443633; //验证一个数是不是整数 if(!filter_var($int, FILTER_VALIDATE_INT)) { echo("不是一个合法的整数"); } else { echo("是个合法的整数"); } ?>
코스웨어