..

Search

51) 세션

세션


세션(session)이란?

세션(session)이란 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미합니다.

사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 합니다.

 

앞서 살펴본 쿠키는 클라이언트 측의 컴퓨터에 모든 데이터를 저장합니다.

하지만 세션은 서비스가 돌아가는 서버 측에 데이터를 저장하고, 세션의 키값만을 클라이언트 측에 남겨둡니다.

브라우저는 필요할 때마다 이 키값을 이용하여 서버에 저장된 데이터를 사용하게 됩니다.

 

이러한 세션은 보안에 취약한 쿠키를 보완해주는 역할을 하고 있습니다.


세션 시작

PHP에서는 session_start() 함수를 이용하여 새로운 세션을 시작하거나, 기존의 세션을 다시 시작할 수 있습니다.

 

session_start() 함수는 세션 아이디가 이미 존재하는지를 확인하고, 존재하지 않으면 새로운 아이디를 만듭니다.

만약 이미 존재하는 세션 아이디가 있을 때는 원래 있던 세션 변수를 다시 불러와서 사용할 수 있도록 합니다.

 

세션 아이디는 웹 서버에 의해 무작위로 만들어진 숫자입니다.

이 세션 아이디는 세션이 유지되는 동안 클라이언트 측에 저장되며, 세션 변수를 등록하는 키로 사용됩니다.

웹 서버에서는 클라이언트로부터 받아온 세션 아이디를 가지고, 해당 아이디에 대응되는 세션 변수에 접근할 수 있습니다.

 

쿠키와 마찬가지로 세션도 어떤 헤더보다도 먼저 생성해야만 합니다.

예제

session_start();

 

세션의 지속 시간은 쿠키와 달리 php.ini 파일에 설정되어 있으므로, 따로 명시해주지 않아도 됩니다.


세션 변수의 등록

세션이 생성되고 나면 세션 변수를 수퍼 글로벌인 $_SESSION 배열에 등록할 수 있습니다.

이때 세션 변수의 이름이 키값이 되며, 이 내용은 서버 측에 저장됩니다.

등록된 세션 변수는 등록을 해지하지 않는 한 세션이 끝날 때까지 유지됩니다.

예제

$_SESSION["city"] = "부산"; // 세션 변수의 등록

$_SESSION["gu"] = "해운대구";

 

echo "세션 변수가 등록되었습니다!";

코딩연습 ▶


세션 변수에 접근하기

생성된 세션 변수는 $_SESSION["세션변수이름"]으로 접근할 수 있습니다.

예제

echo "제가 살고 있는 도시는 {$_SESSION['city']}입니다.<br>";

echo "그 중에서도 {$_SESSION['gu']}에 살고 있습니다.<br>";

 

print_r($_SESSION); // 모든 세션 변수의 정보를 연관 배열 형태로 보여줌.

코딩연습 ▶

 

print_r() 함수는 인수로 전달받은 변수의 정보를 사람이 읽기 편한 형태로 표시해주는 함수입니다.

세션 변수의 등록 해지

세션 변수의 사용이 모두 끝나면, 세션 변수의 등록을 해지할 수 있습니다.

 

unset() 함수를 사용하면, 특정 이름의 세션 변수만을 해지할 수 있습니다.

현재 등록된 모든 세션 변수를 해지하고자 할 때에는 session_unset() 함수를 사용하면 됩니다.

 

또한, 세션을 자체를 완전히 종료하려면 session_destroy() 함수를 사용하여 세션 아이디를 삭제하면 됩니다.

예제

// 특정 세션 변수의 등록 해지

/* if(!isset($_SESSION["city"])) {

    echo "{$_SESSION['city']} 세션 변수가 삭제되었습니다.";

    unset($_SESSION["city"]);

} else {

    echo "해당 세션 변수가 등록되어 있지 않습니다.";

} */

 

session_unset();   // 모든 세션 변수의 등록 해지

session_destroy(); // 세션 아이디의 삭제

 

echo "모든 세션 변수가 등록 해지되었으며, 세션 아이디도 삭제되었습니다.";

코딩연습 ▶

 

위의 예제처럼 세션 변수도 isset() 함수를 사용하여, 그 값이 설정되어 있는지를 검사할 수 있습니다.


연습문제