반응형

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

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

 

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

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

 

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

 

끗.

반응형

'코딩 > php' 카테고리의 다른 글

[php&mysql] 로그인&회원가입 만들기(1-1. 회원가입)  (1) 2024.02.27
반응형

php는 별도의 서버가 있어야 확인이 가능하다.

아니면 문서편집만 가능하다.

 

나는 xampp로 일단 가상서버를 셋팅해둔상태다.

 

별도의 서버가 없으면 

 

윈도우에 아파치 가상서버/php/mysql 설치[XAMPP]

심심해서 내 사이트나 만들어보기로 했다. 서버셋팅은 귀찮으니 일단 가상서버 설치해서 만들어놓고 이정도면 옮겨도 되겠다 싶으면 컴퓨터 하나 밀고 리눅스 깔아서 해보려고한다. 그러니 일

ssal-muk.tistory.com

해당 포스팅을 참고해서 셋팅부터 하고오자!

 

우선 아이디가 있어야 로그인을 할 수 있으니 회원가입부터.

귀찮으니 아이디, 비번, 이름정도만 받기로 하자.

필요하면 방식은 같으니 나중에 차차 추가하면 된다.

 

일단 가입 폼부터 만들어주자.

 

join.php

 

<html>
    <head>
        <title>로그인</title>
    </head>
    <body>
        <form action="process/join.php" method="post">
            아이디 : <input type="text" name="mb_id"> <br>
            비밀번호 : <input type="password" name="mb_pw"> <br>
            이름 : <input type="text" name="mb_name"> <br>
            <button class="submit">회원가입</button>
        </form>
    </body>
</html>

 

이렇게 입력한다

짧게 설명하면

action은 해당 form이 처리될 위치

method는 form의 값을 보내는 방식이다.

 

 

이렇게 나온다.

퍼블리싱은 각자 알아서 예쁘게 잘 하길 바란다.

 

다음은 db

phpmyadmin으로 이동해서 데이터베이스, 사용자를 생성하고 테이블을 만들꺼다.

 

 

메인에서 사용자 계정 클릭

 

사용자 추가

 

사용자명 암호 대충 맘대로 생성하고 동명의 데이터베이스를 생성하고 모든 권한을 부여 체크

호스트명은 어차피 현재는 가상서버고 외부에서 접속할 방법도 없기때문에 굳이 손 안대도 된다.

 

확인버튼을 누르면 데이터베이스/사용자가 추가되고 방금 생성한 데이터베이스로 이동된다.

 

데이터베이스에 테이블이 없다.

만들자

회원정보를 담을꺼니 member로 대충 지었다.

컬럼은 4개.

번호, 아이디, 비번, 이름

 

각각 이름 종류 길이를 입력해준다

int는 숫자

varchar은 문자열이다.

mb_pw의 길이가 255인 이유는 나중에 암호화를 할꺼기때문에.

근데 지금 이 포스팅에서 다루지는 않을꺼다.

 

no에는 A.I라고 된곳에 체크를 해준다.

그러면 데이터가 추가될때마다 자동으로 숫자를 세어줄꺼다.

 

다 입력했으면 저장을 눌러준다.

 

다시 에디터로 돌아가서

이젠 아까 만든 폼을 처리해줄 페이지를 만들어준다.

 

나는 process라는 폴더를 만들고 그 안에 join.php라는 파일을 생성했다.

 

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 = ('
    INSERT INTO 테이블명
    (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>";
}

 

받아온 post값을 각각 변수에 저장해줬다.

혹시 모르는사람을 위해 설명을 덧붙이자면 $_POST 안의 대괄호 값은 input에 썼던 name값이다.

mysqli_connect에 디비 연결을 위한 호스트, 유저명, mysql 비번, 데이터베이스명을 입력해준다.

난 어차피 가상서버니 localhost

 

post로 받아온 값을 변수에 담아서 $sql이라는 변수에 쿼리문을 넣었다.

굳이 변수에 담은 이유는 가독성때문이니 그냥 변수 대신 $_POST['mb_id'] 이런식으로 넣어줘도 상관없다.

 

mysqli_query()을 굳이 $join 변수에 담은 이유는 해당 함수는 실행되면 true, 실행되지않으면 false를 반환하기때문에 가입처리가 정상적으로 됐는지 확인하기 위함이다.

굳이 변수에 안담고 mysqli_query($db,$sql); 이렇게만 써도 작동은 된다.

 

이거 보고 따라하는 사람중에 그냥 복붙만 했다면 mysqli_connect값만 잘 넣어줘도 실행될꺼다.

 

조건문을 통해 $join이 정상적으로 실행됐으면 true를 반환했을테니 회원가입 완료, 뭔가 잘못됐다면 false를 반환하고 실패 메시지가 뜰꺼다.

 

이제 잘 작동 하는지 테스트해보자.

 

가입 됐다.

 

디비가 잘 들어왔는지도 확인해보자.

 

잘 들어 왔다.

회원가입은 대충 끝났다.

 

하지만 이상태로는 같은아이디로 중복가입이 가능하니,

다음 포스팅에서 아이디가 중복되면 가입이 안되게끔 막는걸 알아보도록하자.

반응형

+ Recent posts