코딩/php

[php&mysql] 로그인&회원가입 만들기(1-2. 회원가입 아이디 중복확인)

쌀먹충 2024. 3. 4. 14:07
반응형

지난번 포스팅은 간단한 회원가입 폼 생성 및 디비 테이블 셋팅 및 등록에관한 내용을 다뤘다.

이번 포스팅은 지난 포스팅에 이어 이번엔 중복확인 기능을 만들꺼다.

 

코드는 지난 포스팅에서 조금 추가되는 부분이 있다.

워낙 쉬운 코드라 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>";
}

 

중복이면 이미 사용중인아이디 알림을 띄우고 이전페이지로 돌아가게 설정해준다.

 

끗.

반응형