데브포일 홈
DEV MODE - 실서버 영향 없음 📦 배포 관리
세션과 쿠키 - 사용자 인증 기초
+200 XP
LEVEL 35 QUEST

세션과 쿠키 - 사용자 인증 기초

세션과 쿠키 - 사용자 인증 기초 — DevFoil 바이브코딩 Stage 8, Lv.35

왜 세션과 쿠키가 필요한가?
HTTP의 비상태성(Stateless) 문제
HTTP 프로토콜은 비상태(stateless)입니다. 매 요청이 독립적이라, 서버는 "이전에 요청한 사람"을 기억하지 못합니다. 그래서 로그인 후 다른 페이지로 이동하면 서버는 "이 사람이 로그인했는지" 알 수 없습니다.

이 문제를 해결하기 위해 쿠키(Cookie)세션(Session)이 존재합니다.
쿠키(Cookie) - 브라우저에 저장하는 데이터
쿠키의 작동 원리
쿠키는 사용자의 브라우저에 저장되는 작은 텍스트 파일입니다. 서버가 응답 헤더에 Set-Cookie를 보내면 브라우저가 저장하고, 이후 같은 도메인에 요청할 때마다 자동으로 쿠키를 함께 보냅니다.
<?php
// 쿠키 설정 - 반드시 HTML 출력 전에 호출!
// setcookie(이름, 값, 만료시간, 경로, 도메인, HTTPS전용, JS접근차단)

// 기본 쿠키 (브라우저 닫으면 삭제)
setcookie("theme", "dark");

// 30일 동안 유지되는 쿠키
setcookie("language", "ko", time() + (30 * 24 * 60 * 60));

// 보안 설정이 적용된 쿠키 (권장)
setcookie("user_pref", "compact", [
    "expires"  => time() + (30 * 24 * 60 * 60),
    "path"     => "/",
    "domain"   => "",
    "secure"   => true,    // HTTPS에서만 전송
    "httponly"  => true,    // JavaScript에서 접근 불가
    "samesite" => "Strict" // 다른 사이트에서 전송 불가
]);

// 쿠키 읽기
$theme = $_COOKIE["theme"] ?? "light";
echo "현재 테마: $theme";

// 쿠키 삭제 (과거 시간으로 설정)
setcookie("theme", "", time() - 3600);
?>
💡 쿠키 주의사항
쿠키는 사용자가 직접 수정/삭제할 수 있으므로 민감한 데이터(비밀번호, 개인정보)는 절대 쿠키에 저장하면 안 됩니다. 또한 setcookie()는 반드시 echo나 HTML 출력 전에 호출해야 합니다.
🔒
여기까지는 미리보기입니다
세션과 쿠키 - 사용자 인증 기초
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)