반응형
Web Development · PHP form + radio
PHP 라디오 버튼 —
여러 옵션 중 1개만 선택
같은 name + 다른 value, []는 안 붙임 (단일 선택)
시작 오늘 분석할 코드
<FORM method="post" action="view.php"> 성별: <INPUT type="radio" name="gender" value="남">남 <INPUT type="radio" name="gender" value="여">여 <INPUT type="submit" value="송신"> </FORM>
<?php if(isset($_POST["gender"]) && ($_POST["gender"] == "남" || $_POST["gender"] == "여")){ print "성별:<BR>"; print $_POST["gender"]; }else{ print "성별을 선택하세요.<BR>"; } ?>
용어 용어 정리
type="radio"단일 선택 입력
같은 name하나의 그룹으로 묶임
[ ] 안 붙임한 값만 들어오므로 배열 X
$_POST["gender"]선택한 옵션의 value 한 개
whitelist 검증"남" 또는 "여"만 허용
|| (OR)두 조건 중 하나라도 참
vs checkboxradio는 1개, checkbox는 여러 개
실무성별, 결제 방법, 단일 옵션
1 라디오 그룹 — 같은 name이 핵심
같은 name="gender"를 가진 라디오 버튼들은 한 그룹이 된다. 그 안에서 하나만 선택 가능.
※ 다른 name을 주면 두 개를 동시에 선택할 수 있어 라디오 버튼이 아니게 된다. 라디오 그룹의 핵심은 "같은 name".
2 화이트리스트 검증의 중요성
// 안 좋은 검증 if (isset($_POST["gender"])) { // value를 그대로 신뢰 → 사용자 조작 가능 } // 좋은 검증 (이 코드) if (isset($_POST["gender"]) && ($_POST["gender"] == "남" || $_POST["gender"] == "여")) { // 미리 정한 값만 허용 } // 더 깔끔하게 if (isset($_POST["gender"]) && in_array($_POST["gender"], ["남", "여"])) { ... }
라디오 버튼은 HTML에 옵션을 박아둔 것 같지만, 사용자가 도구로 조작하면 다른 값을 보낼 수 있다. 서버에서 한 번 더 검증.
3 checkbox와 radio의 차이
// checkbox — 다중 선택, 배열로 받음 <INPUT type="checkbox" name="hobby[]" value="A"> <INPUT type="checkbox" name="hobby[]" value="B"> $_POST["hobby"] === ["A", "B"] // 배열 // radio — 단일 선택, 문자열 한 개 <INPUT type="radio" name="gender" value="남"> <INPUT type="radio" name="gender" value="여"> $_POST["gender"] === "남" // 단일 값
반응형
4 자주 하는 실수
· 다른 name 주거나 같은 name 안에 [] 사용 → 라디오 그룹 깨짐
· 검증 없이 그대로 신뢰 → 화이트리스트 회피 가능
· 아무것도 선택 안 한 경우 처리 안 함 → undefined
· 한 그룹에 같은 value 두 개 → 어느 게 선택됐는지 구분 어려움
· 검증 없이 그대로 신뢰 → 화이트리스트 회피 가능
· 아무것도 선택 안 한 경우 처리 안 함 → undefined
· 한 그룹에 같은 value 두 개 → 어느 게 선택됐는지 구분 어려움
핵심 한 줄 요약
radio한 그룹에서 1개만 선택
같은 name한 그룹으로 묶는 핵심
[ ] 없음단일 값이므로 배열 표기 X
검증화이트리스트로 미리 정한 값만 허용
isset아무것도 선택 안 했을 가능성
vs checkboxradio 1개, checkbox 여러 개
실무성별, 결제 방법, 등급 선택
반응형
'php' 카테고리의 다른 글
| PHP form4 + confirm + view — 세션으로 데이터 운반 완전 정리 (0) | 2026.06.17 |
|---|---|
| PHP form + view — SELECT 드롭다운 처리 완전 정리 (0) | 2026.06.17 |
| PHP form + view — 체크박스(배열) 처리 완전 정리 (0) | 2026.06.17 |
| PHP form4 + confirm + view — 확인/되돌아가기 분기 처리 완전 정리 (0) | 2026.06.17 |
| PHP form + confirm + view — 3단계 확인 화면 + hidden 필드 완전 정리 (0) | 2026.06.17 |
왕진 블로그

댓글