
PHP 강의
>PHP - 초급
📚 PHP 초급 - 8주차: 파일 입출력 및 쿠키/세션 - 03 세션(Session) 설정 및 사용
![]() |
평점 | 10.0 | 라이센스 | free |
---|---|---|---|---|
사용자평점 | 10.0 | 운영체제 | ||
다운로드 | 1 | 파일크기 | 0 | |
제작사 | LUZENSOFT | 등록일 | 2025-07-05 14:12:22 | |
조회수 | 5 |
📚 PHP 초급 - 8주차: 파일 입출력 및 쿠키/세션 - 03 세션(Session) 설정 및 사용
지난 시간 #쿠키에 이어, 이번 포스팅에서는 #PHP의 또 다른 중요한 #상태 관리 메커니즘인 #세션에 대해 자세히 알아보겠습니다. #세션은 #쿠키와 함께 #웹 애플리케이션에서 사용자 #정보를 유지하는 데 필수적인 요소입니다.
세션(Session)이란?
#세션은 #사용자 #정보를 #서버 측에 저장하고 관리하는 방법입니다. #쿠키가 #클라이언트(#브라우저)에 #데이터를 저장하는 반면, #세션은 #서버에 #데이터를 저장합니다. 각 사용자에게 고유한 #세션 #ID가 부여되며, 이 #세션 #ID는 일반적으로 #쿠키를 통해 #클라이언트에 전송됩니다. #클라이언트는 이 #세션 #ID를 사용하여 #서버에 저장된 자신의 #세션 #데이터에 접근합니다.
왜 세션이 필요할까요?
#보안성: 민감한 #데이터(예: 로그인 정보, 개인 식별 정보)는 #클라이언트 측에 저장되는 #쿠키보다 #서버 측에 저장되는 #세션이 훨씬 안전합니다.
#용량 제한 없음: #쿠키와 달리 #세션은 #서버의 #메모리나 #디스크 공간을 사용하므로, #클라이언트 #측 #용량 제한에 구애받지 않습니다.
#다양한 #데이터 타입: #세션은 #배열이나 #객체와 같은 복잡한 #데이터 #타입도 저장할 수 있습니다.
세션 시작하기: session_start()
함수
#PHP에서 #세션을 사용하려면 스크립트 시작 부분에서 session_start()
함수를 호출해야 합니다. 이 함수는 기존 #세션을 시작하거나, #세션이 없는 경우 새로운 #세션을 생성합니다. session_start()
역시 #HTTP #헤더를 보내기 때문에 #HTML 출력 이전에 호출되어야 합니다.
PHP
<?php
session_start(); // 세션 시작
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>세션 설정 예제</title>
</head>
<body>
<h1>세션 설정하기</h1>
<?php
// 세션 변수에 값 저장
$_SESSION["username"] = "Alice";
$_SESSION["user_id"] = 123;
$_SESSION["logged_in"] = true;
echo "<p>세션 변수가 설정되었습니다.</p>";
echo "<p><a href='read_session.php'>세션 값 확인하기</a></p>";
?>
</body>
</html>
session_start()
함수가 호출되면 #PHP는 자동으로 #세션 #ID를 생성하고, 이 #ID를 포함하는 #세션 #쿠키를 #클라이언트에게 전송합니다. 이후부터 #클라이언트는 이 #세션 #쿠키를 통해 #서버에 자신의 #세션 #데이터를 요청하게 됩니다.
세션 변수 사용하기: $_SESSION
전역 배열
#세션 #데이터는 $_SESSION
이라는 #전역 #연관 #배열을 통해 저장하고 접근합니다. #쿠키의 $_COOKIE
와 유사하게, 키-값 쌍 형태로 #데이터를 관리합니다.
PHP
<?php
session_start(); // 세션 시작 (세션 값을 읽기 위해서도 반드시 호출해야 함)
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>세션 읽기 예제</title>
</head>
<body>
<h1>세션 값 읽기</h1>
<?php
if (isset($_SESSION["username"])) {
$username = $_SESSION["username"];
echo "<p>사용자 이름: " . $username . "</p>";
} else {
echo "<p>username 세션 변수가 설정되어 있지 않습니다.</p>";
}
if (isset($_SESSION["user_id"])) {
$user_id = $_SESSION["user_id"];
echo "<p>사용자 ID: " . $user_id . "</p>";
} else {
echo "<p>user_id 세션 변수가 설정되어 있지 않습니다.</p>";
}
if (isset($_SESSION["logged_in"]) && $_SESSION["logged_in"] === true) {
echo "<p>로그인 상태입니다.</p>";
} else {
echo "<p>로그인 상태가 아닙니다.</p>";
}
echo "<p><a href='destroy_session.php'>세션 삭제하기</a></p>";
?>
</body>
</html>
$_SESSION
배열에 접근하기 전에도 항상 session_start()
를 호출해야 합니다.
세션 데이터 삭제하기
#세션 #데이터를 #삭제하는 방법은 크게 두 가지입니다.
1. 특정 세션 변수 삭제: unset()
함수
특정 #세션 #변수만 #삭제하고 싶을 때 unset()
함수를 사용합니다.
PHP
<?php
session_start(); // 세션 시작
if (isset($_SESSION["username"])) {
unset($_SESSION["username"]); // username 세션 변수 삭제
echo "<p>username 세션 변수가 삭제되었습니다.</p>";
} else {
echo "<p>username 세션 변수가 이미 삭제되었거나 존재하지 않습니다.</p>";
}
echo "<p><a href='read_session.php'>세션 값 다시 확인하기</a></p>";
?>
2. 모든 세션 데이터 및 세션 파괴: session_unset()
및 session_destroy()
함수
모든 #세션 #변수를 #삭제하고, #세션 자체를 완전히 파괴하려면 session_unset()
과 session_destroy()
함수를 사용합니다.
session_unset()
: 현재 #스크립트에서 등록된 모든 #세션 #변수를 #삭제합니다. (실제 #세션 #파일은 남아있을 수 있습니다.)session_destroy()
: #세션 #데이터가 저장된 #세션 #파일을 #삭제하고, #세션을 완전히 #파괴합니다. 일반적으로 #로그아웃 시 사용됩니다.
PHP
<?php
session_start(); // 세션 시작
// 모든 세션 변수 삭제
session_unset();
// 세션 파괴 (세션 파일 삭제)
session_destroy();
echo "<p>모든 세션 변수가 삭제되고 세션이 파괴되었습니다. <a href='set_session.php'>다시 세션 설정하기</a></p>";
?>
session_unset()
만으로는 #클라이언트의 #세션 #쿠키가 #삭제되지 않으므로, 완전히 새로운 #세션을 시작하려면 session_destroy()
까지 호출하는 것이 좋습니다.
세션 주의사항
#HTTP 헤더 전송:
session_start()
함수는 항상 #HTML 출력 이전에 호출되어야 합니다.#보안: #세션은 #서버에 저장되므로 #쿠키보다 안전하지만, #세션 #하이재킹과 같은 #보안 위협에 대비해야 합니다. #세션 #ID가 노출되지 않도록 #HTTPS를 사용하는 것이 좋습니다.
#세션 #만료: #세션은 #서버에 부담을 줄 수 있으므로, 일정 시간 동안 활동이 없으면 자동으로 #만료되도록 설정됩니다. 기본 #세션 #만료 시간은
php.ini
의session.gc_maxlifetime
설정으로 조정할 수 있습니다.
이번 포스팅에서는 #PHP #세션의 개념과 session_start()
, $_SESSION
, unset()
, session_unset()
, session_destroy()
함수를 이용한 #세션 #설정 및 #사용, 그리고 #삭제 방법에 대해 알아보았습니다. #세션은 #사용자 #상태를 안전하고 효율적으로 관리하는 데 필수적인 도구입니다.