반응형
Web Development · PHP Form
PHP form + confirm + view
3단계 폼 처리 완전 정리
$_POST · hidden · isset · 되돌아가기 — 게시판/주문서의 기본 패턴
시작 사용자 입력은 어떻게 처리하는가
웹 페이지에서 사용자가 입력한 데이터는 <form>으로 묶여 서버로 전송된다. 서버(PHP)는 $_POST로 받아서 처리한다. 이번에는 가장 단순한 form → view부터 form → confirm → view의 3단계, 그리고 되돌아가기까지 가능한 4가지 패턴을 정리한다.
용어 핵심 키워드
<form>데이터 전송 영역
method="post"본문에 데이터 (큰 데이터, 비밀)
method="get"URL에 데이터 (작은 데이터, 검색)
action="..."전송 받을 페이지 URL
name="..."서버에서 받을 키 이름
$_POST[]POST 데이터 슈퍼글로벌
$_GET[]GET 데이터 슈퍼글로벌
type="hidden"화면 안 보이는 데이터 전달
type="submit"전송 버튼
isset()변수가 정의되어 있나
<?= ?>echo 단축형
nl2br()개행 → <br>
1 패턴 1 — 단순 form → view
form.html
사용자 입력
→
POST
POST
view.php
받아서 출력
<!-- form.html --> <form method="post" action="view.php"> 이름:<br> <input type="text" name="onamae"><br> <input type="submit" value="송신"> </form>
<!-- view.php --> <?php print $_POST["onamae"]." 님 안녕하세요!"; ?>
📌
<input name="onamae">의 name 속성이 곧 $_POST의 키가 된다. <input name="email">이면 $_POST["email"]로 받음.2 패턴 2 — textarea와 nl2br
여러 줄 입력을 받으려면 <textarea>. 받은 값은 줄바꿈을 그대로 보여주려면 nl2br()로 <br> 변환.
<!-- form.html --> <form method="post" action="view.php"> 이름:<br><input type="text" name="onamae"><br> 본문:<br> <textarea name="honbun" cols="30" rows="5"></textarea><br> <input type="submit" value="송신"> </form>
<!-- view.php --> <?php print $_POST["onamae"]." 님으로부터의 메시지"; print "<br><br>본문 :<br>"; print nl2br($_POST["honbun"]); // 줄바꿈 보존 ?>
3 패턴 3 — form → confirm → view
중요 데이터는 사용자에게 "이게 맞나요?" 확인 단계를 거치는 게 좋다. 게시글 작성 → 미리보기 → 등록의 3단계.
form.html
입력
→
POST
POST
confirm.php
미리보기
→
POST
POST
view.php
최종 처리
핵심 — hidden으로 데이터 이어가기
<!-- confirm.php — 보여주면서 hidden으로 다음 페이지로 전달 --> <form method="post" action="view.php"> <?php print "이름:".$_POST["onamae"]; print "<br><br>본문:<br>"; print nl2br($_POST["honbun"]); ?> <br> <input type="submit" value="확인"> <!-- 화면에 안 보이지만 다음 페이지로 데이터 이어감 --> <input type="hidden" name="onamae" value="<?=$_POST["onamae"]?>"> <input type="hidden" name="honbun" value="<?=$_POST["honbun"]?>"> <input type="hidden" name="user_id" value="<?=$_POST["user_id"]?>"> </form>
💡 <?= ... ?>은
<?php echo ... ?>의 단축형. HTML 안에 PHP 값 끼워넣을 때 짧게 쓸 수 있다.⚠ hidden value에 따옴표가 들어가면 깨진다 — 사용자가
"를 입력하면 HTML 속성이 깨짐. 반드시 htmlspecialchars()로 이스케이프 → value="<?= htmlspecialchars($_POST["onamae"]) ?>"4 패턴 4 — 되돌아가기 버튼 추가
확인 화면에서 "고치고 싶다"는 경우. 버튼을 두 개 두고, view.php에서 어느 버튼을 눌렀는지 판단한다.
<!-- confirm.php --> <input type="submit" value="확인" name="confirm"> <input type="submit" value="되돌아가기" name="back"> <!-- 둘 다 같은 폼 안. value는 표시 텍스트, name이 식별자 -->
<!-- view.php --> <?php if (isset($_POST["confirm"])) { // 확인 버튼을 눌렀을 때 — 최종 표시 print $_POST["onamae"]."님으로부터의 메시지"; print "<br><br>본문:<br>"; print nl2br($_POST["honbun"]); } elseif (isset($_POST["back"])) { // 되돌아가기 — form을 다시 보여주되, 입력값 채워서 ?> <form method="post" action="confirm.php"> <input type="text" name="onamae" value="<?=$_POST["onamae"]?>"> <textarea name="honbun"><?=$_POST["honbun"]?></textarea> <input type="submit" value="발송"> </form> <?php } else { print "오류입니다."; } ?>
※ submit 버튼이 여러 개일 때
- 각 버튼에 다른 name을 부여 (
name="confirm",name="back") - 눌린 버튼만
$_POST에 들어옴 —isset()로 어느 버튼인지 판단 - 되돌아가기 시 입력값을 value로 다시 채워줘야 사용자가 처음부터 안 쓴다
반응형
5 POST vs GET — 언제 무엇을
POST
- HTTP 본문에 데이터
- URL에 안 보임
- 크기 제한 거의 없음
- 북마크 불가, 새로고침 시 재전송 경고
- 비밀번호, 본문, 파일 업로드
GET
- URL 쿼리스트링에 (?key=val)
- 주소창에 그대로 보임
- URL 길이 제한 (~2000자)
- 북마크/공유 가능
- 검색, 필터, 페이지 번호
📌 받는 코드도 다르다 — POST는
$_POST["키"], GET은 $_GET["키"]. 둘 다 통합해서 받으려면 $_REQUEST["키"] (보안상 권장 X).6 폼 관련 슈퍼글로벌
| 이름 | 용도 |
|---|---|
$_POST |
POST로 받은 데이터 |
$_GET |
GET으로 받은 데이터 (URL ?...) |
$_REQUEST |
POST + GET + COOKIE 통합 |
$_FILES |
업로드된 파일 정보 |
$_COOKIE |
브라우저 쿠키 |
$_SESSION |
서버 세션 (로그인 상태 등) |
$_SERVER |
서버 정보 (IP, URL 등) |
$_ENV |
환경 변수 |
7 폼 보안 체크리스트
⚠ 사용자 입력은 절대 신뢰하지 말 것 — 모든 보안 사고의 시작점이다.
| 위협 | 방어 |
|---|---|
| XSS (악성 스크립트 삽입) | 출력 시 htmlspecialchars() |
| SQL 인젝션 | prepared statement (PDO::prepare) |
| CSRF (요청 위조) | 토큰 기반 검증 |
| 파일 업로드 우회 | 확장자/MIME 화이트리스트, 별도 폴더 |
| 경로 우회 | basename()로 정화 |
| 입력 누락 | isset() + trim()으로 빈값 체크 |
8 핵심 한 줄 요약
PHP — FORM PROCESSING
폼 시작<form method="post" action="view.php">
입력 받기$_POST["name속성값"]
데이터 이어가기<input type="hidden">
버튼 식별submit에 name 부여 + isset()로 확인
echo 단축<?= $value ?>
줄바꿈 보존nl2br($_POST["text"])
XSS 방어htmlspecialchars() — value 출력 시 필수
3단계 폼form → confirm (hidden) → view
Tags
#PHP #form #POST #GET #action #POST배열 #hidden #confirm #view #isset #nl2br #폼처리 #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, form, POST, GET, action, POST배열, hidden, confirm, view, isset, nl2br, 폼처리, 티스토리
반응형
'php' 카테고리의 다른 글
| HTML 학생 정보 테이블 — 외부 CSS 연결 완전 정리 (0) | 2026.06.11 |
|---|---|
| jQuery Mobile 도서 관리 앱 — multi-page + WebSQL 완전 정리 (0) | 2026.06.11 |
| PHP 서버 함수 — 날짜 · 파일 · 디렉토리 · 리다이렉트 완전 정리 (0) | 2026.06.11 |
| PHP 정렬 · 배열 조작 · 문자열 함수 완전 정리 (0) | 2026.06.11 |
| PHP return · 변수 범위 · static · 문자열 함수 완전 정리 (0) | 2026.06.11 |
왕진 블로그

댓글