지난번 포스팅은 간단한 회원가입 폼 생성 및 디비 테이블 셋팅 및 등록에관한 내용을 다뤘다.
이번 포스팅은 지난 포스팅에 이어 이번엔 중복확인 기능을 만들꺼다.
코드는 지난 포스팅에서 조금 추가되는 부분이 있다.
워낙 쉬운 코드라 php를 조금만 알아도 쉽게 따라할수있겠지만, 만약 이해가 잘 가지 않는다면 이전 포스팅을 먼저 보고 오도록하자.
[php&mysql] 로그인&회원가입 만들기(1-1. 회원가입)
php는 별도의 서버가 있어야 확인이 가능하다. 아니면 문서편집만 가능하다. 나는 xampp로 일단 가상서버를 셋팅해둔상태다. 별도의 서버가 없으면 윈도우에 아파치 가상서버/php/mysql 설치[XAMPP] 심
ssal-muk.tistory.com
잡소리 그만하고 이제 포스팅 시작.
현재 폴더의 구조이다.
내 경로를 따라해도 되고 본인이 편한 경로를 만들어도 상관없다.
나도 그냥 포스팅용으로 대충 만든거고 실제 작업할땐 저렇게 만들지 않는다;
일단 회원가입창에 중복검사를위한 버튼을 추가하고, 각 input 태그에 required를 추가해줬다.
그리고 버튼을 클릭했을때 중복확인을 위해 실행될 스크립트를 입력해줬다.
난 제이쿼리로 처리할꺼라 제이쿼리 cnd도 추가했다.
<html>
<head>
<title>회원가입</title>
</head>
<body>
<form action="process/join.php" method="post">
아이디 : <input type="text" name="mb_id" required> <button type="button" id="check_id">중복확인</button><br>
비밀번호 : <input type="password" name="mb_pw" required> <br>
이름 : <input type="text" name="mb_name" required> <br>
<button class="submit">회원가입</button>
</form>
<script>
$("#check_id").click(function(){
var uid = $("input[name='mb_id']").val();
if(uid){
window.open('process/check_id.php?uid='+uid,"chkid","width=400,height=200");
} else {
alert("아이디를 입력해주세요.");
}
})
</script>
</body>
</html>
버튼을 클릭하면 아이디값이 있으면 process/check_id.php의 새 창이 열고, 값이 없으면 아이디를 입력하라는 메시지가 출력되게 설정해준다.
그리고 process 폴더에 check_id.php라는 파일을 생성해준다.
process/check_id.php
<?php
$mb_id = $_GET['uid'];
$db = mysqli_connect('localhost', 'test', 'test', 'test'); // 호스트, mysql유저, mysql비번, 데이터베이스명
$sql = ('SELECT mb_id FROM test where mb_id="'.$mb_id.'"');
$ck_id = mysqli_query($db, $sql);
//중복확인
if($ck_id->num_rows){
?>
<?=$mb_id?>는 사용중인 아이디입니다.
<a onclick="window.close();">창닫기</a>
<?
} else {
?>
<?=$mb_id?>는 사용가능한 아이디입니다.
<a onclick="window.close();">창닫기</a>
<?
}
입력한 아이디를 get방식으로 받아와 유저 테이블에 방금 가져온 아이디가 있는 확인하고, 값이 있으면 사용중, 아니면 사용가능하다는 메시지를 출력해준다.
확인만하고 가입이되어버리면 곤란하므로 해당 코드를 회원가입 처리하는부분에도 가져와서 약간 수정을 해준다.
process/join.php
<?php
$mb_id = $_POST['mb_id']; //POST를통해 받아온 아이디
$mb_pw = $_POST['mb_pw']; //POST를통해 받아온 비밀번호
$mb_name = $_POST['mb_name']; //POST를통해 받아온 이름
$db = mysqli_connect('localhost', 'test', 'test', 'test'); // 호스트, mysql유저, mysql비번, 데이터베이스명
$sql = ('SELECT mb_id FROM test where mb_id="'.$mb_id.'"');
$ck_id = mysqli_query($db, $sql);
//중복확인
if($ck_id->num_rows){
echo "<script>alert('이미 사용중인 아이디입니다.');</script>";
echo "<script>history.back();</script>";
exit;
}
$sql = ('
INSERT INTO test
(mb_id, mb_pw, mb_name)
VALUES
( "'.$mb_id.'","'.$mb_pw.'","'.$mb_name.'")
');
$join = mysqli_query($db, $sql);
if($join){
echo "<script>alert('회원가입이 완료되었습니다.');</script>";
echo "<script>location.replace('/');</script>";
} else {
echo "<script>alert('회원가입이 실패했습니다.');</script>";
echo "<script>location.replace('/join.php');</script>";
}
중복이면 이미 사용중인아이디 알림을 띄우고 이전페이지로 돌아가게 설정해준다.
끗.