Web-Programming/PHP4, 5
[ 쿠키 / 세선 / 웹 프로그래밍 ] cookie 와 session 의 차이점
[ 쿠키 / 세선 / 웹 프로그래밍 ] 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)
- 매개변수
- name - 쿠키 이름, 이름을 만들때에는 공백이나 마침표는 안되며, 대소문자를 구분함
- value - 쿠키 값
- expire - 쿠키 만료시간, 쿠키 사용이 끝나는 시간을 초단위로 설정, 1일후 만료 할경우: time()+86400
- path - 지정된 경로에 있을때에만 유효한 쿠키로 사용, /로 설정하면 사이트 전체에 쿠키가 노출됨
- domain - 지정된 도메인에 있을때에만 유효한 쿠키로 사용
- secure - 값이 1인 경우 HTTPS 접속을 통해서만 전송되어야 함
예) 쿠키명 'Name', '홍길동'이란 이름으로 하루동안 사용가능하도록 쿠키 설정하기
setcookie('Name', '홍길동', time()+(60*60*24));
setcookie('Name', '홍길동', time()+(60*60*24));
3. 쿠키사용방법
PHP에서 쿠키에 접근하려면 $_COOKIE 슈퍼글로벌 변수를 이용하면 된다.
쿠키가 존재하는 경우 $_COOKIE 변수에 배열형태로 값이 넘어오기 때문에 쿠키명으로 접근하면 된다.
예) 쿠키로 저장된 '홍길동' 값 출력하기
echo $_COOKIE['Name'];
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');
setcookie('Name');
두번째, 지난 만료시간으로 삭제하려는 쿠키명으로 재설정하기
예) 쿠키명 'Name'인 경우 삭제방법 #2
setcookie('Name', time()-3600);
setcookie('Name', time()-3600);
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';
$_SESSION['user_id'] = 'guest';
일반 배열을 이용하듯이 세션이름을 키값으로 하여 값을 배열변수에 저장만 하면 끝이다.
4. 세션변수 사용하기
session_start() 함수로 세션 시작후에 이용이 가능하며, 저장하였던 $_SESSION 슈퍼글로벌 변수를 그대로 이용하면 된다.
예) 'user_id' 세션의 값을 출력하기
echo $_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();
세션변수뿐만 아니라 서버에 저장된 데이터까지 제거하는 경우 사용한다.
세션변수뿐만 아니라 서버에 저장된 데이터까지 제거하는 경우 사용한다.
쿠키와 세션의 차이
- 쿠키는 데이터를 사용자컴퓨터에 저장하고, 세션은 서버에 저장한다.
- 쿠키는 4KB이내의 데이터를 저장하고, 세션은 더 많은 양을 저장한다.
- 쿠키에 비하여 세션이 데이터가 좀더 안전하게 보관된다.
'Web-Programming > PHP4, 5' 카테고리의 다른 글
[ PHP / 4 / 5 / 자료형 비교표 ] gettype(), empty(), is_null(), isset(), boolean:if() (0) | 2011.12.22 |
---|---|
[php / 웹 프로그래밍 / 최적화 ] PHP 코드를 최적화하는 40가지 팁 (0) | 2011.11.18 |
[ php / 웹 프로그래밍 ] Header의 사용법, 용도 (0) | 2011.09.19 |
난수 : 시리얼, 시디키 만들기 (0) | 2011.08.27 |
[ SQL / 인젝션 공격 대비 / mysql_real_escape_string ] (1) | 2011.07.05 |
FOREACH POST - POST로 받은 값을 쉽게 받아보자! (0) | 2010.05.11 |
UpSide : WordPress Theme - php, css, js 템플릿 (0) | 2010.05.05 |
디렉토리 복사 PHP 함수 (0) | 2010.04.16 |
Cannot redeclare 에러 (0) | 2010.04.05 |
PHP 정규식 (0) | 2010.04.03 |
댓글