
고급 PHP 프로그래밍 – 세션과 쿠키 관리 – 세션 개념과 활용
안녕하세요~ 😊
웹사이트를 만들다 보면, 로그인 정보나 장바구니처럼 사용자 정보를 한 번 저장해두고 페이지 간에 유지하고 싶을 때가 많죠?
이럴 때 필요한 것이 바로 오늘의 주제! **세션(Session)**입니다!
세션은 웹의 ‘기억상자’라고 할 수 있어요.
HTTP는 원래 상태를 기억하지 못하는(stateless) 성격인데, 세션을 활용하면 사용자 상태를 서버 측에서 유지할 수 있답니다.
자, 그럼 세션이 뭔지, 왜 중요한지부터 차근차근 알아볼까요?
세션이란 무엇인가요?
**세션(Session)**은 웹 서버가 사용자를 식별하기 위해 사용자별로 개별 저장공간을 만들어 정보를 저장하는 기술이에요.
- 로그인 상태 유지
- 장바구니 정보 저장
- 마지막 본 페이지 기억
- 임시 폼 입력값 유지 등
이런 작업들을 할 수 있게 해주는 게 바로 세션이랍니다!
세션을 왜 써야 하나요?
웹은 본질적으로 매 요청마다 서로 독립된 통신이에요.
즉, A 페이지에서 로그인해도 B 페이지에서는 로그인했는지 모르죠!
이를 해결하려면 사용자 정보를 서버에서 기억해야 하고, 이 역할을 세션이 해주는 거예요 😊
세션과 쿠키의 차이점은?
항목 | 세션(Session) | 쿠키(Cookie) |
---|---|---|
저장 위치 | 서버 | 클라이언트(브라우저) |
보안성 | 상대적으로 안전 | 보안 취약 (조작 가능) |
용량 제한 | 서버에 따라 다름 | 약 4KB |
유효 시간 | 설정 가능 (브라우저 종료 시 삭제 기본값) | 설정한 시간까지 유지 |
활용 예 | 로그인, 장바구니 | 자동 로그인, 방문기록 |
비유하자면
- 쿠키는 사용자가 메모장에 써서 들고 다니는 정보
- 세션은 관리자(서버)가 캐비닛에 넣어두고 관리하는 정보입니다! 😊
PHP에서 세션의 기본 사용법
✅ 1. 세션 시작: session_start()
모든 세션 코드는 이걸로 시작해야 해요. 항상 최상단에 위치!
<?php
session_start();
?>
⚠️ 이 코드는
HTML
보다 먼저, 가장 위에 있어야 에러가 나지 않아요!
✅ 2. 세션에 값 저장
$_SESSION["username"] = "hongildong";
$_SESSION["email"] = "hong@example.com";
→ 배열처럼 키-값 형태로 저장할 수 있어요.
✅ 3. 세션 값 사용
echo "안녕하세요, " . $_SESSION["username"] . "님!";
✅ 4. 세션 값 삭제
unset($_SESSION["username"]); // 특정 키 삭제
✅ 5. 세션 전체 제거
session_unset(); // 모든 세션 변수 초기화
session_destroy(); // 세션 자체를 파괴
→ 로그아웃 기능에 자주 사용됩니다.
예제: 로그인 상태 유지
// login.php
session_start();
$_SESSION["login_user"] = "홍길동";
echo "로그인 성공!";
// welcome.php
session_start();
if (isset($_SESSION["login_user"])) {
echo "어서오세요, " . $_SESSION["login_user"] . "님!";
} else {
echo "로그인이 필요합니다.";
}
세션 ID란?
세션은 사용자를 구분하기 위해 세션 ID(Session ID) 라는 고유 값을 생성합니다.
echo session_id();
→ 이 값은 브라우저의 쿠키에 자동 저장되며, 사용자가 서버에 요청할 때 같이 전송돼요.
세션 저장 위치
기본적으로 PHP는 세션 데이터를 서버의 임시 폴더(/tmp
)에 저장해요.
파일 기반 외에도 데이터베이스, 메모리(Redis) 등 다양한 방법으로 저장 방식 설정 가능!
// 저장 위치 확인
echo session_save_path();
세션 유지 시간 설정
세션은 기본적으로 브라우저 종료 시 사라지지만, 서버에 저장된 세션 파일은 일정 시간 후 자동 삭제됩니다.
✅ php.ini
에서 설정
session.gc_maxlifetime = 1440 // 24분
✅ 코드로 설정
ini_set("session.gc_maxlifetime", 3600); // 1시간
또는 세션 시작 전에 쿠키 유지시간도 설정할 수 있어요:
session_set_cookie_params(3600); // 1시간 유지
session_start();
세션의 장점과 단점
🌟 장점
- 클라이언트에 정보가 노출되지 않아 보안성 좋음
- 많은 양의 정보 저장 가능
- 서버에서만 관리하므로 수정 어려움 (위조 방지)
⚠️ 단점
- 서버 리소스 사용 (많은 사용자가 몰리면 부담)
- 사용자마다 고유 세션 유지 → 서버 관리 필요
- 브라우저가 쿠키를 막으면 세션도 못 씀 (세션ID 전달이 쿠키 기반이기 때문)
세션 유지 꿀팁 🧠
- 항상
session_start()
는 맨 위에! - 로그인 상태 확인 시
isset($_SESSION["id"])
로 검사! - 중요한 정보는 반드시 세션에 저장하고, 쿠키엔 저장하지 마세요
- 너무 큰 데이터나 파일을 세션에 저장하지 말기 (메모리 낭비)
마무리 요약 📝
기능 | 코드 예시 |
---|---|
세션 시작 | session_start(); |
값 저장 | $_SESSION["key"] = "value"; |
값 사용 | echo $_SESSION["key"]; |
값 삭제 | unset($_SESSION["key"]); |
전체 제거 | session_unset(); session_destroy(); |
세션 ID 확인 | session_id(); |
마무리하며 😊
세션은 웹 개발의 기본 중 기본!
하지만 이 기본기를 확실히 익혀두면 나중에 로그인 기능, 장바구니, 권한 관리 등 복잡한 기능을 구현할 때 정말 큰 도움이 됩니다.
웹은 원래 기억력이 없는 친구예요.
하지만 세션이라는 기억상자를 통해 웹에게 “이 사용자는 누구야!” 라고 알려줄 수 있는 멋진 기능이랍니다. 😄
다음 시간에는 쿠키(Cookie)의 개념과 활용에 대해 배워볼게요!
오늘도 단단한 기초 쌓느라 수고 많으셨습니다~! 💪🍪🧠