루젠소프트 로고

216.73.216.41 TODAY : 1,412

PHP 강의

 > 

PHP - 초급

📚 PHP 초급 - 8주차: 파일 입출력 및 쿠키/세션 - 03 세션(Session) 설정 및 사용

📚 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)이란?


uploadImage


#세션은 #사용자 #정보를 #서버 측에 저장하고 관리하는 방법입니다. #쿠키가 #클라이언트(#브라우저)에 #데이터를 저장하는 반면, #세션은 #서버에 #데이터를 저장합니다. 각 사용자에게 고유한 #세션 #ID가 부여되며, 이 #세션 #ID는 일반적으로 #쿠키를 통해 #클라이언트에 전송됩니다. #클라이언트는 이 #세션 #ID를 사용하여 #서버에 저장된 자신의 #세션 #데이터에 접근합니다.




왜 세션이 필요할까요?




  • #보안성: 민감한 #데이터(예: 로그인 정보, 개인 식별 정보)는 #클라이언트 측에 저장되는 #쿠키보다 #서버 측에 저장되는 #세션이 훨씬 안전합니다.

  • #용량 제한 없음: #쿠키와 달리 #세션은 #서버의 #메모리나 #디스크 공간을 사용하므로, #클라이언트 #측 #용량 제한에 구애받지 않습니다.

  • #다양한 #데이터 타입: #세션은 #배열이나 #객체와 같은 복잡한 #데이터 #타입도 저장할 수 있습니다.







세션 시작하기: session_start() 함수

uploadImage



#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 전역 배열


uploadImage


#세션 #데이터는 $_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()를 호출해야 합니다.







세션 데이터 삭제하기

uploadImage



#세션 #데이터를 #삭제하는 방법은 크게 두 가지입니다.




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.inisession.gc_maxlifetime 설정으로 조정할 수 있습니다.






이번 포스팅에서는 #PHP #세션의 개념과 session_start(), $_SESSION, unset(), session_unset(), session_destroy() 함수를 이용한 #세션 #설정 및 #사용, 그리고 #삭제 방법에 대해 알아보았습니다. #세션은 #사용자 #상태를 안전하고 효율적으로 관리하는 데 필수적인 도구입니다.