반응형
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 패턴 권장)
· htmlspecialchars 빠뜨려 XSS
· hidden = "안 보임"으로 오해 (소스 보면 다 보임)
· user_id 같은 민감 값을 hidden에 — 클라이언트 조작 가능
· 새로고침 시 중복 송신 (PRG 패턴 권장)
핵심 한 줄 요약
3단계 폼입력 → 확인 → 송신
hidden 필드화면 안 보이지만 서버로 전송
데이터 운반매 단계마다 hidden으로 다시 전달
<?=$x?>echo의 짧은 문법
XSS 주의value에 입력값 그대로 X
세션 권장민감 데이터는 $_SESSION으로
실무회원가입, 결제, 중요 폼
반응형
'php' 카테고리의 다른 글
| PHP form + view — 체크박스(배열) 처리 완전 정리 (0) | 2026.06.17 |
|---|---|
| PHP form4 + confirm + view — 확인/되돌아가기 분기 처리 완전 정리 (0) | 2026.06.17 |
| PHP form2 + view — TEXTAREA 입력과 줄바꿈 처리 완전 정리 (0) | 2026.06.17 |
| PHP form + view — 폼 입력 → POST → 화면 출력 완전 정리 (0) | 2026.06.17 |
| PHP preg_match — 정규식 패턴 검사 완전 정리 (0) | 2026.06.16 |
왕진 블로그

댓글