8.11. 로그인 기능 만들기

로그인 페이지에서 로그인 버튼 클릭시 로그인을 처리하는 기능을 만든다.

<?php
require_once("inc/db.php");

$login_id = isset($_POST['login_id']) ? $_POST['login_id'] : null;
$login_pw = isset($_POST['login_pw']) ? $_POST['login_pw'] : null;

// 파라미터 체크
if ($login_id == null || $login_pw == null){    
    header("Location: /login.php");
    exit();
}

// 회원 데이터
$member_data = db_select("select * from tbl_member where login_id = ?", array($login_id));

// 회원 데이터가 없다면
if ($member_data == null || count($member_data) == 0){
    header("Location: /login.php");
    exit();
}

// 비밀번호 일치 여부 검증
$is_match_password = password_verify($login_pw, $member_data[0]['login_pw']);

// 비밀번호 불일치
if ($is_match_password === false){
    header("Location: /login.php");
    exit();
}

session_start();
$_SESSION['member_id'] = $member_data[0]['member_id'];

// 목록으로 이동
header("Location: /list.php");

위 코드를 login.post.php 파일로 저장한다.


데이터베이스에서 회원 데이터를 가지고 온다.

// 회원 데이터
$member_data = db_select("select * from tbl_member where login_id = ?", array($login_id));

회원 데이터가 없다면 로그인이 불가능하므로 로그인 화면으로 이동한다.

// 회원 데이터가 없다면
if ($member_data == null || count($member_data) == 0){
    header("Location: /login.php");
    exit();
}

입력받은 비밀번호가 데이터베이스에 저장된 비밀번호와 일치하는 지 검증한다.

// 비밀번호 일치 여부 검증
$is_match_password = password_verify($login_pw, $member_data[0]['login_pw']);

비밀번호가 틀리다면 로그인 페이지로 이동한다.

// 비밀번호 불일치
if ($is_match_password === false){
    header("Location: /login.php");
    exit();
}

비밀번호가 일치한다면 로그인할 수 있다. 로그인되었다는 정보를 저장하기 위해 세션에 member_id 정보를 저장한다.

session_start();
$_SESSION['member_id'] = $member_data[0]['member_id'];

정상적으로 로그인되었으므로 목록 페이지로 이동한다.

// 목록으로 이동
header("Location: /list.php");