본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP form + view — 체크박스(배열) 처리 완전 정리

by 왕진 2026. 6. 17.
반응형

 

 

Web Development · PHP form + checkbox

PHP 체크박스 처리 —
name="hobby[]"로 다중 선택 받기

여러 개 선택 가능한 입력은 name 끝에 [] 붙여 배열로
시작 오늘 분석할 코드
<FORM method="post" action="view.php"> 나의 취미:<BR> <INPUT type="checkbox" name="hobby[]" value="스포츠">스포츠 <INPUT type="checkbox" name="hobby[]" value="영화감상">영화감상 <INPUT type="checkbox" name="hobby[]" value="독서">독서 <INPUT type="submit" value="송신"> </FORM>
<?php if(isset($_POST["hobby"])){ $hobby = implode('와 ', $_POST["hobby"]); print "저의 취미는 ".$hobby."입니다."; }else{ print "저의 취미는 없습니다."; } ?>
용어 용어 정리
type="checkbox"다중 선택 가능한 체크박스
name="x[]"대괄호로 배열로 받음
$_POST["hobby"]선택된 값들의 배열
isset한 개라도 체크됐는지 확인
implode배열 → 구분자로 합친 문자열
아무것도 안 체크키 자체가 $_POST에 없음
vs radioradio는 1개만, checkbox는 여러 개
실무관심사·태그·옵션 다중 선택

1 name="hobby[]"의 의미

같은 name으로 여러 input이 있을 때, 대괄호 []를 붙이면 PHP가 자동으로 배열로 묶어준다.

// 사용자가 "스포츠"와 "독서"만 체크 $_POST["hobby"] === ["스포츠", "독서"] // 자동으로 배열로 들어옴!
[]를 빼먹으면 같은 name이 충돌해 마지막 값만 남는다 (다른 값은 덮어써짐).

2 아무것도 체크 안 하면?

체크된 게 하나도 없으면 키 자체가 $_POST에 들어오지 않는다. 그래서 isset으로 먼저 검사 필요.

if (isset($_POST["hobby"])) { // 1개 이상 체크됨 } else { // 아무것도 체크 안 함 }

3 implode로 한 문자열로
$_POST["hobby"] = ["스포츠", "독서"]; $hobby = implode('와 ', $_POST["hobby"]); // → "스포츠와 독서"

 

반응형

 

4 자주 하는 실수
· name에 [] 빼먹기 → 마지막 체크만 받힘
· isset 검사 안 함 → "Undefined index" 경고
· 출력 시 htmlspecialchars 누락 (XSS)
· in_array로 체크 상태 검사 안 함 → form 재출력 시 체크 안 됨

핵심 한 줄 요약

checkbox다중 선택 입력
name="x[]"대괄호로 배열로 받기
$_POST["x"]선택된 값들의 배열
isset 검사아무것도 체크 안 했을 수 있음
implode배열을 한 문자열로 결합
vs radioradio는 1개만 — name에 [] 불필요
활용관심사, 옵션, 태그 다중 선택
반응형

댓글