글쓰는 개발자

PHP 기초문법 (7) 쿠키, 세션 본문

Development/PHP

PHP 기초문법 (7) 쿠키, 세션

세가사 2020. 5. 9. 16:04
반응형

1. 쿠키

쿠키(cookie)는 사용자가 웹 페이지에 접속할 때 웹 서버가 사용자의 컴퓨터에 저장하는 데이터이다. 웹 페이지에서는 쿠키를 확인하여 로그인이나 장바구니 상태등을 확인할 수 있다.

1.1) 쿠키 생성

setcookie(키, 값) 함수를 호출하면 쿠키를 생성할 수 있다. 또한 쿠키는 얼마만큼 유효할지 시간도 정할 수 있다. 다음은 계속 사용가능한 cookie1 쿠키와 10초간 사용가능한 cookie2를 생성하는 코드이다.

<?php 
  setcookie("cookie1", "abc");
  setcookie("cookie2", "123", time()+10);
?>

쿠키를 생성하는 코드밖에 없기 때문에 호출해도 화면에 아무것도 나타나지 않는다. 그러면 앞에서 쿠키를 생성했으니 다른 페이지에서 쿠키가 잘 저장되었는지 확인해 보자. 쿠키를 불러올때는 $_COOKIE 라는 시스템 내장 배열변수에서 불러오면 된다. 쿠키가 존재하는지 여부는 isset함수를 통해 확인 가능하다. 아래는 cookie1, 2에 저장된 확인해 출력해 주는 코드이다. cookie2는 시간 제한을 걸었기 때문에 존재하지 않을 경우 분기를 둬서 time out을 호출해 준다.

<?php 
  if(isset($_COOKIE["cookie1"])) {
    $cookie1 = $_COOKIE["cookie1"];
    echo "cookie1 = $cookie1<br>";
  }
  if(isset($_COOKIE["cookie2"])) {
    $cookie2 = $_COOKIE["cookie2"];
    echo "cookie2 = $cookie2";
  } else {
    echo "cookie2 time out!";
  }
?>

결과는 아래와 같이 각 쿠키에 저장된 값들을 호출해 준다.

만약 10초 뒤에 다시 한번 위 페이지를 호출하면 다음과 같이 만료된 쿠키를 출력해준다.

1.2) 쿠키 삭제

앞에 예제에서 사용한 쿠키를 삭제하는 방법을 알아보자. 쿠키를 삭제할때도 쿠키를 생성할때와 같이 setcookie 함수를 사용하면 된다. 주의할 점은 세번째 만료 시간을 현재시간보다 이전으로 하는것이다. 다음은 쿠키 만료시간을 현재시간 -1시간으로 해서 쿠키를 삭제한 코드이다.

<?php 
  setcookie("cookie1", "", time() - 3600);
  setcookie("cookie2", "", time() - 3600);

  if(isset($_COOKIE["cookie1"])) {
    $cookie1 = $_COOKIE["cookie1"];
    echo "cookie1 = $cookie1<br>";
  } else {
    echo "cookie1 deleted!<br>";
  }
  if(isset($_COOKIE["cookie2"])) {
    $cookie2 = $_COOKIE["cookie2"];
    echo "cookie2 = $cookie2";
  } else {
    echo "cookie2 deleted!";
  }
?>

결과는 다음과 같다.

 

2. 세션

2.1) 세션 생성

사용자 컴퓨터에만 정보가 저장되는 쿠키와 달리 세션은 서버에 정보를 저장하고 사용자 컴퓨터에는 세션의 아이디만을 저장해둔다. 사용자 컴퓨터에 직접 값을 저장하지 않기 때문에 세션을 사용하면 쿠키보다 보안에 강하다. 세션을 생성하거나 사용하기 위해서는 항상 session_start 함수를 호출해주어야 한다. 쿠키와 같이 세션을 생성하는 예제를 실행해 보자.

<?php 
  session_start();
  $_SESSION['session1'] = 'abc';
  $_SESSION['session2'] = '123';
?>

위 코드를 실행하면 아까와 같이 화면에는 아무것도 표시되지 않지만 세션이 생성이 된다.

이제 다음 코드를 실행해서 세션이 제대로 저장되었는지 확인해 보자.

<?php 
  session_start();
  if(isset($_SESSION["session1"])) {
    $session1 = $_SESSION["session1"];
    echo "session1 = $session1<br>";
  } else {
    echo "session1 not exists";
  }
  if(isset($_SESSION["session2"])) {
    $session2 = $_SESSION["session2"];
    echo "session2 = $session2";
  } else {
    echo "session2 not exists";
  }
?>

코드를 실행하면 다음과 같이 세션이 잘 저장된 것을 확인할 수 있다.

 

2.2) 세션 삭제

unset 함수를 사용하면 세션을 삭제할 수 있다. 다음은 세션을 삭제하고 삭제가 제대로 이루어졌는지 확인하는 코드이다.

<?php 
  session_start();
  unset($_SESSION["session1"]);
  unset($_SESSION["session2"]);

  if(isset($_SESSION["session1"])) {
    $session1 = $_SESSION["session1"];
    echo "session1 = $session1<br>";
  } else {
    echo "session1 not exists<br>";
  }
  if(isset($_SESSION["session2"])) {
    $session2 = $_SESSION["session2"];
    echo "session2 = $session2";
  } else {
    echo "session2 not exists";
  }
?>

세션삭제가 잘 이루어 졌다면 다음과 같은 화면이 표시된다.

 

반응형