php

조별작업 로그인과 회원가입 구현하기

Kim do hyun 2023. 5. 16. 14:12
728x90
반응형

로그인과 회원가입 구현

 

 

로그인

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PHP 영양많닭 로그인</title>
    <?php include "../include/head.php" ?>
</head>
<body>    
    <?php include "../include/header.php" ?>
    <!-- //header -->
    <div id="wrap">
        <div id="modal">
            <div class="img1">
                <img src="../assets/img/Ximg.svg" alt="닫기">
            </div>
            <h2>LOGIN</h2>
            <div id="logo">
                <img src="../assets/img/logo.svg" alt="로고">
            </div>
            <div class="login__form">
                <form action="loginsave.php" name="loginSave" method="post">
                    <fieldset>
                        <legend class="blind">로그인 영역</legend>
                        <div class="user-box">
                            <label for="youID">아이디</label>
                            <input type="youID" id="youID" name="youID" placeholder="아이디" required>
                        </div>
                        <div  class="user-box">
                            <label for="youPass">비밀번호</label>
                            <input type="password" id="youPass" name="youPass" placeholder="비밀번호" required>
                        </div>
                        <div class="option">
                            <li><a href="#">아이디 찾기</a></li>
                            <li><a href="#">비밀번호 변경</a></li>
                            <li><a href="#">회원가입</a></li>
                        </div>
                        <button type="submit" class="button">로그인</button>
                    </fieldset>
                </form>
            </div>
        </div>
    </div>
    <!-- //main -->
    <?php include "../include/footer.php" ?>
    <!-- // footer -->
</body>
</html>

 

 

로그인 데이터 저장

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>로그인 세이브</title>
    <?php include "../include/head.php" ?>
</head>
<body class="gray">
    <!-- //skip -->
    <?php include "../include/header.php" ?>
    <!-- //header -->
    <main id="main">
<?php
    include "../connect/connect.php";
    include "../connect/session.php";

    $youID = $_POST['youID'];
    $youPass = $_POST['youPass'];

    // echo $youEmail, $youPass;
    //데이터 출력
    function msg($alert){
        echo "<p class = 'intro__text'>$alert</p>";
    }
    // 데이터 조회
    $sql = "SELECT memberID, youID, youName, youPass FROM members WHERE youPass = '$youPass' AND youID = '$youID'";
    $result = $connect -> query($sql);
    if($result){
        $count = $result -> num_rows;
        if($count == 0){
            msg("이메일 또는 비밀번호가 틀렸습니다. 다시 한번 확인해주세요!<br><div class='intro__btn'><a href='../login/login.php'>로그인</a></div>");
        } else {
            //로그인 성공
            $memberInfo = $result -> fetch_array(MYSQLI_ASSOC);
            echo "<pre>";
            var_dump($memberInfo);
            echo "</pre>";
            // 세션 생성
            $_SESSION['memberID'] = $memberInfo['memberID'];
            $_SESSION['youID'] = $memberInfo['youID'];  
            $_SESSION['youName'] = $memberInfo['youName'];
            Header("Location: ../main/main.php");
        }
    }
?>
        </div>
        <!-- //intro__inner  -->
    </main>
    <!-- //main -->
    <?php include "../include/footer.php" ?>
    <!-- // footer -->
</body>
</html>

 

 

회원가입

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <?php include "../include/head.php" ?>
</head>
<body>
    <?php include "../include/header.php" ?>
    <div id="modalwrap">
        <div id="modal">
            <div class="img1">
                <img src="../assets/img/Ximg.svg" alt="닫기">
            </div>
            <div class="img2">
                <img src="../assets/img/logo.svg" alt="로고">
            </div>
            <div class="Termsup__form">
                <form action="joinsave.php" name="join" method="post">
                    <fieldset>
                        <legend class="blind">회원가입 영역</legend>
                        <div class="item">
                            <div>
                                <label for="youEmail" class="required">이메일</label><br>
                                <input type="text" id="youEmail" name="youEmail" placeholder="이메일을 적어주세요!" required>
                            </div>
                            <div>
                                <label for="youID" class="required">아이디</label><br>
                                <input type="text" id="youID" name="youID" placeholder="아이디를 적어주세요!" required>
                            </div>
                            <div>
                                <label for="youPass" class="required">비밀번호</label><br>
                                <input type="password" id="youPass"  name="youPass" placeholder="비밀번호를 적어주세요!" required>
                            </div>
                            <div>
                                <label for="youPassC" class="required">비밀번호 확인</label><br>
                                <input type="password" id="youPassC"  name="youPassC" placeholder="다시 비밀번호를 적어주세요!" required>
                            </div>
                            <div>
                                <label for="youName" class="required">이름</label><br>
                                <input type="text" id="youName" name="youName" placeholder="이름을 적어주세요!" required>
                            </div>
                            <div>
                                <label for="youPhone" class="required">연락처</label><br>
                                <input type="text" id="youPhone"  name="youPhone" placeholder="연락처를 적어주세요!" required>
                            </div>
                        </div>
                        <button type="submit" class="button">가입하기</button>
                    </fieldset>
                </form>
            </div>
        </div>
    </div>
    <?php include "../include/footer.php" ?>
</body>
</html>

 

회원가입 데이터 저장

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>회원가입 완료페이지</title>
    <?php include "../include/head.php" ?>
</head>
<body class="gray"> 

    <?php include "../include/header.php" ?>
    <!-- //header -->

    <main id="main" class="container">
        <div class="intro__inner">
            <?php
                include "../connect/connect.php";

                $youEmail = $_POST['youEmail'];
                $youName = $_POST['youName'];
                $youID = $_POST['youID'];
                $youPass = $_POST['youPass'];
                $youPassC = $_POST['youPassC'];
                $youPhone = $_POST['youPhone'];
                $regTime = time();

                // echo $youEmail, $youName, $youPass, $youPhone;

                // $sql = "INSERT INTO yungyangMember(youEmail, youName, youPass, youPhone, regTime) VALUES('$youEmail','$youName', '$youPass', '$youPhone', '$regTime')";
                // $connect -> query($sql);

                //메세지 출력
                function msg($alert){
                    echo "<p class='intro__text'>$alert</p>";
                };

                //이메일 유효성 검사
                $check_mail = preg_match("/^[a-z0-9_+.-]+@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/", $youEmail);

                if($check_mail == false){
                    msg("이메일이 잘못되었습니다. 다시 한번 확인해주세요!");
                }

                //아이디 유효성 검사
                $check_ID = preg_match("/^[a-zA-Z0-9]+$/", $youID);

                if($check_ID == false){
                    msg("아이디 형식이 잘못되었습니다. 아이디는 영어와 숫자 조합만 가능합니다!");
                    exit;
                }

                //이름 유효성 검사
                $check_name = preg_match("/^[가-힣]{9,15}+$/", $youName);

                if($check_name == false){
                    msg("이름은 한글만 가능합니다. 또는 3~5글자만 가능합니다.");
                    exit;
                }

                //비밀번호 유효성 검사
                if($youPass !== $youPassC){
                    msg("비밀번호가 일치하지 않습니다. 다시 한번 확인해주세요!");
                    exit;
                }

                // $youPass = sha1($youPass);

                //휴대폰 번호 유효성 검사
                $check_number = preg_match("/^(010|011|016|017|018|019)-[0-9]{3,4}-[0-9]{4}$/", $youPhone);

                if($check_number == false){
                    msg("번호가 정확하지 않습니다. 올바른 번호(000-0000-0000) 형식으로 작성해주세요!");
                    exit;
                }

                // 이메일 중복 검사
                $isEmailCheck = false;
                
                $sql = "SELECT youEmail FROM yungyangMember WHERE youEmail = '$youEmail'";
                $result = $connect -> query($sql);

                if($result){
                    $count = $result -> num_rows;

                    if($count == 0){
                        $isEmailCheck = true;
                    } else {
                        msg("이미 회원가입이 되어 있습니다. 로그인 해주세요!");
                        exit;
                    }
                } else {
                    msg("에러발생1: 관리자에게 문의하세요!");
                    exit;
                }

                // 아이디 중복 검사
                $isIDCheck = false;
                
                $sql = "SELECT youID FROM yungyangMember WHERE youID = '$youID'";
                $result = $connect -> query($sql);

                if($result){
                    $count = $result -> num_rows;

                    if($count == 0){
                        $isIDCheck = true;
                    } else {
                        msg("이미 회원가입이 되어 있습니다. 로그인 해주세요!");
                        exit;
                    }
                } else {
                    msg("에러발생1: 관리자에게 문의하세요!");
                    exit;
                }

                // 핸드폰 중복 검사
                $isPhoneCheck = false;
                
                $sql = "SELECT youPhone FROM yungyangMember WHERE youPhone = '$youPhone'";
                $result = $connect -> query($sql);

                if($result){
                    $count = $result -> num_rows;

                    if($count == 0){
                        $isPhoneCheck = true;
                    } else {
                        msg("이미 회원가입이 되어 있습니다. 로그인 해주세요!");
                        exit;
                    }
                } else {
                    msg("에러발생2: 관리자에게 문의하세요!");
                    exit;
                }

                // 회원가입
                if($isEmailCheck == true && $isPhoneCheck = true){
                    // 데이터 입력하기
                    $sql = "INSERT INTO yungyangMember(youEmail, youID, youName, youPass, youPhone, regTime) VALUES('$youEmail', '$youID', '$youName', '$youPass', '$youPhone', '$regTime')";
                    $result = $connect -> query($sql);

                    if($result){
                        msg("회원가입을 축하합니다! 로그인 해주세요! <div class='intro__btn'><a href='../login/login.php'>로그인</a></div>");
                        exit;
                    } else {
                        msg("에러발생3: 관리자에게 문의하세요!");
                        exit;
                    }
                } else {
                    msg("이미 회원가입이 되어 있습니다. 로그인해주세요!");
                    exit;
                }


                
            ?>
        
        </div>
        <!-- intro__inner -->
    </main>
    <!-- //main -->   
</body>
</html>