PHP Sessions


PHP session 변수는 사용자 세션(session)에 대한 정보나 설정을 변경할 때 사용된다. Session 변수는 한 사용자에 대한 정보를 저장하고, 한 응용프로그램의 모든 페이지에서 사용할 수 있습니다.


PHP Session 변수

한 응용프로그램과 작업을 할 때, 당신은 열고, 몇몇 변경을 한 다음에 닫을 것입니다. 이는 세션에서도 마찬가지입니다. 컴퓨터는 당신이 누구인지 알고 있습니다. 그리고 당신이 언제 프로그램을 시작하고, 언제 끝냈는 지를 압니다. 하지만 인터넷에서는 한가지 문제가 있습니다.: HTTP 주소는 상태를 유지하지 않으므로, 웹 서버는 당신이 누구인지 모르고, 당신이 무엇을 하는 지 모릅니다. 

PHP 세션은 나중에 사용하기 위해서 서버에 사용자 정보(i.e. username, shopping items, etc)를 사용자가 저장하여 이 문제를 해결 합니다. 그러나 세션정보는 일시적이며, 사용자가 웹사이트를 떠나면 삭제된다. 영구적 저장을 할 필요가 있다면, 데이타베이스에 데이터로 저장할 수 있습니다. 

세션은 각 방문자에게 고유한 ID (UID)를 생성하고, 이 UID 를 기준으로 변수를 저장하여 작동합니다. UID 는 cookie 에 저장하거나, URL에 전달됩니다.

http://courses.cs.washington.edu/courses/cse154/14sp/lectures/slides/images/session.gif


Starting a PHP Session

PHP 세션에 사용자 정보를 저장하기 전에, 먼저 세션을 시작해야 합니다.

Note: session_start() 함수 <html> 태그 앞에 와야 합니다.:

<?php session_start(); ?>

<html>
<body>

</body>
</html>

위의 코드는 서버에 사용자 세션을 등록하여, 사용자 정보의 저장을 시작하게 해주고, 사용자 세션에 UID 를 할당합니다. 


Storing a Session Variable

세션 변수를 저장하고 검색하는 올바른 방법은 PHP $_SESSION 변수를 사용하는 것이다.:

<?php
session_start();
// store session data
$_SESSION['views']=1;
?>

<html>
<body>

<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>

</body>
</html>

Output:

Pageviews=1

아래의 예에서, 우리는 간단한 페이지-뷰(page-views) 카운터를 만듭니다. isset() 함수는 "views" 변수가 이미 설정되어 있는지 검사합니다. "views" 가 설정되어 있는 경우에는, 우리 카운터를 증가시킬 수 있습니다. "views" 가 존재하지 않는다면, "views" 변수를 생성하고, 1 로 설정합니다.:

<?php
session_start();

if(isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
?>


Destroying a Session

일부 세션 데이터를 삭제하고 싶다면, unset() 또는 session_destroy() 함수를 사용할 수 있습니다.

unset() 함수는 지정된 세션변수를 해제하는데 사용된다.:

<?php
session_start();
if(isset($_SESSION['views']))
  unset($_SESSION['views']);
?>

또한 session_destroy() 함수를 호출하여 세션을 완전히 제거할 수 도 있습니다.:

<?php
session_destroy();
?>

Note: session_destroy() 는 당신의 세션을 다시 설정하며, 모든 저장한 세션 데이타를 잃게 된다.