본문 바로가기

비개발자의 개발 일지

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

시리즈 보기
php

PHP form + confirm + view — 3단계 폼 처리 완전 정리

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

 

 

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
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
confirm.php
미리보기

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, 폼처리, 티스토리
반응형

댓글