본문 바로가기
IT/PHP

PHP(3) 회원가입 페이지 만들기

by Sungjun_ 2020. 2. 2.

회원 가입 페이지를 만들어보겠습니다.

저는 디렉토리 안에 member 폴더를 만들어 그 안에 register.php 파일을 만들었습니다.

 

register.php

그 후 회원가입 양식을 만들어줍니다.

 

register.php

<section>
        <div class="mainCon">
            <div class="registerTitle">회원가입</div>
            <div class="registerBox">
            <form action="member_process.php?mode=register" method="post">
                <input type="hidden" name="id" value="register">
                <table class="registerTable">
                    <tr>
                        <td>아이디</td>
                        <td><input type="text" name="userid" required></td>
                        <td><input type="button" value="중복확인"></td>
                    </tr>
                    <tr>
                        <td>비밀번호</td>
                        <td><input type="password" name="pw1" required></td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>비밀번호 확인</td>
                        <td><input type="password" name="pw2" required></td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>이름</td>
                        <td><input type="text" name="name" required></td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>성별</td>
                        <td><input type="checkbox" name="sex" value="male" checked>남&nbsp;&nbsp;
                        <input type="checkbox" name="sex" value="female">여</td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>전화번호</td>
                        <td><input type="text" name="tel" placeholder="010-1234-5678"></td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>이메일</td>
                        <td><input type="text" name="email" required></td>
                        <td></td>
                    </tr>
                </table>
                <div class="registerSubmit">
                    <input type="submit" value="가입"></input>
                    <button onClick="history.back(-1)">취소</button>
                </div>
            </form>
            </div>
        </div>
    </section>

form 태그 안 action 부분에 member_process.php?mode=register 이렇게 입력해 놨는데, 이건 뒷부분을 보시면 됩니다.

 

 

기본 회원가입 양식을 만들었으니 회원가입 시 입력한 데이터를 받아 데이터 베이스에 저장 시킬 페이지를 만들어야겠죠?

 

member폴더 안에 member_process.php 파일을 만들어줍니다.

 

member_process.php 파일을 DB와 연결시켜야 하니 아래 그림과 코드를 작성하여 DB 파일을 불러옵니다.

<?php
    require_once('../db/db.php');
    
?>

 

그럼 member_process.php 페이지에

 

위와 같이 접속 성공 메세지가 뜨는 것을 확인할 수 있습니다.

 

저는 저 문구가 보기 싫어서 db.php 파일안에서 try 부분에 있는 echo 문을 지우도록 하겠습니다.

저 처럼 삭제하신분은 빈화면이 나오시면 정상입니다.

 

저는 Switch문을 사용해 register.php에서 보낸 데이터를 받겠습니다.

register.php에서 form 태그에서 action="member_process.php?mode=reigster"

이렇게 사용한 이유는 Switch 문을 사용하기 위해서 입니다.

member_process.php 파일은 앞으로 회원가입, 로그인, 로그아웃 등에 쓰일 예정으로

그 때마다 mode값으로 register, login, logout 등을 받아 switch 문에 사용될 예정입니다.

 

다시 본론으로 돌아와 아래와 같이 스위치 문을 만들어 줍니다.

<?php
    require_once('../db/db.php');

    switch ($_GET['mode']){
        case 'register':
        
        
        break;
    }
?>

mode 값을 url(?)상으로 받아 $_POST가 아닌 $_GET으로 값을 받습니다.

 

그러면 Switch문에 값으로 reigster가 들어와 case: 'register'를 실행합니다.

 

register.php에서 보내는 데이터는 input 태그 안에있는 name을 보시면 되는데

'id, userid, pw1, pw2, name, sex, tel, email' 을 POST 방법으로 member_process.php로 보냅니다.

 

보내온 데이터를 case:reigster 안에 변수로 선언해줍니다.

 

<?php
    require_once('../db/db.php');

    switch ($_GET['mode']){
        case 'register':
        $id = $_POST['id'];
        $userid = $_POST['userid'];
        $pw1 = $_POST['pw1'];
        $pw2 = $_POST['pw2'];
        $name = $_POST['name'];
        $sex = $_POST['sex'];
        $tel = $_POST['tel'];
        $email = $_POST['email'];

        
        break;
    }
?>

데이터가 제대로 전달 됐는지 확인해보겠습니다.

 

register.php에서 만든 회원가입 양식에 값을 넣어 member_process.php로 보내봅시다.

(중복확인은 후에 구현할 것이니 신경쓰지 말아주세요.)

 

일단 위와 같이 양식을 채워줍니다.

데이터를 보내기전에 member_process.php 안에 받은 데이터를 출력시킬 echo 문을 만들어줍니다.

<?php
    require_once('../db/db.php');

    switch ($_GET['mode']){
        case 'register':
        $id = $_POST['id'];
        $userid = $_POST['userid'];
        $pw1 = $_POST['pw1'];
        $pw2 = $_POST['pw2'];
        $name = $_POST['name'];
        $sex = $_POST['sex'];
        $tel = $_POST['tel'];
        $email = $_POST['email'];

        echo $id.','.$userid.','.$pw1.','.$pw2.','.$name.','.$sex.','.$tel.','.$email;
        break;
    }
?>

이렇게 작성하고 이제 가입을 눌러주시면

 

전송 결과

위와 같이 register.php에서 보낸 8개의 값이 제대로 온 것을 확인할 수 있습니다.

 

이제 DB에 회원가입 데이터를 저장한 테이블을 만들어보겠습니다.

 

 

MySQL Workbench에서 각자 만든 DB에 접속해 위에 표시한 버튼을 눌러 테이블을 만들어 줍니다.

 

위와 같이 테이블을 만들어주시면 됩니다.

no은 1부터 시작해 데이터가 들어올때마다 자동으로 1씩 증가합니다. 따로 값을 보내지 않아도 됩니다.

 

다시 member_process.php로 돌아와 DB로 데이터를 보내봅시다.

일단 위에서 데이터가 제대로 보내지는지 확인하기 위해 작성한 echo문은 삭제해줍시다.

그리고 아래와 같이 코드를 입력해줍니다.

<?php
    require_once('../db/db.php');

    switch ($_GET['mode']){
        case 'register':
        $id = $_POST['id'];
        $userid = $_POST['userid'];
        $pw1 = $_POST['pw1'];
        $pw2 = $_POST['pw2'];
        $name = $_POST['name'];
        $sex = $_POST['sex'];
        $tel = $_POST['tel'];
        $email = $_POST['email'];
        
        $sql = $db -> prepare('INSERT INTO register
        (id, userid, pw, name, sex, tel, email, redate) /*이 부분은 DB 테이블에서 만든 이름과 똑같이 입력해줍니다.*/
        VALUE(:id, :userid, :pw, :name, :sex, :tel, :email, now())');

        $sql -> bindParam(':id',$id);
        $sql -> bindParam(':userid',$userid);
        $sql -> bindParam(':pw',$pw1);
        $sql -> bindParam(':name',$name);
        $sql -> bindParam(':sex',$sex);
        $sql -> bindParam(':tel',$tel);
        $sql -> bindParam(':email',$email);

        $sql -> execute();
        
        header('location:../main.php');
        break;
    }
?>

 

prepare()안에 있는 SQL 명령문은 검색을 통해 사용법을 알아보세요!

 

$sql -> bindParam 이 부분은 DB 테이블에서 정의한 각각의 콜룸에 값을 지정해준다고 생각하시면 되고,

 

$sql -> execute(); 를 통해 DB로 값을 보내줍니다.

 

header(); 부분은 가입 완료시 메인 페이지로 돌아가게 해놓은 것입니다.

 

 

register.php 돌아가 회원가입을 진행하고 가입 버튼을 눌러주세요.

저와 똑같이 코트를 작성하셨다면 메인 페이지가 나올 것입니다.

 

그리고 MySQL Workbench로 가서

 

 

표시한 부분을 누르면

아래와 같이 DB에 잘 저장된것을 확인 할 수 있습니다.

no의 값이 1이실텐데 저는 한번 실행했다가 데이터를 삭제해서 2가 나오는거니 신경쓰지 않으셔도 됩니다.

 

 

다음에는 아이디 중복확인, 비밀번호 일치 유무를 이어서 만들겠습니다.

 

 

# Visual Studio Code, Xampp, MySQL Workbench 환경에서 작성된 코드입니다.

'IT > PHP' 카테고리의 다른 글

PHP(6) 회원정보 수정  (0) 2020.02.09
PHP(5) 로그인, 로그아웃  (1) 2020.02.08
PHP(4) 회원가입 페이지 만들기  (0) 2020.02.06
PHP(2) DB생성 및 연결  (0) 2020.02.02
PHP(1) MAIN 페이지 만들기  (0) 2020.02.02

댓글