고급 PHP 프로그래밍 – 세션과 쿠키 관리 – 0 – 세션 개념과 활용

고급 PHP 프로그래밍 - 세션과 쿠키 관리 - 0 - 세션 개념과 활용
고급 PHP 프로그래밍 – 세션과 쿠키 관리 – 0 – 세션 개념과 활용

고급 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)의 개념과 활용에 대해 배워볼게요!
오늘도 단단한 기초 쌓느라 수고 많으셨습니다~! 💪🍪🧠

답글 남기기