R's Hacking Daily Log

php Cookie 본문

PHP

php Cookie

hanhxx 2023. 7. 22. 13:17

Step :: Cookie 

Session에 연이어 Cookie에 대해 살펴보도록 하자. 여기서도 역시 개념적인 내용은 생략할 예정!

Cookie를 사용하기 위해 Cookie 생성은 어떻게 할 수 있는 지부터 알아보자.

 

<?php
setcookie('myCookie', 'Ryu', time() + 3600);
echo $_COOKIE['myCookie'];
echo "<br/>";

Cookie를 생성하기 위해서는 setcookie 함수를 사용할 수 있다.

setcookie 함수에 인수로 들어가는 값들은 [쿠키 이름, 쿠키 값, 지속 시간, 경로, 도메인, 보안, httponly]이다.

 

각각의 값이 의미하는 바는 다른 글을 참고하길 바란다. 

 

다시 돌아와서, 위의 코드에서는 쿠키 이름, 쿠키 값, 지속 시간만 설정해서 쿠키를 만들었다. 

그 결과로 myCookie라는 이름의 쿠키는 Ryu를 값으로 가지게 된다. 

 

지속 시간 같은 경우, 현재 시간을 기점으로 얼마 동안 이 쿠키를 가지고 있을 것인지를 나타내는 데

time()으로 현재 시간을 구하고 지속시킬 시간을 초 단위로 입력한다.

 

cookie 값을 참조하기 위해서 session과 동일하게 글로벌 변수 $_COOKIE에 접근한다. 

결과를 확인해 보면 

 

myCookie 값인 Ryu가 출력되는 걸 확인할 수 있다.

 


그렇다면 Cookie를 수정하기 위해서는 어떻게 해야 할까?

 

<?php
setcookie('myCookie', 'Ryu', time() + 3600);
echo $_COOKIE['myCookie'];
echo "<br/>";

$_COOKIE['myCookie'] = 'Kim';
echo $_COOKIE['myCookie'];

위에서 작성한 코드에 이어 글로벌 변수 $_COOKIE를 통해 myCookie 값을 Kim을 수정했다. 

setcookit 함수로 myCookie를 생성했을 때와 쿠키 값이 달라졌을지 확인해 보면 

 

성공적으로 값을 수정된 걸 볼 수 있다.

 

setcookie를 통해 쿠키를 생성했다면 이후에는 $_COOKIE[COOKIE_NAME] = VALUE 형태로

쿠키 값을 수정할 수 있다. 

 


마지막으로 쿠키를 삭제하는 방법에 대해 살펴보자.

 

<?php
setcookie('myCookie', 'Ryu', time() + 3600);
echo $_COOKIE['myCookie'];
echo "<br/>";

$_COOKIE['myCookie'] = 'Kim';
echo $_COOKIE['myCookie'];

unset($_COOKIE['myCookie']);
echo $_COOKIE['myCookie'];

쿠키를 삭제하기 위해서는 setcookie 함수 & unset 함수를 사용할 수 있다. 

 

위의 코드에서는 unset 함수를 사용했다. 

unset 함수에 삭제하고자 하는 쿠키 이름을 $_COOKIE[COOKIE_NAME] 형태로 전달해 주면 된다.

 

 

setcookie 함수를 통해 쿠키를 삭제하고자 할 때는 지속 시간 값에 현재 시점보다 이전 시점을 설정하면 된다.

setcookie('myCookie','',time()-1);

time() 값에 마이너스를 하면 현재 시점보다 이전 시점의 값이 되므로 해당 쿠키는 소멸되는 것!

 

이때 마이너스 값이 얼마가 되는지는 별로 중요하지 않다.

-1이든 - 100이든 현재 시점보다 이전 시점이기만 하면 된다. 

 

 

코드의 결과를 확인해 보면

unset 함수로 myCookie를 삭제한 후 echo로 출력한 부분이 에러가 난다.

myCookie를 삭제했기 때문에 해당 값을 참조할 수 없어 에러가 발생하는 것이다.

이를 통해 myCookie가 제대로 삭제되었다는 걸 알 수 있다. 

 


[create_cookie.php]

<?php
$cookie_value = 'Ryu';
$cookie_name = 'myCookie';

setcookie($cookie_name, $cookie_value, time() + 86400*30)
?>

<html>
    <head>
        <title>Create Cookie</title>
    </head>
    <body>
        <h1>Cookie Example</h1>
        ~쿠키 만들기~
        쿠기 값은 <a href="./result_cookie.php">여기에서 확인</a>!!
    </body>
</html>

setcookie 함수를 통해 쿠키를 생성해 준다.

생성한 쿠키 값을 확인하기 위해 링크가 걸린 "여기에서 확인" 문구를 클릭해 준다.

 

 

[result_cookie.php]

<html>
    <head>
        <title>Result Cookie</title>
    </head>
    <body>
        <h1>Cookie Example</h1>
        쿠키 값은 <?php echo $_COOKIE['myCookie']; ?>
    </body>
</html>

링크가 걸려 result_cookie.php는 $_COOKIE를 참조해 쿠키 값을 알려주는 페이지이다. 

create_cookie.php에 접속해 링크가 걸린 문구를 클릭하면 결과적으로 쿠키 값을 볼 수 있게 되는 흐름이다.

 

 


지금까지 cookie를 생성 & 수정 & 참조 & 삭제하는 법에 대해 살펴보았다. 

 

Session과는 다르게 cookie는 session_start()와 같은 함수를 기재해두지 않아도 사용이 가능하다. 

또한 cookie는 생성할 때 지속 시간을 설정해서 만드는 반면 session은 php.ini에 설정된 시간 동안 지속된다.

 

쿠키는 client 쪽에 저장되며 저장된 쿠키 값을 확인할 수 있기 때문에 

보안 상의 목적으로 사용하기에는 부적합하다고 할 수 있다.

 

그렇다 보니 session은 서버 측에서 정보를 저장한다는 부분이 cookie와의 차이점 중 하나라 할 수 있다!!

'PHP' 카테고리의 다른 글

php - HTML Form으로 데이터 전송하기 (2)  (0) 2023.07.24
php - HTML Form으로 데이터 전송하기 (1)  (0) 2023.07.23
php Session  (0) 2023.07.21
php 예외 처리  (0) 2023.07.19
php 객체 지향 프로그램 (6)  (0) 2023.07.18
Comments