From 2530fc3b7cc7017311c141898ab081d9fb832c8a Mon Sep 17 00:00:00 2001 From: choibk Date: Thu, 4 Dec 2025 11:20:33 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EB=A9=94=EC=9D=BC=20=EC=A4=91?= =?UTF-8?q?=EB=B3=B5=20=ED=99=95=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/member.php | 9 ++++++++ dbtest.php | 12 +++++++++++ js/member_input.js | 49 +++++++++++++++++++++++++++++++++++++++++-- member_input.php | 7 ++++--- pg/member_process.php | 27 +++++++++++++++++------- 5 files changed, 92 insertions(+), 12 deletions(-) diff --git a/config/member.php b/config/member.php index 9e4709f..4d57145 100644 --- a/config/member.php +++ b/config/member.php @@ -19,4 +19,13 @@ class Member { return $stmt->rowCount() ? true : false; } + + public function email_exists($email) { + $sql = "SELECT * FROM member WHERE email=:email"; + $stmt = $this->conn->prepare($sql); + $stmt->bindParam(':email', $email); + $stmt->execute(); + + return $stmt->rowCount() ? true : false; + } } diff --git a/dbtest.php b/dbtest.php index a805fe1..e7192e3 100644 --- a/dbtest.php +++ b/dbtest.php @@ -17,3 +17,15 @@ if ($mem->id_exists($id)) { } else { echo "ID '{$id}'는 사용 가능합니다."; } + + +// 이메일 중복 테스트 +$email = 'sokuree1@sokuree.com'; + +$mem = new Member($db); + +if ( $mem->email_exists($email)) { + echo " '{$email}'는 이미 존재합니다."; +} else { + echo " '{$email}'는 사용 가능합니다."; +} \ No newline at end of file diff --git a/js/member_input.js b/js/member_input.js index 6a776a3..fac3cee 100644 --- a/js/member_input.js +++ b/js/member_input.js @@ -25,7 +25,7 @@ document.addEventListener("DOMContentLoaded", () => { xhr.onload = () => { if(xhr.status == 200) { const data = JSON.parse(xhr.responseText) - if(data.result == 'sucess') { + if(data.result == 'success') { alert('사용이 가능한 아이디입니다.') document.input_form.id_chk.value = "1" }else if(data.result == 'fail') { @@ -33,13 +33,58 @@ document.addEventListener("DOMContentLoaded", () => { document.input_form.id_chk.value = "0" f_id.value = '' f_id.focus() + }else if(data.result == 'empty_id') { + alert('아이디가 입력되지 않았습니다.') + f_id.focus() } } - } }) + // Email 중복 체크 + const btn_email_check = document.querySelector("#btn_email_check") + btn_email_check.addEventListener("click", () => { + const f_email = document.querySelector("#f_email") + + if (f_email.value.trim() === '') { + alert('이메일을 입력해 주세요'); + f_email.focus(); + return; + } + + + // AJAX + const f1 = new FormData() + f1.append('email', f_email.value) + f1.append('mode', 'email_chk') + + const xhr = new XMLHttpRequest() + xhr.open("POST", "/member/pg/member_process.php", true); //절대경로 + + xhr.send(f1) + + xhr.onload = () => { + if(xhr.status == 200) { + const data = JSON.parse(xhr.responseText) + if(data.result == 'success') { + alert('사용이 가능한 이메일입니다.') + document.input_form.email_chk.value = "1" + }else if(data.result == 'fail') { + alert('이미 사용 중인 이메일입니다. 다른 이메일을 입력해 주세요.') + document.input_form.email_chk.value = "0" + f_email.value = '' + f_email.focus() + }else if(data.result == 'empty_id') { + alert('이메일이 입력되지 않았습니다.') + f_email.focus() + } + } + } + + }) + + // 가입 버튼 클릭 시 비밀번호 일치 체크 const btn_submit = document.querySelector("#btn_submit") btn_submit.addEventListener("click", () => { diff --git a/member_input.php b/member_input.php index 88bf0c7..2178060 100644 --- a/member_input.php +++ b/member_input.php @@ -16,9 +16,10 @@ include 'header.php';

회원가입

-
+ +
@@ -41,9 +42,9 @@ include 'header.php';
- +
- +
diff --git a/pg/member_process.php b/pg/member_process.php index fb9ba17..9eb74b7 100644 --- a/pg/member_process.php +++ b/pg/member_process.php @@ -5,14 +5,27 @@ include '../config/member.php'; $mem = new Member($db); -$id = $_POST['id'] ?? ''; - -if($mem->id_exists($id)) { +$id = (isset($_POST['id']) && $_POST['id'] != '') ? $_POST['id'] : ''; +$email = (isset($_POST['email']) && $_POST['email'] != '') ? $_POST['email'] : ''; + if($_POST['mode'] == 'id_chk') { + if($id == '') { + die(json_encode(['result' => 'empty_id'])); + } + if($mem->id_exists($id)) { die(json_encode(['result' => 'fail'])); + }else { + die(json_encode(['result' => 'success'])); + } +} -}else { - - die(json_encode(['result' => 'sucess'])); - +if($_POST['mode'] == 'email_chk') { + if($email == '') { + die(json_encode(['result' => 'empty_email'])); + } + if($mem->email_exists($email)) { + die(json_encode(['result' => 'fail'])); + }else { + die(json_encode(['result' => 'success'])); + } } \ No newline at end of file