반응형
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_start 필요
· 출력 후 session_start → 오류
· 사용 후 unset 안 함 → 데이터가 다음 요청에도 남음
· $_SESSION에 무엇을 저장했는지 추적 어려워 디버깅 힘듦
핵심 한 줄 요약
$_SESSION서버에 저장되는 사용자별 데이터
session_start()세션 시작 — 매 페이지 출력 전
vs hidden조작 불가, 보안 우수
PHPSESSID쿠키로 사용자 식별
3단계 흐름저장(confirm) → 읽기(view)
활용로그인 상태, 장바구니, 임시 폼
정리사용 후 unset/session_destroy
반응형
'php' 카테고리의 다른 글
| PHP session — $_SESSION으로 방문 횟수 카운트 완전 정리 (0) | 2026.06.17 |
|---|---|
| PHP cookie — setcookie와 $_COOKIE로 방문 횟수 카운트 완전 정리 (1) | 2026.06.17 |
| PHP form + view — SELECT 드롭다운 처리 완전 정리 (0) | 2026.06.17 |
| PHP form + view — 라디오 버튼 단일 선택 완전 정리 (0) | 2026.06.17 |
| PHP form + view — 체크박스(배열) 처리 완전 정리 (0) | 2026.06.17 |
왕진 블로그

댓글