처음에는 바로 회원가입으로 넘어가려고 했지만 생각해 보니 우리가 보통 회원가입을 할 때 여러 가지 약관 동의를 하고 그다음 회원가입 페이지로 이동을 합니다.
ex) 네이버 회원가입 첫 페이지
절차대로라면 위와 같이 약관 동의를 하고 회원가입 페이지로 이동을 할 수 있습니다. 하지만 약관 동의를 하지 않고 바로 넘어가는 걸 방지하기 위해서 약관 동의가 제대로 되었을 때만 기능이 수행하도록 해보겠습니다.
<form action="member_input.php" method="post" name="stipulation_form">
<input type="hidden" name="chk" value="0">
</form>
member.js - 약관동의 스크립트
document.addEventListener("DOMContentLoaded", () => {
const btn_member = document.querySelector("#btn_member")
btn_member.addEventListener("click", () => {
const chk_member1 = document.querySelector("#chk_member1")
const chk_member2 = document.querySelector("#chk_member2")
if (chk_member1.checked !== true) {
alert("회원 약관을 동의해주세요.")
return false
}
if (chk_member2.checked !== true) {
alert("개인정보 취급방침을 동의해주세요.")
return false
}
const f = document.stipulation_form
f.chk.value = 1
f.submit()
})
})
member_input.php - 회원가입 페이지
print_r($_POST);
member_input.php - 회원가입 페이지
위 사진과 같이 직접적으로 회원가입 페이지로 이동할 시 알림 창과 함께 다시 약관 동의 페이지로 이동합니다.
중복되는 설명이 많이 있어서 그런 부분은 생략하겠습니다.
<main class="w-50 mx-auto border rounded-5 p-5">
<h1 class="text-center">회원가입</h1>
<div class="d-flex gap-2 align-items-end">
<div>
<label for="f_id">아이디</label>
<input type="text" class="form-control" id="f_id" placeholder="아이디를 입력해 주세요.">
</div>
<button class="btn btn-secondary">아이디 중복 확인</button>
</div>
</main>
<div class="d-flex gap-2 mt-3 justify-content-between">
<div class="flex-grow-1">
<label for="f_pw">비밀번호</label>
<input type="password" class="form-control" id="f_pw" placeholder="비밀번호를 입력해 주세요.">
</div>
<div class="flex-grow-1">
<label for="f_pw2">비밀번호 확인</label>
<input type="password" class="form-control" id="f_pw2" placeholder="비밀번호 확인">
</div>
</div>
<div class="d-flex gap-2 align-items-end mt-3">
<div class="flex-grow-1">
<label for="f_email">Email</label>
<input type="email" class="form-control" id="f_email" placeholder="이메일을 입력해 주세요.">
</div>
<button class="btn btn-secondary">이메일 중복 확인</button>
</div>
<div class="d-flex mt-3 gap-2 align-items-end">
<div>
<label for="f_hcode">우편번호</label>
<input type="address" name="" id="f_hcode" class="form-control">
</div>
<div>
<button class="btn btn-secondary">우편번호찾기</button>
</div>
</div>
<div class="d-flex gap-2 mt-3 justify-content-between">
<div class="flex-grow-1">
<label for="f_addr1">주소</label>
<input type="address" class="form-control" id="f_addr1">
</div>
<div class="flex-grow-1">
<label for="f_addr2">상세주소</label>
<input type="address" class="form-control" id="f_addr2" placeholder="상세 주소를 입력해 주세요.">
</div>
</div>
<div class="d-flex mt-3 gap-5">
<div><input type="file" name="profile" class="form-control"></div>
<img src="images/profile.png" alt="profile" class="w-25">
</div>
<div class="mt-3 d-flex gap-2 justify-content-center">
<button class="btn btn-primary">가입확인</button>
<button class="btn btn-secondary">취소</button>
</div>
<?php
// print_r($_POST);
// if (!isset($_POST["chk"]) || $_POST["chk"] != 1) {
// die("<script>
// alert('약관 동의가 이루어진 다음에 이용 가능합니다.')
// location.href='./stipulation.php'
// </script>");
// }
include "inc_header.php";
?>
<main class="w-50 mx-auto border rounded-5 p-5">
<h1 class="text-center">회원가입</h1>
// 아이디
<div class="d-flex gap-2 align-items-end">
<div>
<label for="f_id">아이디</label>
<input type="text" class="form-control" id="f_id" placeholder="아이디를 입력해 주세요.">
</div>
<button class="btn btn-secondary">아이디 중복 확인</button>
</div>
// 비밀번호
<div class="d-flex gap-2 mt-3 justify-content-between">
<div class="flex-grow-1">
<label for="f_pw">비밀번호</label>
<input type="password" class="form-control" id="f_pw" placeholder="비밀번호를 입력해 주세요.">
</div>
<div class="flex-grow-1">
<label for="f_pw2">비밀번호 확인</label>
<input type="password" class="form-control" id="f_pw2" placeholder="비밀번호 확인">
</div>
</div>
// 이메일
<div class="d-flex gap-2 align-items-end mt-3">
<div class="flex-grow-1">
<label for="f_email">Email</label>
<input type="email" class="form-control" id="f_email" placeholder="이메일을 입력해 주세요.">
</div>
<button class="btn btn-secondary">이메일 중복 확인</button>
</div>
// 우편번호
<div class="d-flex mt-3 gap-2 align-items-end">
<div>
<label for="f_hcode">우편번호</label>
<input type="address" name="" id="f_hcode" class="form-control">
</div>
<div>
<button class="btn btn-secondary">우편번호찾기</button>
</div>
</div>
// 주소
<div class="d-flex gap-2 mt-3 justify-content-between">
<div class="flex-grow-1">
<label for="f_addr1">주소</label>
<input type="address" class="form-control" id="f_addr1">
</div>
<div class="flex-grow-1">
<label for="f_addr2">상세주소</label>
<input type="address" class="form-control" id="f_addr2" placeholder="상세 주소를 입력해 주세요.">
</div>
</div>
// 프로필
<div class="d-flex mt-3 gap-5">
<div><input type="file" name="profile" class="form-control"></div>
<img src="images/profile.png" alt="profile" class="w-25">
</div>
<div class="mt-3 d-flex gap-2 justify-content-center">
<button class="btn btn-primary">가입확인</button>
<button class="btn btn-secondary">취소</button>
</div>
</main>
<?php
include "inc_footer.php";
?>

다음 시간에는 아이디, 비밀번호, 이메일 중복 확인을 하려고 했는데 생각해 보니 그걸 하려면 DB가 필요해서 아마 DB 생성부터 연결까지 할 거 같습니다.
긴 글 봐주셔서 감사합니다.