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> |
테스트 해보면, 아래는 틀린 암호를 입력했을 때,
아래는 맞는 암호를 입력했을 때입니다.
세션을 이용해서 로그인 정보를 유지시키는 방법을 살펴봤습니다.
이상!
'PHP 게시판 만들기' 카테고리의 다른 글
10. 화면에 표시되는 내용 구분하기 (3) | 2012.12.13 |
---|---|
9. 중복 코드는 하나의 파일로 작성해서 포함시키기 (9) | 2012.12.13 |
7. 로그인 페이지 만들기 (23) | 2012.12.12 |
6. 가입 정보 저장 후 완료 페이지로 전환하기 (13) | 2012.12.12 |
5. 사용자 암호를 암호화 하기 (8) | 2012.12.11 |
댓글