[Chapter6] 쿠키와 세션

Minseok Jo·2023년 4월 16일
0
post-thumbnail

1. 쿠키

쿠키(Cookie)는 인터넷 사용자가 웹 사이트를 접속할 때, 서버에서 보내주는 작은 데이터를 의미한다. 쿠키는 웹사이트 접속시 접속자의 개인장치와 브라우저에 텍스프 파일로 저장된다. 웹사이트는 이 쿠키를 통해 접속자를 인식하게 된다.


1) 쿠키 설정하기

setcokie() 함수의 사용 형식은 다음과 같다.
setcookie(string name, string value, int expire)

name: 쿠키명
value: 쿠키명에 설정되는 값
expire: 쿠키가 만료되는 일시

<?php
	 setcookie("username", "LowAngle", time()+24*60*60*30);

     echo "쿠키 설정 완료";
?>  

setcookie() 함수를 이용하여 쿠키 username에 "LowAngle" 값을 설정한다.
또한 쿠키는 30일 이후에 만료된다.

⏬실행 결과

2) 쿠키 접근하기

<?php
	if(isset($_COOKIE["username"]))
          printf("%s, Hello", $_COOKIE["username"]);
     else
          echo "Cookie X";
?>  

$_COOKIE["username"]은 username 쿠키의 값을 의미한다.
isset()함수는 변수 값이 존재하면 True, 그렇지 않으면 False를 반환한다.

⏬실행 결과

3) 쿠키 삭제하기

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

     echo "쿠키 삭제 완료";
?>  

setcookie() 함수 사용시 쿠키의 값을 널("")로 설정하면 쿠키가 삭제된다.
쿠키로 삭제할 때 만료일은 현재 시간 이전으로 설정한다.

⏬실행 결과
쿠키 삭제 후 다시 쿠키 접근 코드를 실행하면 쿠키가 삭제된 것을 확인할 수 있다.

⏬실행 결과

4) 쿠키로 로그인 처리
쿠키가 없다면 로그인 글자를, 쿠키가 설정되었다면 로그아웃 글자를 보여준다.

<h2>쿠키로 로그인 처리</h2>
<?php
    if(!isset($_COOKIE["userid"]))   
        echo "<a href='cookie_login.php'>로그인</a>";
    else 
        echo "<a href='cookie_logout.php'>로그아웃</a>";
?>

⏬실행 결과

현재 userid 쿠기가 설정되어 있지 않은 상태이므로 로그인 글자가 출력되었다.
로그인 글자를 클릭시 userid 쿠키가 설정되어, 따라서 이번에는 로그아웃 글자가 출력되게 된다.

<?php
    setcookie("userid", "hong123", time() + 24*60*60 * 30 );
    
    echo "<script>
            location.href = 'cookie_page.php';
        </script>";
?>

⏬실행 결과

로그아웃 클릭시 userid 쿠키가 널("")로 설정되어, 따라서 로그인 글자가 다시 출력되게 된다.

<?php
    setcookie("userid", "", time() - 3600);
    
    echo "<script>
            location.href = 'cookie_page.php';
        </script>";
?>

2. 세션

세션(Session)은 서버에 클라이언트의 상태 정보를 저장하는 기술로 논리적 연결을 의미한다.
클라이언트가 서버에 웹페이지를 요청하면 서버는 클라이언트의 정보를 저장하고 세션ID를 전송한다. 클라이언트는 세션ID를 폴더에 저장하고 클라이언트는 다시 서버에 요청할때 세션ID를 서버에 전달하여 상태 정보를 서버가 활용할 수 있게 한다.

1) 세션 등록하기

<?php
     session_start();
     $_SESSION["username"] = "LowAngle";

     echo "세션 등록";
?>     

$_SESSION을 이용하여 username 세션에 'LowAngle'을 등록한다

⏬실행 결과

2) 세션 접근하기

<?php
	session_start()

    if(isset($_SESSION["username"]))
         printf("Hello, %s", $_SESSION["username"]);
    else
         printf("Session X");
?>     

⏬실행 결과

3) 세션 해제하기

<?php
     session_start();

     if(isset($_SESSION["username"]))
          unset($_SESSION["username"]);

     echo "세션 해제";
?>          

isset()함수를 이용하여 username 세션의 값이 존재하면 unset() 함수를 이용하여 세션을 해제한다. unset()은 등록된 세션을 해제한다.
⏬실행 결과
이후 다시 세션에 접근해보면 세션이 존재하지 않는다는 결과가 출력된다.

⏬실행 결과

4) 세션으로 로그인 처리

<h2>세션으로 로그인 처리</h2>
<?php
    session_start();

    if(!isset($_SESSION["userid"]))   
        echo "<a href='session_login.php'>로그인</a>";
    else 
        echo $_SESSION["username"]."님"." | <a href='session_logout.php'>로그아웃</a>"
?>

세션이 없는 경우 로그인이 출력되고, 세션이 등록되어 있으면 로그아웃이 출력된다.

⏬실행 결과

현재 userid 세션이 설정되어 있지 않은 상태이므로 로그인 글자가 출력되었다.
로그인 글자를 클릭시 userid 세션이 설정되어, 따라서 이번에는 로그아웃 글자가 출력되게 된다.

<?php
    session_start();
    $_SESSION["userid"] = "angle";
    $_SESSION["username"] = "LowAngle";
    
    echo "<script>
            location.href = 'session_page.php';
        </script>";
?>

⏬실행 결과

로그아웃 글자를 클릭시 unset()함수로 인해 세션이 해제되며, 따라서 세션이 등록되어 있지 않게 되므로 로그인 글자가 다시 출력된다.

<?php
    session_start();
    
    if(isset($_SESSION["userid"])){
        unset($_SESSION["userid"]);
    }
    if(isset($_SESSION["username"])){
        unset($_SESSION["username"]);
    }    
    
    echo "<script>
            location.href = 'session_page.php';
        </script>";
?>

0개의 댓글