PHP Session and Cookies


8. 세션 및 쿠키 (Sessions and Cookies)

세션 관리 (Managing Sessions)

세션은 서버에 사용자 정보를 저장하여 여러 페이지에 걸쳐 지속적인 사용자 상태를 관리할 수 있습니다. 각 사용자는 고유의 세션 ID를 통해 식별됩니다.

세션 시작

세션을 시작하려면 session_start()를 호출해야 합니다. 이 함수는 세션을 시작하거나 기존 세션을 재개합니다.

<?php
session_start(); // 세션 시작

$_SESSION["username"] = "JohnDoe";
echo "Session username is " . $_SESSION["username"];
?>
세션 변수 설정 및 사용

세션 변수는 $_SESSION 슈퍼 글로벌 배열을 통해 설정하고 접근할 수 있습니다.

<?php
session_start();

$_SESSION["username"] = "JohnDoe";
$_SESSION["email"] = "john@example.com";

echo "Username: " . $_SESSION["username"];
echo "Email: " . $_SESSION["email"];
?>
세션 변수 제거

세션 변수는 unset() 함수를 사용하여 제거할 수 있습니다.

<?php
session_start();

unset($_SESSION["username"]);
?>
세션 종료

세션을 완전히 종료하려면 모든 세션 변수를 제거하고 세션을 파기해야 합니다.

<?php
session_start();

// 모든 세션 변수 제거
$_SESSION = array();

// 세션 쿠키 제거
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}

// 세션 파기
session_destroy();
?>

쿠키 설정 및 사용 (Setting and Using Cookies)

쿠키는 클라이언트 측에 저장되는 작은 데이터 파일입니다. 쿠키는 주로 사용자를 식별하고 상태를 유지하는 데 사용됩니다.

쿠키 설정

setcookie() 함수를 사용하여 쿠키를 설정합니다. 이 함수는 HTTP 헤더를 통해 쿠키를 전송합니다.

<?php
$cookie_name = "user";
$cookie_value = "JohnDoe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 30일 동안 유효
?>
쿠키 접근

쿠키는 $_COOKIE 슈퍼 글로벌 배열을 통해 접근할 수 있습니다.

<?php
if(isset($_COOKIE["user"])) {
    echo "User is " . $_COOKIE["user"];
} else {
    echo "User is not set";
}
?>
쿠키 제거

쿠키를 제거하려면 만료 시간을 과거로 설정하면 됩니다.

<?php
setcookie("user", "", time() - 3600, "/");
?>

세션과 쿠키의 차이점 (Differences Between Sessions and Cookies)

  • 저장 위치: 세션 데이터는 서버에 저장되며, 쿠키 데이터는 클라이언트(브라우저)에 저장됩니다.
  • 보안: 세션은 서버 측에 저장되므로 더 안전합니다. 쿠키는 클라이언트 측에 저장되므로 변조될 위험이 있습니다.
  • 수명: 세션은 사용자가 브라우저를 닫거나 세션을 명시적으로 종료할 때까지 지속됩니다. 쿠키는 설정된 만료 시간까지 지속됩니다.
  • 데이터 크기: 세션은 서버 측에 저장되므로 데이터 크기에 제한이 거의 없습니다. 쿠키는 클라이언트 측에 저장되며, 보통 4KB 이하로 제한됩니다.
  • 속도: 세션은 서버에 요청할 때마다 데이터를 불러오기 때문에 약간 느릴 수 있습니다. 쿠키는 클라이언트 측에 저장되므로 접근 속도가 더 빠릅니다.

이 외에도 세션과 쿠키를 조합하여 사용자 상태를 관리하거나, 특정 상황에 맞게 각각을 활용할 수 있습니다.


Leave a Reply

Your email address will not be published. Required fields are marked *