본문 바로가기
PHP 게시판 만들기

8. session으로 로그인 정보 유지시키기

by 똑똑한 영장류 2012. 12. 13.


Chap 8.



아이디와 암호를 이용해서 사용자 확인을 하는 것까지 해봤습니다.

제대로 로그인이 된 사용자라면, 사이트 곳곳을 누비는 동안, 로그인 사용자로서의 권한을 가질 수 있어야 겠지요. 그럴려면, 서버는 지속적으로 그 정보를 가지고 있을 필요가 있습니다.

페이지가 바뀔 때마다 로그인을 강제할 수 없으니까요.


그럼, 로그인 정보처럼, 서버가 계속 가지고 가야하는 정보들은 어떻게 관리하면 좋을까요?


사용자가 사이트에 접속을 하게 되면, 세션 아이디를 가지게 됩니다. 그 세션이란거는 접속이 되어있는 동안 유지되는 또 하나의 연결의 끈이라고 칩시다. 그럼, 그 세션에다가 필요한 정보들을 기록해놓고 각각의 페이지에서 땡겨 쓸 수 있으면 좋겠군요.


그럴 목적으로 준비된 전역 변수가 있습니다. 페이지 내에서의 전역변수가 아니라, 서버에 접속되어 있는 동안 계속 이용할 수 있는 전역변수입니다.


$_SESSION[]


배열입니다. 첨자를 이용해서 여러개의 값을 저장할 수 있습니다.


이 변수를 사용하기 위해서는 세션을 이용하겠다는 의미로 초기화 함수를 한번 실행시켜줘야합니다.


session_start();


이 함수는 작성하는 php  파일의 초기 부분에 항상 실행이 되도록 해줘야 합니다. 그래야 이후, $_SESSION 변수를 제대로 이용할 수 있습니다.


그럼, login_check.php 를 수정해 볼까요?


앞 부분에 session_start(); 를 입력해줍니다.


그리고, 암호를 확인하고 정상적으로 사용자라고 확인된 부분에서 $_SESSION[] 에다가 관련 정보를 기록해 둡시다.


$_SESSION['is_logged'] = 'YES';

$_SESSION['user_id'] = $user_id;



if( $row['pw'] == $encryped_pass ) {
        $_SESSION['is_logged'] = 'YES';
        $_SESSION['user_id'] = $user_id;
        header("Location: http://snspd.com/member/login_done.php");
        exit();
    }
    else {
        $_SESSION['is_logged'] = 'NO';
        $_SESSION['user_id'] = '';
        header("Location: http://snspd.com/member/login_done.php");
        exit();
    } 


암호가 정확하든지, 정확하지 않든지 모두 login_done.php 로 이동을 합니다. 하지만, 가지고 가는 정보는 다릅니다.


그럼, login_done.php 에서 세션값을 읽어서 그 결과에 맞는 내용을 출력해야겠네요.


login_done.php 의 가장 앞부분, <html>태그가 시작되기 전에 관련 작업을 해 줍시다. 그리고, BODY  태그 안에서 해당 메세지를 출력하도록 수정합시다.



<?php
session_start();
$is_logged = $_SESSION['is_logged'];
if($is_logged=='YES') {
    $user_id = $_SESSION['user_id'];
    $message = $user_id . ' 님, 로그인 했습니다.';
}
else {
    $message = '로그인이 실패했습니다.';
}

var_dump($_SESSION);

?>
<html>
    <head>
        <title>로그인 완료 페이지</title>
        <meta charset="utf-8" >
    </head>
    <body>
        login_done.php - 로그인 완료 페이지<br />
        <hr />
<?php
    echo $message;
?>
    </body>
</html> 




테스트 해보면, 아래는 틀린 암호를 입력했을 때,





아래는 맞는 암호를 입력했을 때입니다.





세션을 이용해서 로그인 정보를 유지시키는 방법을 살펴봤습니다.


이상!









댓글