LEVEL 35 QUEST
세션과 쿠키 - 사용자 인증 기초
세션과 쿠키 - 사용자 인증 기초 — DevFoil 바이브코딩 Stage 8, Lv.35
왜 세션과 쿠키가 필요한가?
HTTP의 비상태성(Stateless) 문제
HTTP 프로토콜은 비상태(stateless)입니다. 매 요청이 독립적이라, 서버는 "이전에 요청한 사람"을 기억하지 못합니다.
그래서 로그인 후 다른 페이지로 이동하면 서버는 "이 사람이 로그인했는지" 알 수 없습니다.
이 문제를 해결하기 위해 쿠키(Cookie)와 세션(Session)이 존재합니다.
이 문제를 해결하기 위해 쿠키(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)무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.