의견
PHP 쿠키 로그인 구현과 거의 비슷하다. 세션으로 구현할 때 다른 점은 다음 2가지이다.
- 세션 변수 사용 전에
session_start()를 써야 한다.[1] - 로그아웃시 세션 제거함수
session_destory()를 사용할 수 있다.
회원정보 테이블은 다음과 같다. 다만 본문서에서는 세션 구현에 집중하기 위해 의도적으로 DB부분을 제외하고 간단히 배열에 기록하였다. (login_ok.php 참조)
- 회원정보 테이블
| m_id | m_pw | m_name |
|---|---|---|
| user1 | pw1 | 한놈 |
| user2 | pw2 | 두시기 |
| user3 | pw3 | 석삼 |
예를 들어 아이디 user2, 패스워드 pw2를 입력하면 두시기 사용자로 로그인될 것이다.
main.php
- 로그인된 상태면 이름 출력
- 로그인 안된 상태면 로그인 페이지(login.php)로 이동
<!DOCTYPE html> <meta charset="utf-8" /> <?php session_start(); if(!isset($_SESSION['user_id']) || !isset($_SESSION['user_name'])) { echo "<meta http-equiv='refresh' content='0;url=login.php'>"; exit; } $user_id = $_SESSION['user_id']; $user_name = $_SESSION['user_name']; echo "<p>안녕하세요. $user_name($user_id)님</p>"; echo "<p><a href='logout.php'>로그아웃</a></p>"; ?>
login.php
<!DOCTYPE html> <meta charset="utf-8" /> <form method='post' action='login_ok.php'> <table> <tr> <td>아이디</td> <td><input type='text' name='user_id' tabindex='1'/></td> <td rowspan='2'><input type='submit' tabindex='3' value='로그인' style='height:50px'/></td> </tr> <tr> <td>비밀번호</td> <td><input type='password' name='user_pw' tabindex='2'/></td> </tr> </table> </form>
login_ok.php
<?php if(!isset($_POST['user_id']) || !isset($_POST['user_pw'])) exit; $user_id = $_POST['user_id']; $user_pw = $_POST['user_pw']; $members = array('user1'=>array('pw'=>'pw1', 'name'=>'한놈'), 'user2'=>array('pw'=>'pw2', 'name'=>'두시기'), 'user3'=>array('pw'=>'pw3', 'name'=>'석삼')); if(!isset($members[$user_id])) { echo "<script>alert('아이디 또는 패스워드가 잘못되었습니다.');history.back();</script>"; exit; } if($members[$user_id]['pw'] != $user_pw) { echo "<script>alert('아이디 또는 패스워드가 잘못되었습니다.');history.back();</script>"; exit; } session_start(); $_SESSION['user_id'] = $user_id; $_SESSION['user_name'] = $members[$user_id]['name']; ?> <meta http-equiv='refresh' content='0;url=main.php'>
logout.php
<?php session_start(); session_destroy(); ?> <meta http-equiv='refresh' content='0;url=main.php'>
- → 쿠키와는 달리 세션 제거 전용함수가 있다.
예제
- → [로그인]을 클릭하여 로그인 페이지로 이동.
- → 아이디와 패스워드를 아무거나 입력하여 로그인해본다.
- → 아이디 user1, 패스워드 pw1 을 입력하여 테스트



