Form에서 체크박스 여러개 값 전달하기

웹 개발을 하다보면 체크박스를 이용하여 여러개의 값을 넘겨야 할 상황이 생깁니다. 대표적으로 옵션 같은 기능들이죠. form을 통한 전송 시 array 형태로 던지고 php에서 array로 받는다면 쉽게 구현할 수 있습니다.

아래 코드를 보도록 하겠습니다.

FE

<form action="./test.php" method="POST">
<input type="checkbox" name="case[]" value="A"> case1<br>
<input type="checkbox" name="case[]" value="B"> case2<br>
<input type="checkbox" name="case[]" value="C"> case3<br>
<input type="checkbox" name="case[]" value="D"> case4<br>
<input type="checkbox" name="case[]" value="E"> case5<br>
<input type="submit"><br>
</form>

BE

<?php

$list = $_POST['case'];
echo $list[0];
echo $list[1];

?>

주목해야할 부분은 HTML 코드 내 name 부분입니다. 보통 HTML 객체들을 인지하기 위해 name 이나 id를 지정하는데, 저런식으로 array 형태로도 지정할 수 있습니다. 해당 form 태그가 submit 될 때 요청은 아래와 같이 동일한 파라미터로 다수 발생합니다.

POST /test.php HTTP/1.1
Host: 127.0.0.1
..snip..
Content-Length: 25

case%5B%5D=A&case%5B%5D=C

일반적으로 $_POST$_GET 등은 각 서버 별 특징에 따라 하나의 파라미터 값만 받습니다. 다만 저런식으로 Array 형태([]/%5B%5D)로 넘어오게 될 때 PHP는 배열로 인지하여 array에 집어넣게 됩니다. 그래서 $_POST['case'] 로 여러가지 값들의 리스트를 받을 수 있습니다. 아주 쉽고 간단하게 구현이 가능하네요.