본문 바로가기

개발과제

[노말틱 모의 해킹 취업반 3주차 개발과제 (1/2)] 회원가입 만들기

회원가입을 할 때

ID 중복 검사 기능까지 넣겠습니다!

 

즉 ID, PW를 만들면 lOGIN_INFO 데이터베이스에 들어가지고

만들 때 ID 중복 검사까지 해주는 것까지 하겠습니다!

 

최종 코드는 아래에다가 적겠습니다.

.

.

.

.

우선 저는 join.php 회원가입하는 페이지를 만들겠습니다.

#sudo touch join.php

 

 

새로 온 신병이네요! 아무것도 없는

 

그리고 저는 로그인창에 회원가입 하는 버튼 새로 만들겠습니다.

 

이렇게요

 

 

깔끔하네요 좋아요! 싫다구요? 저랑 상관없죠!

 

 

이제 join.php 코드를 짜는데 label 함수 이용해서 input 앞에 뭘 적어야 되는지 적겠습니다!

그리고 id, pw 칸 따로 만들고 로그인화면으로 돌아가는 코드까지 짜겠습니다.

누르면 process_join.php(회원가입 해주는 용)로 적은 id와 pw를 POST방식으로 보내겠습니다.

 

 

session는 에러문 받게 하겠습니다

로그인 창에서 거의 베껴 왔습니다!

 

회원가입 과정을 하는 용도로 process_join.php 파일을 만들겠습니다!

 

#sudo touch process_join.php

 

만든 사진은 이제 생략하겠습니다!

 

그리고 process_join.php 작성을 하겠습니다!

 

별거 없는데 뭔가 잘 짜 보이네요

 

처음에 DB_INFO 정보랑 session 시작하고 $conn에 데이터베이스 연결하겠습니다

 

그리고 mysqli_real_escape_string으로 sql문으로 장난질(sql 인젝션 공격) 하는 걸 막겠습니다.

 

$check_id 와 result_id는 중복 ID 찾기 위한 코드입니다!

그리고 if else 문으로 중복 있으면 join_error 세션 통해 메시지 전달하겠습니다

 

$sql은 id와 pw을 데이터베이스에 넣는 sql문입니다!

마지막 란에 if else로 sql문 실행하게 했습니다.

 

그리고 이 과정 페이지는 보여줄 이유가 없죠! 그러니 마지막에 exit() 로 닫게 했습니다.

 

 

한번 실행해보겠습니다!

 

로그인 화면에 회원가입 버튼 눌러보겠습니다.

 

 

음.. 칸 정리는 나중에 미루죠!

 

 

ID: rerange 적고 보내보겠습니다

 

 

원래 있는 ID 입니다!

 

 

음 잘나오네요!

 

 

그리고 새로운 아이디로 작성해 보겠습니다!

ID:rerange3

 

 

회원가입!

 

 

 

됬네요!

 

이제 잘 들어갔는지 phpmyadmin통해 확인해보겠습니다.

 

잘 들어 와 있네요!

 

좋습니다 이렇게 ID 중복검사, 회원가입해 주는 기능까지! 코딩을 마치겠습니다.

.

.

.

.

여기서 질문이 있겠죠!

ID 중복 검사하는 버튼 만들어서 join페이지에 적은 글씨는 안 없어지게 못하나요?

 

가능합니다! 근데 새로운 함수를 알아야 합니다.

AJAX 요청이라는 기능입니다. 이 함수는 자바스크립트를 이용해야만 하고요.

 

이 함수는 웹 서버와 비동기적으로 통신하면서 ID 중복 검사를 수행하고

결과를 웹페이지에 동적으로 업데이트하는 방식이라고 합니다!

 

그러니깐 서버에 잠깐 접속해서 확인만 하고 나온 결과를 웹페이지에 추가해주는 것입니다.

 

이 기능은 다음에 구현하도록 하겠습니다! 이 기능 넣으면 복잡해지기 때문이죠!

.

.

.

.

.

.

글을 마치겠습니다 감사합니다!

 

-join.php

<!DOCTYPE html>
<html>
<head>
    <title>회원가입</title>
</head>
<body>
    <h1>회원가입</h1>
    <form action="process_join.php" method="POST">
        <label>ID:</label>
        <input type="text" name="id"><br><br> <!--id 작성 -->
        <label>비밀번호:</label>
        <input type="password" name="pw"><br><br> <!--pw 작성 -->
        <input type="submit" value="회원가입">
    </form>
    <form action="login.php" method="POST">
        <p><input type="submit" value="로그인하러 가기"></p> <!--로그인페이지로 -->
    </form>
    <p>
        <?php session_start();
                if (isset($_SESSION['join_error'])) {
                    echo $_SESSION['join_error'];
                    unset($_SESSION['join_error']);
                }
        ?>
    </p>
</body>
</html>

 

 

-process_join.php

 

<?php
    include 'DB_INFO.php'; //데이터 베이스 정보

    session_start(); //세션 시작

    //데이터베이스 연결
    $conn = mysqli_connect($host,$username,$password,$dbname);

    //데이터베이스 오류시 종료
    if(mysqli_connect_errno()) {
        die("데이터 베이스 오류: ". mysqli_connect_error());
    }

    //POST로 전달된 정보 받기
    $login_id = mysqli_real_escape_string($conn,$_POST['id']);
    $login_pw = mysqli_real_escape_string($conn,$_POST['pw']);

    //ID 중복 검사용 sql문
    $check_id = "SELECT id FROM LOGIN_INFO WHERE id='$login_id' ";

    //중복 검사 sql문 실행
    $result_id = mysqli_query($conn, $check_id);

    if(mysqli_num_rows($result_id) > 0 ) { 
        //중복이 있을때
        $_SESSION['join_error'] = '아이디가 중복입니다!';
        header("Location: join.php");
    } else {
        //중복이 아닐때
        //새로운 사용자를 데이터베이스에 삽입문
        $sql = "INSERT INTO LOGIN_INFO (id, pw)
        VALUES ('$login_id','$login_pw')";

        //sql문 실행
        if(mysqli_query($conn,$sql)) {
            $_SESSION['join_error'] = '회원가입이 완료되었습니다!';
            header("Location: join.php");
        } else {
            $_SESSION['join_error'] = '회원가입 오류가 발생하였습니다.';
            header("Location: join.php");
        }

    }

    //회원가입 후 닫기
    exit();
?>

 

-login.php

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>HAPPY HACKING!</title>
    </head>
    <body>
        <h1>Login</h1>
        <form action="process_login.php" method="POST"> 
            <p><input type="text" name="id" placeholder="ID입력"></p>
            <p><input type="text" name="pw" placeholder="PW입력"></p>
            <p><input type="submit" value="로그인하기"></p>
        </form>
        <form action="join.php"> 
            <p><input type="submit" value="회원가입"></p>
        </form>
        <p>
        <?php session_start();
                if (isset($_SESSION['login_error'])) {
                    echo $_SESSION['login_error'];
                    unset($_SESSION['login_error']);
                }
        ?>
        </p>
    </body>
</html>