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

minah moon·2023년 8월 14일

PHP

목록 보기
25/58
post-thumbnail

숫자 유효성 검사하기

폼 데이터가 수집되면 모든 필수값이 제공되었으며 데이터가 올바른 형식인지 확인해야 한다. 이것은 페이지가 실행될 때 오류를 발생시키는 잘못된 데이터를 막아준다.

값이 숫자인지 확인하려면 is_numeric()이라는 PHP의 내장 함수를 사용한다.

숫자가 허용된 숫자의 범위 내에 있는지 확인해야 하는 경우, 사용자 정의 함수를 만들 수도 있다.

function is_number($number, int $min = 0, int $max = 100): bool
{
	return ($number >= $min and $number <= $max);
}

두 표현식 모두 true로 평가되면 이 함수는 true를 반환한다. 만약에 표현식 중 하나가 false이면, 이 함수는 false를 반환한다.
페이지가 숫자를 수집하면 이 함수를 호출하여 값이 유효한지 확인할 수 있다.


텍스트 길이 유효성 검사하기

mb_strlen() PHP의 내장 함수는 문자열에 얼마나 많은 문자가 있는지 계수하는 데 사용된다. 이 숫자는 변수에 저장된다.

그런 다음, 그 숫자의 개수가 허용된 범위 안에 있는지 확인하기 위해 두 개의 표현식을 조건으로 사용한다.

문자의 개수가 유효하다면 함수는 true를 반환하며 유효하지 않다면 false를 반환한다.

데이터의 유효성을 검사하는 코드를 함수 안에 두면, 여러 개의 폼 컨트롤의 유효성을 확인하는 데 사용할 수 있다. 이것은 동일한 작업을 수행하기 위해 코드를 반복적으로 작성하는 수고를 덜어준다.

여러 페이지에서 동일한 유효성 검사 작업을 수행하는 경우에는 함수 정의를 인클루드 파일에 배치할 수도 있다. 그런 다음 각 페이지마다 동일한 함수 정의를 복사해서 사용하는 게 아니라 이 파일을 인클루드하면 된다.

function is_text($text, int $min = 0, int $max = 100): bool
{
	$length = mb_strlen($text);
    return ($length >= $min and $length <= $max);
}

셀렉트 박스와 라디오 버튼

셀렉트 박스와 라디오 버튼은 사용자가 옵션 목록 중 하나를 선택할 수 있게 한다. 브라우저는 옵션이 선택되면 그 이름과 값을 서버로 보낸다. 이 값은 옵션 목록 중에 하나인지를 확인하여 유효성을 검사한다.

셀렉트 박스나 라디오 버튼을 폼에서 사용할 때, 사용자가 선택할 수 있는 모든 옵션을 담은 인덱스 배열을 만들고 변수에 저장할 수 있다.

다음의 배열은 1에서 5까지의 별점을 저장한다.

$star_ratings = [1, 2, 3, 4, 5];

사용자가 유효한 옵션을 선택했는지 확인하기 위해 PHP의 내장 함수인 in_array()를 사용한다.

$valid = in_array($stars, $star_ratings);

제출된 값이 옵션의 배열에 있는 것이라면 in_array()는 true를 반환한다. 그렇지 않다면 false를 반환한다.


체크박스가 체크되었는지 확인하는 방법

체크박스는 체크가 되거나 체크되지 않을 수 있지만, 체크박스의 이름과 값은 체크박스가 체크된 경우에만 서버로 전송된다.

체크박스가 선택되었는지를 확인하려면 다음의 두 단계가 필요하다.

  • 먼저, PHP의 isset() 함수를 사용하여 슈퍼글로벌 배열에 체크박스에 대한 값이 있는지를 확인한다.
  • 만약에 있다면, 제공된 그 값이 전송될 것으로 기대한 그 값인지 확인한다.
$terms = (isset($_POST['terms']) and $_POST['terms'] == true) ? true : false;

사용자에게 다시 폼을 표시하게 된다면, 사용자가 선택했던 박스를 체크하기 위해서 해당 체크박스의 값이 true인지 확인해야 한다. 만약에 그렇다면, 컨트롤에 checked 속성을 추가한다. 그렇지 않다면 빈 문자열을 작성한다.

<input type="checkbox" name="terms" value="true"
	<?= $terms ? 'checked' : '' ?>>





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

0개의 댓글