Web-Programming/PHP4, 5

[ 쿠키 / 세선 / 웹 프로그래밍 ] cookie 와 session 의 차이점

yehza 2011. 9. 29.





[ 쿠키 / 세선 / 웹 프로그래밍 ] cookie 와 session 의 차이점

1. 쿠키란? 


쿠키 [ cookies ]


쿠키(Cookie)는 웹사이트와 사용자의 컴퓨터를 매개해주는 정보를 담고 있는 소량(4kB이하)의 파일을 말한다.

출처: 네이버 지식사전 - 전체내용 보기



2. 쿠키 저장방법

쿠키를 생성할 때에는 setcookie() 함수를 이용하여, 사용자의 컴퓨터에 쿠키가 저장한다.

bool setcookie ( string $name [, string $value [, int #expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )


  • 쿠키를 전송 (PHP 4, PHP 5)
  • 매개변수
    1. name - 쿠키 이름, 이름을 만들때에는 공백이나 마침표는 안되며, 대소문자를 구분함
    2. value - 쿠키 값
    3. expire - 쿠키 만료시간, 쿠키 사용이 끝나는 시간을 초단위로 설정, 1일후 만료 할경우: time()+86400
    4. path - 지정된 경로에 있을때에만 유효한 쿠키로 사용, /로 설정하면 사이트 전체에 쿠키가 노출됨
    5. domain - 지정된 도메인에 있을때에만 유효한 쿠키로 사용
    6. secure - 값이 1인 경우 HTTPS 접속을 통해서만 전송되어야 함

예) 쿠키명 'Name', '홍길동'이란 이름으로 하루동안 사용가능하도록 쿠키 설정하기
setcookie('Name', '홍길동', time()+(60*60*24));


3. 쿠키사용방법

PHP에서 쿠키에 접근하려면 $_COOKIE 슈퍼글로벌 변수를 이용하면 된다.
쿠키가 존재하는 경우 $_COOKIE 변수에 배열형태로 값이 넘어오기 때문에 쿠키명으로 접근하면 된다.

예) 쿠키로 저장된 '홍길동' 값 출력하기
echo $_COOKIE['Name'];


4. 쿠키 매개변수 설정하기

  • 쿠키 설정시 총 7개의 매개변수를 받지만, 이름(name)과 값(value)만 넘겨주어도 동작한다.
  • 만료시간(expiration)은 타임스탬프 값(1970.1.1 자정 시작)으로 끝나는 시간을 지정한다. 보통 현재 시간값인 time()과 경과한 초단위 시간을 더한다.
  • 만료시간을 생략하는 경우 브라우저를 닫을때까지 쿠키가 존재하게 된다.
  • path는 지정된 경로상에 있는경우에만 유효한 쿠키로 사용하도록 제한한다.
  • 값이 '/'로 설정하면 전체 사이트에서 이용이 가능하며, '/user/' 로 설정하면 /user 경로에 있을때만 설정한 쿠키를 사용할 수 있다.
  • host는 서브도메인이 존재하는 경우 지정된 도메인으로 제한한다.
  • '.abc.com'으로 설정하면 .abc.com의 도메인에서는 모두 사용가능하며, '1.abc.com'으로 설정하면 1.abc.com 도메인 내에서만 설정한 쿠키를 사용할 수 있다.
  • httponly는 http/https를 통해서만 접근할 수 있는지를 지정하는데 사용되나 모든 브라우저가 지원하지는 않는다.

5. 쿠키 삭제하기

쿠키 삭제는 만료시간 생략시 브라우저가 닫히거나, 만료시간이 지나면 자동으로 삭제가 된다. 하지만 수동으로 쿠키를 삭제하려면 두가지 방법이 있다.

첫번째, 값 없이 삭제하려는 쿠키명으로 재설정하기
예) 쿠키명 'Name'인 경우 삭제방법 #1
setcookie('Name');


두번째, 지난 만료시간으로 삭제하려는 쿠키명으로 재설정하기
예) 쿠키명 'Name'인 경우 삭제방법 #2
setcookie('Name', time()-3600);


Session(세션) 이미지




1.  세션이란?

세션 [ session ]


데이터를 서버상에 저장하는 방법을 이야기한다.



2. 세션 시작하기

세션은 이용하기전에 session_start() 함수를 호출해 주어야 하며, 호출이전에 어떤 내용도 브라우저로 출력되서는 안된다.

bool session_start ( void )


  • 세션데이터를 초기화 (PHP 4, PHP 5)
  • 세션이 시작되며, 성공시 true, 실패시 false를 반환
  • 함수 처음 호출시 'PHPSESSID'의 쿠키이름으로 쿠키가 전송


3. 세션변수 생성하기

session_start() 함수로 세션 시작후에는 슈퍼글로벌 변수인 $_SESSION 에 배열형태로 생성이 가능하다.

예) 세션명 'user_id', 세션값 'guest'을 갖는 세션 생성하기
$_SESSION['user_id'] = 'guest';

일반 배열을 이용하듯이 세션이름을 키값으로 하여 값을 배열변수에 저장만 하면 끝이다.



4. 세션변수 사용하기

session_start() 함수로 세션 시작후에 이용이 가능하며, 저장하였던 $_SESSION 슈퍼글로벌 변수를 그대로 이용하면 된다.

예) 'user_id' 세션의 값을 출력하기
echo $_SESSION['user_id'];


5. 세션변수 삭제하기

세션 삭제시에도 session_start() 함수가 실행되어야 하며, 세션변수를 삭제하는 방법은 크게 3가지가 있다.


첫번째, 특정 세션변수만 삭제

unset( $_SESSION['세션변수명'] );

unset() 함수는 일반 변수를 삭제할 때에도 사용된다.
링크: unset() 함수


두번째, 전체 세션변수 삭제

$_SESSION = array();
여러개의 세션변수들은 배열형태이기 때문에 빈배열로 세션변수 전체를 초기화 시킴으로서 삭제한다.


세번째, 서버에 저장된 모든 세션 데이터 삭제

bool session_destroy ( void )


  • 세션에 등록되는 모든 데이터를 파괴 (PHP 4, PHP 5)
  • 파괴 성공시 true, 실패시 false를 반환
  • 세션을 파괴하는 경우 session_start() 함수가 호출되어야 함

session_destroy();
세션변수뿐만 아니라 서버에 저장된 데이터까지 제거하는 경우 사용한다.


쿠키와 세션의 차이 이미지




쿠키와 세션의 차이

  1. 쿠키는 데이터를 사용자컴퓨터에 저장하고, 세션은 서버에 저장한다.
  2. 쿠키는 4KB이내의 데이터를 저장하고, 세션은 더 많은 양을 저장한다.
  3. 쿠키에 비하여 세션이 데이터가 좀더 안전하게 보관된다. 




댓글

추천 글