PHP

세션으로 로그인 처리하기

jin_li 2023. 4. 11. 02:02

세션(Session)

: 서버에 클라이언트의 상태 정보를 저장하는 기술.

 

세션의 동작 과정

1. 클라이언트가 서버에 웹 페이지 요청

2. 서버는 클라이언트의 정보를 저장하고, 세션ID 쿠키에 담아 전송

3. 클라이언트는 세션ID를 폴더에 저장

4. 클라이언트는 다시 서버에 요청할 때 세션ID를 서버에 전달하여 상태 정보를 서버가 활용할 수 있게 함.

서버는 이 세션ID를 이용하여 응답한다.

 

세션을 사용하면, 클라이언트 측에서 세션 ID를 조작하는 것은 가능하지만, 세션 데이터를 직접 변경할 수는 없다. 따라서, 세션을 사용하면 보안성이 높은 웹 애플리케이션을 개발할 수 있다.

 

  쿠키 세션
저장 위치 클라이언트 클라이언트, 서버
보안 클라이언트 측에서 쿠키 변조 위험. 보안에 취약 서버에 세션ID 저장, 쿠키보다 보안 강화
라이프 사이클 지속 가능 브라우저 종료 시 종료됨
속도 빠름 느림

 

 

 

 

 

 

세션 등록하기

 

세션을 사용하려면 세션을 필요로 하는 모든 페이지에서 session_start()를 사용하여 세션을 시작하고,

전역변수 $_SESSION을 이용해서 세션을 등록한다.

 

 

예제) session_register.php 소스 코드

1
2
3
4
5
6
<?php
    session_start();
    $_SESSION["디저트"= "커스터드푸딩";
 
    echo "디저트 세션 등록 완료"
?>
cs

 

 

 

 

 

 

세션 접근하기

 

우선 session_start()를 이용하여 세션을 시작한다.

 

 

예제) session_access.php 소스 코드

1
2
3
4
5
6
7
8
9
10
<?php
    session_start();
 
    if(isset($_SESSION["디저트"])){
        echo $_SESSION["디저트"]." 먹음. 왜 먹어도 먹어도 안 질리지ㅎㅎ";
    }
    else {
        echo "커스터드 푸딩 없어용";
    }
?>
cs

 

 

isset()을 이용하여 "디저트" 세션 값이 존재하면 왜 먹어도 먹어도 안 질리냐는 텍스트 출력하게 한다.

"디저트" 세션 값이 없으면 '커스터드 푸딩 없어용' 텍스트를 출력하게 한다.

 

 

 

 

 

 

 

세션 해제하기

 

unset()을 이용하여 등록된 세션을 해제한다.

 

 

예제) session_destroy.php 소스 코드

1
2
3
4
5
6
7
8
9
10
<?php
    session_start();
 
    // 세션 접속 끊기
    if(isset($_SESSION["디저트"])){
        unset($_SESSION["디저트"]);
    }
 
    echo "디저트 세션 해제~";
?>
cs

 

session_destroy.php 실행했을 때

 

 

 

이후 다시 session_access.php 실행하면 세션 값 없을 때의 텍스트 출력된다.

 

 

 

 

 

 

 

 

 

세션으로 로그인 처리하기!

 

 

 

1. 세션을 사용할 메인 페이지 코드는 다음과 같다.

 

session_page.php

1
2
3
4
5
6
7
8
9
10
11
<h3> 세션으로 로그인 처리하기 </h3>
<?php
    session_start();
 
    if(!isset($_SESSION["userid"]))
        echo "<a href='session_login.php'>로그인</a>";
    else
        echo "환영합니다 ".$_SESSION["username"]."님"." |
        <a href='session_logout.php'>로그아웃</a>";
 
?>
cs

 

세션이 등록되어 있지 않다면 '로그인'이 출력되게 하고, 세션이 등록되어 있다면 '로그아웃'이 출력되는 코드이다.

 

session_page.php 실행했을 때. 세션 등록 전이라 로그인 링크가 출력되었다

 

 

 

 

 

 

 

2. 로그인 처리 : 세션 등록

 

이제 session_login.php의 파일에서 세션을 등록해 로그인을 처리하자.

1
2
3
4
5
6
7
8
9
10
<?php
    session_start();
    $_SESSION["userid"= "yj000";
    $_SESSION["username"= "연진";
 
echo "<script>
    location.href = 'session_page.php';
    </script>";
 
?>
cs

 

userid 세션에는 "yj000"을 등록하고, username 세션에는 "연진"을 등록했다.

그 후 js의 location.href을 이용하여 session_page.php로 이동되게 했다.

 

'로그인'을 클릭해 session_login.php를 실행했을 때. 세션이 등록되어 '로그아웃'이 뜬다.

 

 

 

 

 

 

3. 로그아웃 처리 : 세션 해제

 

위의 사진처럼 세션이 등록되어 로그인 된 상태에서 '로그아웃' 링크를 클릭했을 때, 

로그아웃을 처리할 session_logout.php 코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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>";
 
    ?>
cs

 

unset()을 이용하여 등록되어 있던 userid, username 세션을 해제한다.

따라서 다시 session_page.php로 리다이렉트 됐을 때 '로그인'이 출력된다.

 

 

 

 

 

참고도서 : PHP+MySQL입문

'PHP' 카테고리의 다른 글

쿠키로 로그인 처리하기  (0) 2023.04.11
연습문제풀이  (0) 2023.04.02