반응형
Web Development · PHP session
PHP $_SESSION —
서버에 사용자별 데이터 저장
방문 횟수를 세션에 저장 + 자동 식별
시작 오늘 분석할 코드
<?php session_start(); $count = 1; if(isset($_SESSION["count"])){ $count = $_SESSION["count"]; $count ++; } $_SESSION["count"] = $count; ?> <BODY> if($count == 1) → "처음 방문입니다." else → "당신의 방문은 N회째입니다."
cookie 코드와 거의 같지만 저장소만 다르다 — 쿠키는 브라우저, 세션은 서버.
용어 용어 정리
session_start()세션 사용 선언 — 매 페이지 첫 줄
$_SESSION서버에 저장되는 사용자별 배열
PHPSESSID사용자 식별용 쿠키 (자동 생성)
서버 저장/tmp/sess_xxx 같은 파일에 저장
유효 기간기본 24분 (gc_maxlifetime)
조작 불가사용자가 값 변경 X
vs cookie데이터 위치만 다름
실무로그인, 장바구니, 인증 토큰
1 session vs cookie — 같지만 다름
| 관점 | cookie | session |
|---|---|---|
| 저장 위치 | 브라우저 | 서버 |
| 식별 | 각 쿠키 | PHPSESSID 한 개로 모든 데이터 |
| 조작 가능 | O | X |
| 크기 제한 | 4KB | 실질 제한 적음 |
| 매 요청 전송 | 모든 쿠키 자동 | ID만 전송 |
| 적합 용도 | 비민감 설정·트래킹 | 로그인·중요 데이터 |
2 session_start의 역할
· 처음 호출: 새 PHPSESSID 발급 + 쿠키로 브라우저에 보냄
· 두 번째 호출: 쿠키로 받은 PHPSESSID로 서버 저장소에서 데이터 로드 → $_SESSION에 채움
· 두 번째 호출: 쿠키로 받은 PHPSESSID로 서버 저장소에서 데이터 로드 → $_SESSION에 채움
※
session_start()는 출력 전에 호출 (PHPSESSID 쿠키를 헤더로 보내기 위해).3 흐름 추적
[1번째 방문] session_start() → 새 ID "abc123" 발급, 쿠키로 브라우저에 전송 $_SESSION = [] $_SESSION["count"] = 1 서버: /tmp/sess_abc123에 저장 화면: "처음 방문입니다." [2번째 방문 — 새로고침] 브라우저가 PHPSESSID=abc123 자동 첨부 session_start() → 서버에서 abc123 데이터 로드 $_SESSION = ["count" => 1] $count = 1; $count++; → 2 $_SESSION["count"] = 2 화면: "당신의 방문은 2회째입니다."
반응형
4 세션 정리
// 특정 키만 삭제 unset($_SESSION["count"]); // 모든 세션 데이터 삭제 $_SESSION = []; // 세션 자체를 종료 (로그아웃 시) session_destroy();
5 자주 하는 실수
· session_start 빠뜨려 $_SESSION이 비어있음
· 출력 후 session_start → 헤더 오류
· 매 페이지 호출 안 함 (모든 페이지에 필요)
· 무한 누적 — 사용 후 정리 안 함
· 민감 정보(평문 비밀번호) 저장 — 서버 파일 노출 시 위험
· 출력 후 session_start → 헤더 오류
· 매 페이지 호출 안 함 (모든 페이지에 필요)
· 무한 누적 — 사용 후 정리 안 함
· 민감 정보(평문 비밀번호) 저장 — 서버 파일 노출 시 위험
6 보안 권장
// 로그인 직후 세션 ID 갱신 (세션 고정 공격 방어) session_regenerate_id(true); // 세션 쿠키도 보안 플래그 ini_set('session.cookie_httponly', 1); ini_set('session.cookie_secure', 1); // HTTPS 환경 ini_set('session.cookie_samesite', 'Lax');
핵심 한 줄 요약
$_SESSION서버에 저장되는 사용자별 데이터
session_start()매 페이지 시작에 — 출력 전
PHPSESSID사용자 식별 쿠키 (자동)
vs cookie조작 불가, 큰 데이터 가능
사용$_SESSION["키"] = 값 으로 저장
정리unset, $_SESSION=[], session_destroy
보안로그인 시 session_regenerate_id
반응형
'php' 카테고리의 다른 글
| PHP new — 클래스로부터 객체 생성 완전 정리 (0) | 2026.06.18 |
|---|---|
| PHP class — 클래스와 멤버변수·메서드 선언 완전 정리 (0) | 2026.06.17 |
| PHP cookie — setcookie와 $_COOKIE로 방문 횟수 카운트 완전 정리 (1) | 2026.06.17 |
| PHP form4 + confirm + view — 세션으로 데이터 운반 완전 정리 (0) | 2026.06.17 |
| PHP form + view — SELECT 드롭다운 처리 완전 정리 (0) | 2026.06.17 |
왕진 블로그

댓글