본문 바로가기

PHP/PHP Programming

[PHP] 쿠키

반응형

01. 쿠키의 개요



 쿠키(Cooke)는 사용자가 웹 페이지에 접속하면, 서버에서 사용자(클라이언트)의 컴퓨터에 텍스트 파일 형태로 저장되는 작은 정보다. 주로 다음과 같은 목적으로 사용된다.


① 웹 사이트를 재방문하거나 사이트이 다른 페이지로 이동할 때, 다시 로그인할 필요 없이 사이트를 이용할 수 있게 한다.

② 웹 사이트 사용자의 이름이나 아이디를 기억한다.

③ 사용자가 어떻게 웹 페잊를 이용하는지 그 패턴을 분석한다.












02. 쿠키 생성



 함수를 사용해 쿠키를 생성하고, 생성 여부를 확인하는 방법을 살펴보자.


 cooke01.php

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>setcookie( ) 함수를 이용한 쿠키 생성</title>
</head>
<?
    $userID = setcookie("userID", "wicked_miso");
    $userName = setcookie("userName", "사악미소", time() + 60);

    if($userID and $userName) {

        echo "쿠키 'userID'와 'userName' 생성 완료!<br/>";
        echo "쿠키 'userName'은 60초(1분)간 지속됨!!";
    }
?>
</html>

 출력결과




① 쿠키 생성


2, 3행 setcooke( ) 함수를 이용해 사용자 컴퓨터의 특정 폴더에 쿠키 정볼르 저장한다. 2행에서는 첫 번째 인자인 userID에 두 번째 인자인 문자열 wicked_miso가 저장된다. 3행에서는 userName에 사악미소가 저장되고, 세 번째 인자가 time( ) + 60 이므로 이 쿠키 정보는 60초(1분)간 유효하다. 중요한 것은 이러한 쿠키 정보는 텍스트 파일 형태로 사용자 컴퓨터에 저장된다는 점이다.




② 쿠키 생성 확인


5 ~ 9행 setcookie( )가 성공적으로 실행되면 TRUE가 반환되고, if문의 조건식을 만족해 7, 8행의 echo문이 실행된다. 시스템에서 특별한 문제가 없다면 에러가 발생하지 않기 때문에 실행결과는 위와 같다.







03. 쿠키 사용 방법



생성된 쿠키르 사용하는 방법은 PHP 환경 설정 파일(php.ini)의 register_globals 파라미터 설정에 따라 두 가지로 나뉜다.


① register_globals=On : 배열 변수 $_COOKIE[]를 사용할 필요 없이, 쿠키의 이름을 변수명으로 사용한다.

② register_globals=Off : 배열 변수 $_COOKIE[]를 사용한다.




① register_globals가 On인 경우


php.ini에서 register_globals를 On으로 설정했다면 아래와 같이 쿠키의 이름을 그대로 변수명으로 사용한다.


 cookie02.php

01
02
03
04
05
06
07
08
09
10

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>register_globals=On인 경우에 쿠키 사용</title>
</head>
<?
    echo "쿠키 'userID' : {$userID}<br/>";
    echo "쿠키 'userName : {$userName}";
?>
</html>

 출력결과



2, 3행의 echo문으로 쿠키에 저장된 값을 출력한 결과는 위와 같다. 변수 $userID와 $userName에서 생성한 쿠키다. 반면 실행한 지 2분정도 지난 후에, 다시 실행하면 그 결과는 아래와 같다.



 위와 같은 결과가 출력된 이유는 3행에서 setcookie( )의 쿠키 변수 usernaem을 60초 동안 유효하도록 설정했기 때문이다. cookie01.php를 다시 실행하고 60초 이내에 다시 cookie02.php를 실행하면 $userName이 정상적으로 표시되는것을 볼 수 있다.





register_globals가 Off인 경우


 register_globals가 Off로 설정된 상태라면 POST 변수값 전달 방식에서 사용한 $_POST[변수명]과 유사하게 $_COOKIE[쿠키의 이름]을 사용해야 한다.


 cookie03.php

01
02
03
04
05
06
07
08
09
10
11
12
13

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>register_globals=Off인 경우에 쿠키 사용</title>
</head>
<?
    $userID = $_COOKIE[userID];
    $userName = $_COOKIE[userName];

    echo "쿠키 'userID' : {$userID}<br/>";
    echo "쿠키 'userName : {$userName}";
?>
</html>
 출력결과


2, 3행에서 전역 변수 $_COOKIE[userID]와 $_COOKIE[userName]을 사용하여 쿠키 값을 얻어온다.








04. 쿠키 삭제


 쿠키를 삭제하는 방법은 쿠키 생성과 마찬가지로 setcookie( ) 함수를 이용한다.


 delete_cookie.php

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>쿠키 삭제</title>
</head>
<?
    $a = setcookie("userID", "");
    $b = setcookie("userName", "");

    if($a and $b) {
        
        echo "쿠키 'userID'와 'userName' 삭제 완료!";
    }
?>
</html>
 delete_cookie.php 출력결과

 cookie03.php 출력결과


 2, 3행과 같이 setcookie( )의 쿠기값에 "", 즉 NULL값을 입력한느 방법으로 생성된 쿠키를 삭제한다. 삭제에 성공하면 if문의 조건식을 만족하므로 7행에서 삭제가 완료되었다는 메시지를 출력한다.


 쿠키가 삭제되었는지 확인하기 위해 다시 실행한 결과는 쿠키값이 출력되지 않았기 때문에 쿠키가 삭제되었음을 알 수 있다.



함수의 인자

설명

name

  쿠키의 이름으로, 대소문자를 구분한다.

value

  쿠키값으로, 이 값이 사용자 컴퓨터에 저장된다.

expire

  쿠키가 유효한 시간을 초 단위로 나타낸다.

  예를 들어, time( ) + 60 * 60 * 24 *30은

  30일 동안 쿠키의 값을 유지한다.

path

  쿠키를 이용할 수 있는 경로를 의미하고, 기본값은 현재 디렉터리다.
  만약 '/'로 설정하면 전체 도메인에서 쿠키를 이용할 수 있고,

  '/home'이라고 설정하면 [home] 디렉터리와 하위 디렉터리에서 쿠키를 사용할 수 있다.

domain

  쿠키를 이용할 수 있는 도메인을 의미한다. 만약 example.com으로 설정했다면

  example.com의 모든 하위 도메인에서 쿠키를 사용할 수 있다.

secure

  기본값은 FALSE이고, TRUE로 설정하면 사이트에 접속할 때만 쿠키가 설정된다.



반응형