로그아웃은 화면에 보여 줄 내용도 없고 다른 파일을 include 하는게 없어서 비교적 간단해.
한 줄씩 이해해 보자구.
- logout.php
<?php
include_once('./_path.php');
// 로그인 상태면 세션변수를 삭제한다
if (isset($_SESSION['ssuno'])) {
// 세션 변수 클리어
$_SESSION = array();
// 세션쿠키가 있으면 삭제를 위해 쿠키 만기일을 1시간(3600) 전으로 세팅한다.
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 3600);
}
// 세션 삭제
session_destroy();
}
//- 쿠기 사용시 주석 해제하고 사용
// 쿠키의 아이디,회원명 삭제 1시간 전으로 세팅
//setcookie('ckuno' , '', time() - 3600);
//setcookie('ckuid' , '', time() - 3600);
//setcookie('ckuname', '', time() - 3600);
//setcookie('cklevel', '', time() - 3600);
echo '<script>location=" ' . ROOT_PATH . ' ";</script>'; // 루트로 이동
?>
로그아웃에서 할 일은 세션 변수를 모두 없애는 것야.
요기보드에서는 세션변수 $_SESSION['ssuno'] 를 보고 값이 있으면 로그인 상태라는 것으로 판단하는데 이 값이 없으면 당연히 로그아웃 상태가 되니까..
▶ $_SESSION = array()
현재 $_SESSION 변수에 들어간 모든 변수명과 값을 클리어 하라는 명령이야.
아래에서 session_destroy 로 세션 자체를 삭제하면 변수와 값도 모두 없어지지만 그래도 깨끗하게 지워 놓고 삭제하는게 안심되잖아.
▶ if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time() - 3600); }
세션은 서버에 저장되는 변수이지만 브라우저에 따라 세션정보를 임시 쿠키에 저장해서 사용하기도 해.
이때의 쿠키 이름은 우리가 정하는게 아니고 브라우저가 알아서 임시로 정하는데 그 이름이 session_name() 이야.
보통 세션을 죽이면 이것도 같이 없어지지만 역시 확실하게 하기위해 이 임시 세션쿠키가 있으면 이것도 쿠키를 삭제하는 방식대로 현재시간에서 - 1시간(3600초)를 주어서 확실히 없애 버리는 거야.
▶ 쿠키삭제
마지막으로 요기보드의 기본설치에서는 사용하지 않지만 여러분이 어떤 이유로 쿠키를 사용하고 있다면 각 쿠키변수들도 삭제해 버려.
▶ 메인화면으로 가기
모든 작업이 끝나면 location 명령으로 루트 패스로 가는 것으로 로그아웃이 완료돼.
세션과 쿠키를 모두 지우고 루트패스의 index.php 로 가면 이제 세션이 없으니 화면 상단에는 [로그인] 표시로 보이겠지?
회원관련 기능 설명은 이것으로 끝내려고 해.
회원정보수정(profile_edit.php) 와 비밀번호 변경(pw_change.php)가 더 있지만 그것들은 지금까지 공부한 실력으로 충분히 이해할 수 있을거로 믿어.