본문 바로가기

비개발자의 개발 일지

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

시리즈 보기
php

PHP form + confirm + view — 3단계 확인 화면 + hidden 필드 완전 정리

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

 

 

Web Development · PHP form3 + confirm + view

PHP 3단계 폼 —
입력 → 확인 → 최종 송신

hidden 필드로 데이터를 다음 페이지로 이어 나르기
시작 오늘 분석할 코드

회원가입 같은 중요한 폼은 보통 입력 → 확인 → 송신의 3단계로 진행한다. 한번에 끝내지 않고 사용자가 입력값을 다시 확인하는 화면을 끼워 넣는다.

form.html (1단계 — 입력)
<FORM method="post" action="confirm.php"> <INPUT type="text" name="onamae"> <TEXTAREA name="honbun"></TEXTAREA> <INPUT type="submit" value="송신"> <INPUT type="hidden" name="user_id" value="0001"> </FORM>
confirm.php (2단계 — 확인)
확인화면 <FORM method="post" action="view.php"> <?php print "이름:"; print $_POST["onamae"]; print "<BR>본문 :<BR>"; print nl2br($_POST["honbun"]); ?> <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>
view.php (3단계 — 최종)
<?php print $_POST["onamae"]."님으로부터의 메시지"; print "<BR><BR>본문 :<BR>"; print nl2br($_POST["honbun"]); ?>
용어 용어 정리
type="hidden"화면에 안 보이지만 서버로 전송되는 입력
user_id사용자가 모르게 운반되는 값 (예시)
3단계 흐름입력 → 확인 → 송신
데이터 운반$_POST를 다음 페이지로 hidden으로
<?=$x?><?php echo $x; ?>의 짧은 표기
XSS 위험value 직접 출력 시 이스케이프 필수
vs 세션$_SESSION이 더 안전한 대안
실무결제, 회원가입, 중요 폼

1 왜 확인 화면을 두는가?
· 사용자가 잘못 입력한 걸 다시 확인할 수 있다
· "정말 송신하시겠습니까?" 단계 → 실수 방지
· 결제·회원가입 같은 중요한 폼에서 표준

2 hidden 필드의 역할

HTTP는 stateless라 페이지가 바뀌면 이전 데이터를 잊는다. 데이터를 다음 페이지로 보내려면 어딘가에 다시 담아 보내야 한다. hidden 필드는 그 가장 단순한 방법.

// confirm.php에서 view.php로 데이터를 운반 <INPUT type="hidden" name="onamae" value="<?=$_POST['onamae']?>"> // ↑ // 이전 페이지에서 받은 값을 // 다음 페이지로 다시 전달

3 <?=$x?> 짧은 echo 문법
// 다음 두 줄은 동일 <?=$_POST["onamae"]?> <?php echo $_POST["onamae"]; ?>

HTML 안에서 PHP 값을 짧게 출력할 때 자주 쓰인다. PHP 5.4+ 기본 활성화.


 

반응형

 

4 결정적 보안 결함 — XSS
value="<?=$_POST['onamae']?>"는 위험하다. 사용자가 이름에 "><script>...</script>를 넣으면 그대로 실행.
// 안전한 출력 <INPUT type="hidden" name="onamae" value="<?=htmlspecialchars($_POST['onamae'], ENT_QUOTES, 'UTF-8')?>">

모든 사용자 입력 출력에 htmlspecialchars 필수.


5 더 안전한 대안 — 세션
// confirm.php session_start(); $_SESSION['form_data'] = $_POST; // 화면 출력... // view.php session_start(); $data = $_SESSION['form_data']; unset($_SESSION['form_data']); // 사용 후 정리

세션은 데이터가 서버에만 저장되어 클라이언트가 조작할 수 없다. 민감 데이터에 권장.


6 자주 하는 실수
· hidden 필드 누락 → 다음 페이지에서 데이터 사라짐
· htmlspecialchars 빠뜨려 XSS
· hidden = "안 보임"으로 오해 (소스 보면 다 보임)
· user_id 같은 민감 값을 hidden에 — 클라이언트 조작 가능
· 새로고침 시 중복 송신 (PRG 패턴 권장)

핵심 한 줄 요약

3단계 폼입력 → 확인 → 송신
hidden 필드화면 안 보이지만 서버로 전송
데이터 운반매 단계마다 hidden으로 다시 전달
<?=$x?>echo의 짧은 문법
XSS 주의value에 입력값 그대로 X
세션 권장민감 데이터는 $_SESSION으로
실무회원가입, 결제, 중요 폼
반응형

댓글