본문 바로가기

비개발자의 개발 일지

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

시리즈 보기
php

PHP form4 + confirm + view — 세션으로 데이터 운반 완전 정리

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

 

 

Web Development · PHP form4 + session

PHP 3단계 폼 — hidden 대신 세션 사용

$_SESSION에 데이터를 담아 페이지 사이를 안전하게 이동
시작 오늘 분석할 코드

이전 35번의 form3·form4는 hidden 필드로 데이터를 운반했다. 이번 코드는 같은 일을 세션으로 한다 — 더 안전하고 깔끔.

confirm.php (세션 저장)
<?php session_start(); $_SESSION["onamae"] = $_POST["onamae"]; $_SESSION["honbun"] = $_POST["honbun"]; if(isset($_POST["user_id"])){ $_SESSION["user_id"] = $_POST["user_id"]; } ?>
view.php (세션에서 읽기)
<?php session_start(); if(isset($_POST["confirm"])){ print $_SESSION["onamae"]."님으로부터의 메시지"; print nl2br($_SESSION["honbun"]); }elseif(isset($_POST["back"])){ print "<FORM>...폼 다시 출력 (이전 값은 \$_SESSION에서 가져옴)..."; } ?>
용어 용어 정리
$_SESSION서버에 저장되는 사용자별 데이터
session_start()세션 사용 선언 — 페이지 시작에 호출
서버 저장데이터는 서버 메모리/파일에
쿠키 ID사용자 식별은 PHPSESSID 쿠키로
vs hidden조작 불가 — 클라이언트엔 ID만
유효 기간기본 24분 (php.ini 설정)
출력 전 호출echo·HTML 전에 session_start
실무로그인 상태, 장바구니, 폼 데이터

1 세션 = 서버 저장

HTTP는 stateless라 페이지마다 사용자 정보를 새로 보내야 한다. 세션은 서버에 데이터를 저장하고 쿠키에 ID만 저장해 사용자별로 구분.

[브라우저] [서버] PHPSESSID=abc123 → 세션 저장소에 abc123 항목 ├─ onamae: "홍길동" ├─ honbun: "..." └─ user_id: "0001"

2 hidden vs 세션
관점 hidden 필드 세션
저장 위치 HTML 안 서버
클라이언트 조작 가능 (위험) 불가
크기 제한 HTML 크기에 영향 실질적 제한 적음
매 요청 전송 O X (ID만)
적합 용도 비민감 단순 운반 로그인·중요 데이터

3 session_start의 위치
session_start()HTML 출력 전에 호출해야 한다. 이미 출력이 시작된 후 호출하면 "headers already sent" 오류.
// 올바른 위치 — <?php 시작 직후 <?php session_start(); ?> <HTML>...</HTML>

 

반응형

 

4 세션 흐름
[1단계 form] → [2단계 confirm.php] └ session_start └ $_SESSION["..."] = $_POST["..."] (저장) ↓ [3단계 view.php] └ session_start └ $_SESSION["..."]을 읽어서 처리

5 print_r($_SESSION) — 디버그

이 코드의 view.php에는 <PRE><?php print_r($_SESSION); ?></PRE>가 있어 학습용으로 세션 내용을 화면에 보여준다.

※ 실제 운영 코드에서는 절대 세션 내용을 화면에 노출하지 말 것. 디버깅이 끝나면 제거.

6 자주 하는 실수
· session_start 누락 → $_SESSION이 비어있음
· 매 페이지 모두 session_start 필요
· 출력 후 session_start → 오류
· 사용 후 unset 안 함 → 데이터가 다음 요청에도 남음
· $_SESSION에 무엇을 저장했는지 추적 어려워 디버깅 힘듦

핵심 한 줄 요약

$_SESSION서버에 저장되는 사용자별 데이터
session_start()세션 시작 — 매 페이지 출력 전
vs hidden조작 불가, 보안 우수
PHPSESSID쿠키로 사용자 식별
3단계 흐름저장(confirm) → 읽기(view)
활용로그인 상태, 장바구니, 임시 폼
정리사용 후 unset/session_destroy
반응형

댓글