본문 바로가기
IT/PHP

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

by Sungjun_ 2020. 2. 6.

저번에 이어서 오늘은 아이디 중복확인과 비밀번호 일치여부를 만들겠습니다.

 

먼저, 아이디 중복확인입니다.

 

저번 시간에 회원가입을 위해 만든 register.php <head> 부분에 <script>코드 부분을 추가해줍니다.

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="../css/default.css">
    <link rel="stylesheet" href="../css/style.css?ver=4">
    <script>
        function checkId() {
            window.open("checkId.php?userid=" + document.register.userid.value,"IDcheck","left=50, top=50, width=50, height=10, scrollbars=no, resizeable=no");
        }
    </script>
    <title>Sung's 영화 리뷰</title>
</head>

 

checkId라는 함수를 만들어서 중복확인 버튼을 누르면 아이디 중복여부를 보여주는 창을 보여줍니다.

 

그 다음 아래 쪽에 있는 <form> 태그 안에 코드를 추가합니다.

<form name="register" action="member_process.php?mode=register" method="post">

name = "register"를 추가힙니다.

checkId 함수 부분에서 document.register.userid.value 이 부분 때문에 넣은건데

form 태그 안에 name이 userid인 input 태그의 value 값을 가지고 오는 것입니다.

 

 

 

그 다음 아래와 같이 checkId.php 파일을 만들어줍니다.

 

<?php
    require_once('../db/db.php');
    $userid = $_GET['userid'];

    if(!$userid){
        echo "
        <p>아이디를 입력해주세요.</p>
        <center><input type=button value=창닫기 onclick='self.close()'></center>
        ";
    } else{
        $sql = $db -> prepare("SELECT * FROM register WHERE userid=:userid");
        $sql -> bindParam(':userid',$userid);
        $sql -> execute();
        $count = $sql -> rowCount();

            if($count<1){
                echo "
                <p>사용 가능한 아이디입니다.</p>
                <center><input type=button value=창닫기 onclick='self.close()'></center>
                ";
            } else{
                echo "
                <p>이미 존재하는 아이디입니다.</p>
                <center><input type=button value=창닫기 onclick='self.close()'></center>
                ";
            }
    }
?>
<!DOCTYPE html>
<html lang="kor">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>중복확인</title>
</head>
</html>

 

먼저 require_once로 디비 파일과 연결시켜 주고

url로 받아오는 userid 값을 $_GET으로 받아 $userid 변수로 선언합니다.

 

첫 if 부분은 아이디를 입력하지 않았을 때 보여주는 창이고

else 부분은 select을 이용해 아이디의 존재 유무를 파악합니다.

 

두 번째 if 부분은 else 안에 넣고

count 된 것이 없으면 사용 가능한 아이디로, count 된 것이 있으면 사용할 수 없는 아이디로 보여줍니다.

 

 

 

이제 제대로 작동하는지 확인을 해봅시다.

 

먼저 아이디에 아무것도 입력하지 않은 상태로 중복확인을 눌러봅시다.

 

'아이디를 입력해주세요'가 정상적으로 뜨는 것을 확인할 수 있습니다.

 

 

그 다음은 저번에 만들었던 아이디를 입력해 중복 유무를 제대로 판단하는지 확인해봅시다.

 

존재하는 아이디라고 제대로 보여주네요.

 

마지막으로 새로운 아이디를 입력했을 때는

 

사용 가능한 아이디로 보여주는 것을 볼 수 있습니다.

 

 

마지막으로 비밀번호와 비밀번호 확인의 일치 여부입니다.

 

member_process.php 파일에

 

if($pw1 != $pw2){

            errMsg("비밀번호가 일치하지 않습니다.");

}

이 코드를 추가해 줍니다.

<?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);

        if($pw1 != $pw2){
            errMsg("비밀번호가 일치하지 않습니다.");
        }

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

if문 안에 보시면 errMsg가 있는데

 

저는 db.php 파일 안에

try {
        $db = new PDO($dns, $username,$pw);
    } catch (PDOException $th) {
        echo '접속실패 : ' . $th->getMessage();
    }

    function errMsg($msg){
        echo "<script>
            window.alert('$msg');
            history.back(1);
        </script>";
        exit;
    }

위와 같이 try, catch 아래에 errMsg 함수를 추가해 에러 창을 띄우는 함수를 만들었습니다.

 

 

이렇게 코드를 작성하시고

 

비밀번호를 서로 다르게 입력한 후에 가입을 누르면

 

 

이렇게 경고창이 보이고 확인을 누르면 다시 회원가입 창으로 돌아가는 것을 확인할 수 있습니다.

 

 

 

오늘은 이것으로 마치겠습니다.

 

 

 

 

 

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

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

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

댓글