8.09. 회원가입 기능 만들기

회원가입 페이지에서 회원가입 버튼을 눌렀을 때 실제 회원가입을 처리하는 기능을 만든다.

<?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;
$login_name = isset($_POST['login_name']) ? $_POST['login_name'] : null;

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

// 회원 가입이 되어 있는지 검사
$member_count = db_select("select count(member_id) cnt from tbl_member where login_id = ?" , array($login_id));
if ($member_count && $member_count[0]['cnt'] == 1){    
    header("Location: /regist.php");
    exit();
}

// 비밀번호 암호화
$bcrypt_pw = password_hash($login_pw, PASSWORD_BCRYPT);

// 데이터 저장
db_insert("insert into tbl_member (login_id, login_name, login_pw) values (:login_id, :login_name, :login_pw )",
    array(
        'login_id' => $login_id,
        'login_name' => $login_name,
        'login_pw' => $bcrypt_pw
    )
);


// 로그인 페이지로 이동
header("Location: /login.php");

위 코드를 regist.post.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;
$login_name = isset($_POST['login_name']) ? $_POST['login_name'] : null;

POST 메소드를 통해 전달받은 파라미터 login_id가 있다면 $login_id 변수에 값이 설정되고, 파라미터가 없다면 null이 설정된다. login_pw, login_name도 동일하다.


파라미터가 모두 있는지 검증한다.

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

파라미터는 모두 있어야 하므로 하나라도 없다면 회원 가입 화면으로 이동한다.


회원 가입이 되어 있는 지 검사한다.

// 회원 가입이 되어 있는지 검사
$member_count = db_select("select count(member_id) cnt from tbl_member where login_id = ?" , array($login_id));
if ($member_count && $member_count[0]['cnt'] == 1){    
    header("Location: /regist.php");
    exit();
}

tbl_member 테이블에서 login_id 가 일치하는 회원 수를 세 본다. 만약 회원이 있다면 1, 회원이 없다면 회원수가 0이 될 것이다. 회원수가 1이라면 이미 같은 회원 ID가 존재한다는 뜻이므로 회원가입 화면으로 리다이렉트한다.


비밀번호를 저장하기 위해 암호화한다. 본 내용은 3.06. 비밀번호 암호화하고 매칭하기에서 다룬다.

// 비밀번호 암호화
$bcrypt_pw = password_hash($login_pw, PASSWORD_BCRYPT);

회원 정보를 저장한다.

// 데이터 저장
db_insert("insert into tbl_member (login_id, login_name, login_pw) values (:login_id, :login_name, :login_pw )",
    array(
        'login_id' => $login_id,
        'login_name' => $login_name,
        'login_pw' => $bcrypt_pw
    )
);

회원 정보를 저장했다면 정상적으로 회원 가입이 된 것이다. 로그인 페이지로 이동한다.

Copy// 로그인 페이지로 이동
header("Location: /login.php");