회원정보 DB 저장

This commit is contained in:
choibk 2025-12-04 14:46:10 +09:00
parent 1e71fdde48
commit d88faa6c6b
7 changed files with 123 additions and 36 deletions

View File

@ -28,4 +28,22 @@ class Member {
return $stmt->rowCount() ? true : false;
}
// 회원 정보 입력
public function input($marr) {
$sql = "INSERT INTO member(id, password, name, email, zipcode, addr1, addr2, photo, create_at, ip) VALUES (:id, :password, :name, :email, :zipcode, :addr1, :addr2, :photo, NOW(), :ip)";
$stmt = $this->conn->prepare($sql);
$stmt->bindParam(':id', $marr['id']);
$stmt->bindParam(':password', $marr['password']);
$stmt->bindParam(':name', $marr['name']);
$stmt->bindParam(':email', $marr['email']);
$stmt->bindParam(':zipcode', $marr['zipcode']);
$stmt->bindParam(':addr1', $marr['addr1']);
$stmt->bindParam(':addr2', $marr['addr2']);
$stmt->bindParam(':photo', $marr['photo']);
$stmt->bindParam(':ip', $_SERVER['REMOTE_ADDR']);
$stmt->execute();
}
}

BIN
data/profile/test01.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -4,7 +4,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<title><?= $g_title ?></title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"

View File

@ -100,26 +100,48 @@ document.addEventListener("DOMContentLoaded", () => {
return false
}
// 비밀번호 입력 여부
if (f.f_pwd.value == '') {
if (f.password.value == '') {
alert('비밀번호를 입력하세요.')
f.f_pwd.focus()
f.password.focus()
return false
}
if (f.f_pwd2.value == '') {
if (f.password2.value == '') {
alert('비밀번호 확인이 필요합니다.')
f.f_pwd2.focus()
f.password2.focus()
return false
}
// 비밀번호 일치 여부
if (f.f_pwd.value != f.f_pwd2.value) {
if (f.password.value != f.password2.value) {
alert('비밀번호가 일치하지 않습니다.')
//f.f_pwd.value = ''
f.f_pwd2.value = ''
f.f_pwd2.focus()
//f.password.value = ''
f.password2.value = ''
f.password2.focus()
return false
}
// 이름 등록 여부
if (f.name.value == '') {
alert('이름을 입력해 주세요.')
f.name.focus()
return false
}
// 이메일 등록 여부
if (f.email.value == '') {
alert('이메일을 입력해 주세요')
f.email.focus()
return false
}
// 이메일 중복 체크 여부
if(f.email_chk.value == 0) {
alert('이메일 중복확인이 필요합니다.')
return false
}
f.submit()
})
// 우편번호 찾기

View File

@ -8,6 +8,7 @@ if (!isset($_POST['chk']) || $_POST['chk'] != '1') {
}
$js_array = ['js/member_input.js'];
$g_title = '회원가입';
include 'header.php';
@ -24,6 +25,7 @@ include 'header.php';
<input type="hidden" name="mode" value="input">
<input type="hidden" name="id_chk" value="0">
<input type="hidden" name="email_chk" value="0">
<div class="d-flex gap-2 align-items-end">
<div class="flex-grow-1">
<label for="f_id">아이디</label>
@ -34,16 +36,23 @@ include 'header.php';
<div class="d-flex mt-3 gap-2 justify-content-between">
<div class="w-50">
<label for="f_pwd" class="form-label">비밀번호</label>
<input typ="password" name="f_pwd" class="form-control" id="f_pwd" placeholder="비밀번호를 입력하세요">
<label for="password" class="form-label">비밀번호</label>
<input type="password" name="password" class="form-control" id="password" placeholder="비밀번호를 입력하세요">
</div>
<div class="w-50">
<label for="f_pwd2" class="form-label">비밀번호 확인</label>
<input typ="password" name="f_pwd2" class="form-control" id="f_pwd2" placeholder="비밀번호를 입력하세요">
<label for="password2" class="form-label">비밀번호 확인</label>
<input type="password" name="password2" class="form-control" id="password2" placeholder="비밀번호를 입력하세요">
</div>
</div>
<div class="d-flex gap-2 align-items-end">
<div class="d-flex mt-3 gap-2 align-items-end">
<div class="w-50">
<label for="f_name">이름</label>
<input typ="text" name="name" class="form-control" id="f_name" placeholder="이름을 입력하세요">
</div>
</div>
<div class="d-flex mt-3 gap-2 align-items-end">
<div class="flex-grow-1">
<label for="f_email">이메일</label>
<input typ="text" name="email" class="form-control" id="f_email" placeholder="이메일을 입력하세요">
@ -54,7 +63,7 @@ include 'header.php';
<div class="d-flex gap-2 mt-3 align-items-end">
<div>
<label for="f_zipcode">우편번호</label>
<input type="text" name="zipcode" id="f_zipcode" class="form-control" maxlength="5" minlength="5">
<input type="text" name="zipcode" id="f_zipcode" readonly class="form-control" maxlength="5" minlength="5">
</div>
<button type="button" class="btn btn-secondary" id="btn_zipcode">우편번호 찾기</button>
</div>
@ -62,11 +71,11 @@ include 'header.php';
<div class="d-flex mt-3 gap-2 justify-content-between">
<div class="w-50">
<label for="f_addr1" class="form-label">주소</label>
<input typ="text" class="form-control" id="f_addr1" placeholder="주소를 입력하세요">
<input typ="text" name="addr1" class="form-control" id="f_addr1" placeholder="주소를 입력하세요">
</div>
<div class="w-50">
<label for="f_addr2" class="form-label">상세주소</label>
<input typ="text" class="form-control" id="f_addr2" placeholder="상세주소를 입력하세요">
<input typ="text" name="addr2" class="form-control" id="f_addr2" placeholder="상세주소를 입력하세요">
</div>
</div>

View File

@ -1,14 +1,27 @@
<?php
// 맨 첫 줄들에 추가
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
include '../config/dbconfig.php'; //상대경로
include '../config/member.php';
$mem = new Member($db);
$id = (isset($_POST['id']) && $_POST['id'] != '') ? $_POST['id'] : '';
$password = (isset($_POST['password']) && $_POST['password'] != '') ? $_POST['password'] : '';
$email = (isset($_POST['email']) && $_POST['email'] != '') ? $_POST['email'] : '';
$name = (isset($_POST['name']) && $_POST['name'] != '') ? $_POST['name'] : '';
$zipcode = (isset($_POST['zipcode']) && $_POST['zipcode'] != '') ? $_POST['zipcode'] : '';
$addr1 = (isset($_POST['addr1']) && $_POST['addr1'] != '') ? $_POST['addr1'] : '';
$addr2 = (isset($_POST['addr2']) && $_POST['addr2'] != '') ? $_POST['addr2'] : '';
$mode = (isset($_POST['mode']) && $_POST['mode'] != '') ? $_POST['mode'] : '';
if($_POST['mode'] == 'id_chk') {
// 아이디 중복 체크
if ($mode == 'id_chk') {
if ($id == '') {
die(json_encode(['result' => 'empty_id']));
}
@ -17,9 +30,8 @@ $email = (isset($_POST['email']) && $_POST['email'] != '') ? $_POST['email'] : '
} else {
die(json_encode(['result' => 'success']));
}
}
if($_POST['mode'] == 'email_chk') {
// 이메일 중복 체크
} else if ($mode == 'email_chk') {
if ($email == '') {
die(json_encode(['result' => 'empty_email']));
}
@ -28,4 +40,29 @@ if($_POST['mode'] == 'email_chk') {
} else {
die(json_encode(['result' => 'success']));
}
//
} else if ($mode == 'input') {
// 비밀번호 해시 처리
$hash = password_hash($password, PASSWORD_DEFAULT);
// 프로필 이미지 처리
$tmparr = explode('.', $_FILES['photo']['name']);
$ext = end($tmparr);
$photo = $id .'.'. $ext;
copy($_FILES['photo']['tmp_name'], "../data/profile/". $photo);
// 배열 생성
$arr = [
'id' => $id,
'password' => $hash,
'name' => $name,
'email' => $email,
'zipcode' => $zipcode,
'addr1' => $addr1,
'addr2' => $addr2,
'photo' => $photo
];
// 입력 메서드 실행
$mem->input($arr);
}

View File

@ -1,6 +1,7 @@
<?php
$js_array = [ 'js/member.js'];
$g_title = '약관';
include 'header.php';