본문 바로가기
PHP

[PHP] Session 을 이용해서 로그인정보 가져오기

by teamnova 2022. 6. 15.

안녕하세요. PHP 세션을 이용해서 로그인 정보를 가져와보도록 하겠습니다.

 

세션(session)이란?

세션(session)이란 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미합니다.

사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 합니다.

 

앞서 살펴본 쿠키는 클라이언트 측의 컴퓨터에 모든 데이터를 저장합니다.

하지만 세션은 서비스가 돌아가는 서버 측에 데이터를 저장하고, 세션의 키값만을 클라이언트 측에 남겨둡니다.

브라우저는 필요할 때마다 이 키값을 이용하여 서버에 저장된 데이터를 사용하게 됩니다.

 

이러한 세션은 보안에 취약한 쿠키를 보완해주는 역할을 하고 있습니다.

 

 

 

먼저 세션을 사용하기 위한 구문 선언은 다음과 같습니다.

if(!session_id()){ // 세션이 실행되어 있는지 여부를 체크합니다.
	session_name('테스트세션'); //기본적으로 세션의 이름은 PHPSESSID 입니다.
    session_start(); //세션 시작 
}

 

로그인 정보 입력을 위한 페이지 입니다.

//login.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset = "utf-8">
    </head>
    <body>
        <div>
            <fieldset>
                <form action = "loginCheck.php" method = "post">
                    <div>
                        <label>Id <em>*</em></label>
                        <input type = "text" name = "id" required/>
                    </div>
                    <div>
                        <label >Password <em>*</em></label>
                        <input type = "password" name = "pw" required/>
                    </div>
                    <div class = "submit_form">
                        <div>
                            <button type = "submit"><span>Login</span></button>
                        </div>
                    </div>
                </form>
            </fieldset>
        </div>
    </body>
</html>

 

다음은 로그인 페이지에서 받아온 정보를 처리하는 페이지입니다.

테스트를 위해 id는 admin pw는 1234 가 일치하면 로그인 성공으로 설정했습니다.

 

//loginCheck.php

<?php
    $savedID = 'admin'; 
    $savedPW = '1234';

    $id = $_POST['id'];
    $pw = $_POST['pw'];

    if(!session_id()){ // 세션이 실행되어 있는지 여부를 체크합니다.
        session_name('테스트세션'); //기본적으로 세션의 이름은 PHPSESSID 입니다.
        session_start(); //세션 시작 

        if($id === $savedID && $pw === $savedPW){ //post로 받은 정보와 저장된 정보를 비교합니다.
            $_SESSION['id'] = $id; //세션에 key value 등록합니다.
            $_SESSION['nickname'] = '관리자';
    
            echo("
                <script>
                    alert('로그인에 성공했습니다.');
                    location.replace('result.php');
                </script>");
        }
    }
?>

로그인 성공 시 알림 창과 함께 세션에 id 정보와 nickname 정보를 넣었습니다.

 

다음은 로그인 성공 후, 이동되는 페이지에서 세션에 등록한 id와 nickname을 불러와서 출력해보겠습니다.

//result.php

<?php 
    session_name('테스트세션');
    session_start(); //세션시작

    echo "id 는 ".$_SESSION['id']."입니다.\n";
    echo "nickname 은 ".$_SESSION['nickname']."입니다.\n";

?>

 

 

세션 변수 삭제나 세션 아이디 삭제는 다음과 같은 함수를 사용하시면 됩니다.

//특정 세션 변수 삭제
unset($_SESSION['id']);
unset($_SESSION['nickname']);

session_unset();   // 모든 세션 변수의 등록 해지
session_destroy(); // 세션 아이디의 삭제