한나씨의 딴짓거리
by ILLIFE
<PHP> 세션과 쿠키

현재 우리가 인터넷에서 사용하고 있는 HTTP 프로토콜은 상태를 유지하는 기능을 갖고 있지 못하므로 각각의 요청은 서로와 관련성을 갖지 못한다. 그러므로 새로운 페이지를 요청할 때마다 새로운 접속이 이루어지며 이전페이지와 현재페이지의 관계가 지속되지 않는다.

따라서 이에 따라HTTP 프로토콜을 이용하게 되는 웹사이트에서는 웹 페이지에 특정 방문자가 머무르는 동안에 그 방문자가 가지고 있어야 하는 데이터를 묶어 지속시키는 방법이 필요한데 바로 세션과 쿠키의 관리로 가능케 할 수 있다.

 

 

세션이란?

 

특정 웹 사이트에서 사용자가 머무르는 기간 또는 한명의 사용자의 한번의 방문을 의미한다. 세션 관리를 하면 사용자의 로그인을 쉽게 지원할 수 있고 개인에게 허용되는 수준과 개인의 선호도에 따른 내용을 보여줄 수 있다. 웹 사이트에서 사용자의 여러 행동을 추적하는 것도 가능하고 장바구니 기능도 구현할 수 있다.

 

 

쿠키란?

 

쿠키는 사용자 정보를 유지할 수 없다는 HTTP 고유의 한계를 극복할 수 있는 방법으로 인터넷 웹사이트의 방문기록을 남겨 사용자와 웹사이트 사이를 매개해주는 정보이다.

이러한 쿠키는 인터넷 사용자가 특정 홈페이지를 접속할 때 생성되는 개인 ID와 비밀번호, 방문한 사이트의 정보를 담은 임시파일로써, 사용자의 하드디스크에 텍스트 파일로 저장되어 다음에 해당사이트를 찾을 경우 웹 서버에서는 그가 누구인지 어떤 정보를 주로 찾았는지 등을 파악할 수 있다.

(용량제한 : 한 도메인 당 20개씩 총 300개, 파일 하나 당 용량은 4KB)

 

 

세션과 쿠키의 차이점

 

세션과 쿠키와의 차이점은 쿠키는 방문자가 해당 사이트에 접속했을 때 방문자의 컴퓨터에 모든 사용자데이터를 저장하지만, 세션의 경우는 사용자데이터는 서버에 저장하고 사용자 시스템에는 이 데이터에 접근 할 수 있는 식별자만 저장한다.

이러한 점에서 세션이 쿠키보다 보안성이 좋다고 할 수 있다.

또한 쿠키의 경우에는 서버의 자원을 전혀 사용하지 않지만, 세션의 경우 서버에 저장이 되기 때문에 서버의 자원을 필수적으로 사용하게 된다. 또한, 쿠키의 경우 저장 시 쿠키가 만료가 되는 시점을 설정 해줄 수 있다.

 

PHP에서의 세션구현 방법

세션을 사용하는 기본적인 단계

세션시작 -> 세션변수 등록 -> 세션변수 사용 -> 변수의 등록을 해제하고 세션종료

세션 시작

- 세션을 시작하는 방법으로 session_start() 함수를 호출하는 방법이 있다.

- 이 함수는 접속에 대해 현재 이미 존재하고 있는 세션 ID가 있는지 부터 확인하여 없다면 새로 하나를 만들어 $_SESSION 배열에 접근할 수 있게 한다. 존재하고 있는 세션 ID가 있다면 session_start()는 원래 있던 세션 변수들을 다시 로딩하여 사용할 수 있게 한다. Session_start()는 세션을 사용하는 스크립트 시작부분에서 호출 하는게 좋음

 

세션변수 등록하기

- 세션변수를 등록하는 방법은 아래 예제와 같다.

$_SESSION[‘val_user’] = $userid;

$userid에 등록되어 있는 값이면 이어지는 페이지들에서 이 세션값을 넘겨받아

회원서비스를 가능하게 한다.

 

세션변수 사용하기

- 세션변수를 위와 같이 등록하였다면 회원전용 페이지에서 아래와 같이 사용 가능하다.

- Session start();

If (isset($_SESSION[‘val_user’])){               //isset 함수로 세션변수를 체크

Echo “회원이시네요. 회원전용 서비스를 사용하세요.”

}

Else{

  “회원전용 서비스입니다. 로그인 하거나 가입하세요”;

}

 

변수의 등록을 해제하고 세션 종료

- 세션변수의 사용을 마쳤다면 이 변수의 등록을 해제 시킬 수 있다.

Unset($_SESSION[‘val_user’]);

  -세션을 완전히 종료하려면 위와 같이 세션 변수의 등록을 해제시키고 아래와 같이 세션 ID까지 지워준다.

    Session_destroy();

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by ILLIFE | 2006/12/13 11:45 | study-life | 트랙백 | 덧글(1)
트랙백 주소 : http://hanna4861.egloos.com/tb/674368
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 리눅서 at 2006/12/13 11:46
저도 네크워크 공부를 어느정도 진행하고 나면 한번 웹 언어 관련 공부를 해보구 싶네요;..

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >


카테고리
이전블로그
이글루링크
최근 등록된 덧글
overriding이랑랑 차이..
by ILLIFE at 12/19
저도 네크워크 공부를 ..
by 리눅서 at 12/13
블로그 개설 ㅊㅋㅊㅋ 종..
by 배고픈듯 at 11/27
rss

skin by 소로진