회원가입 페이지에서 회원가입 버튼을 눌렀을 때 실제 회원가입을 처리하는 기능을 만든다.
<?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");