본문 바로가기

개발과제

[노말틱 모의 해킹 취업반 10주차 개발과제 ] 마이페이지 개발

안녕하세요!

 

오늘은 마이페이지를 만들겠습니다. only_login 페이지에 마이페이지 버튼을 만들고

 

마이페이즈를 누르면은 개인 정보 확인, ID, PW 변경할 수 있게 하겠습니다!

 

시작하죠

.

.

.

.

.

.

only_login.php 페이지에 간단하게 버튼을 만들겟습니다.

 

        <form action="my_info.php">
            <p><input type="submit" value="마이페이지"></p>
        </form>

 

 

그리고 my-info.php을 만들고 늘 그랬다시피 html 구문에 DB 정보랑 세션 정보를 시작하겠습니다.

 

-my_info.php

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Welcome! HACKER!</title>
    </head>
    <body>
        <h1>MY PAGE!</h1>
        <p>
        <?php 
            include 'DB_INFO.php'; //데이터 베이스 정보

            //데이터베이스 연결
            $conn = mysqli_connect($host,$username,$password,$dbname); //로그인
            $conn_for_board = mysqli_connect($host,$username,$password,$db_board); //게시판

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



            session_start(); //세션 시작

            if(!isset($_SESSION['login_id'])) {
                //로그인하지 않은 사용자
                header("Location: login.php"); //login 화면으로 바꾼다
                exit(); //이 페이지를 바로 닫는다
            }

            echo "당신은 ", $_SESSION['login_id'], " 입니다";
        ?>
        </p>
        <p></p>
        <form action="process_logout.php" method="POST"> 
            <p><input type="submit" name="logout" value="로그아웃"></p>
        </form>

        <p></p>
        <form action="board.php">
            <p><input type="submit" value="메뉴"></p>
        </form>
        <?php //오류문 출력
                if (isset($_SESSION['write_error'])) {
                    echo $_SESSION['write_error'];
                    unset($_SESSION['write_error']);
                }
        ?>
    </body>
</html>

 

only_login.php 참고했습니다!

 

일단..

 

ID 변경할 수 있게 하겠습니다!

 

        <form action="change_id.php">
            <p><input type="submit" value="ID 수정하기"></p>
        </form>

 

버튼을 이렇게 구현하고 그다음으로 change_id.php을 짜겠습니다

 

그리고 text 태그를 2개 만들어서 기존 id 확인용, 변경할 id 작성하게 하겠습니다.

 

-change_id.php

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Welcome! HACKER!</title>
    </head>
    <body>
        <h1>MY PAGE!</h1>
        <p>
        <?php 
            include 'DB_INFO.php'; //데이터 베이스 정보

            //데이터베이스 연결
            $conn = mysqli_connect($host,$username,$password,$dbname); //로그인
           	$conn_for_board = mysqli_connect($host,$username,$password,$db_board); //게시판

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

            session_start(); //세션 시작

            if(!isset($_SESSION['login_id'])) {
                //로그인하지 않은 사용자
                header("Location: login.php"); //login 화면으로 바꾼다
                exit(); //이 페이지를 바로 닫는다
            }        
        ?>
        </p>
        <form action="change_id.php" method="GET"> 
            <p><input type="text" name="old_id" placeholder="기존 ID입력" required></p>
            <p><input type="text" name="new_id" placeholder="변경할 ID입력" required></p>
            <p><input type="submit" value="수정하기"></p>
        </form>

        
        <p></p>
        <form action="only_login.php">
            <p><input type="submit" value="메인으로 돌아가기"></p>
        </form>
    </body>
</html>

 

아! 그리고 제가 회원가입 할 때 required문을 안 적었드라고요! 그래서 null로 로그인이 가능했습니다...

그래서 추가해줬습니다. 총코드는 맨 밑에 있으니 확인하세요

.

.

.

.

 

그리고 난 뒤에 

 

old_id가 기존 id가 옳은지 세션ID와 비교하게 하겠습니다.

 

맞다면 데이터베이스 변경하는 sql문을 작성을 해서 new_id로 변경되게 하겠습니다.

 

        <?php
            //보안 검사
            $old_id = mysqli_real_escape_string($conn,filter_var(strip_tags($_GET['old_id']),FILTER_SANITIZE_SPECIAL_CHARS));
            $new_id = mysqli_real_escape_string($conn,filter_var(strip_tags($_GET['new_id']),FILTER_SANITIZE_SPECIAL_CHARS));

            if($_SESSION['login_id'] == $old_id) {
                //ID 변경, 게시물도 전부 id 수정
                $sql = "UPDATE LOGIN_INFO SET id='$new_id' WHERE id ='$old_id'";
                $sql_board = "UPDATE BOARD_INFO SET id='$new_id' WHERE id ='$old_id'";
				
                //세션 할당
                $_SESSION['login_id'] = $new_id;
                
                //sql 실행
                if(mysqli_query($conn,$sql)) {
                    $_SESSION['write_error'] = "ID가 수정 됬습니다!";
                } else {
                    //실패시
                    $_SESSION['write_error'] = '작성 중 오류가 발생하였습니다.';
                }
                //게시판sql 실행
                if(mysqli_query($conn_for_board,$sql)) {
                    $_SESSION['write_error'] = "ID가 수정 됬습니다!";
                } else {
                    //실패시
                    $_SESSION['write_error'] = '작성 중 오류가 발생하였습니다.';
                }
                
                //전 페이지로 이동
                header("Location : my_info.php");
                exit();

            } else {
                echo "ID가 틀립니다!";
            }
            
        ?>
        <p></p>
        <?php 
                if (isset($_SESSION['write_error'])) {
                    echo $_SESSION['write_error'];
                    unset($_SESSION['write_error']);
                }
        ?>

 

좋아요!

 

한 번 실행해보겠습니다.

 

4입니다

 

 

일부로 틀리게 적었습니다

 

 

한 번 실행해보겠습니다

 

 

잘 나오네요!

 

그리고 한 번 정상적으로 적오보겠습니다

 

 

과연?

 

잘 되네요!

 

그런데..

 

 

계속 저 오류문이 나오네요!

 

이 에러문을 없애겠습니다. $_GET 방식으로 데이터가 와야지만 sql 실행하게 하겠습니다.

 

        <?php
            if(isset($_GET['new_id']) && isset($_GET['old_id'])) {
                //보안 검사
                $old_id = mysqli_real_escape_string($conn,filter_var(strip_tags($_GET['old_id']),FILTER_SANITIZE_SPECIAL_CHARS));
                $new_id = mysqli_real_escape_string($conn,filter_var(strip_tags($_GET['new_id']),FILTER_SANITIZE_SPECIAL_CHARS));

                if($_SESSION['login_id'] == $old_id) {
                    //ID 변경, 게시물도 전부 id 수정
                    $sql = "UPDATE LOGIN_INFO SET id= '$new_id' WHERE id = '$old_id' ";
                    $sql_board = "UPDATE BOARD_INFO SET id='$new_id' WHERE id = '$old_id'";

                    //세션 할당
                    $_SESSION['login_id'] = $new_id;

                    //sql 실행
                    if(mysqli_query($conn,$sql)) {
                        $_SESSION['write_error'] = "ID가 수정 됬습니다!";
                    } else {
                        //실패시
                        $_SESSION['write_error'] = '작성 중 오류가 발생하였습니다.';
                    }

                    //게시판sql 실행
                    if(mysqli_query($conn_for_board,$sql_board)) {
                        $_SESSION['write_error'] = "ID가 수정 됬습니다!";
                    } else {
                        //실패시
                        $_SESSION['write_error'] = '작성 중 오류가 발생하였습니다.';
                    }
                
                    //전 페이지로 이동
                    header("Location: my_info.php");
                    exit();

                } else {
                    $_SESSION['write_error'] = 'ID가 틀립니다!';
                }
            }
        ?>
        <p></p>
        <?php 
                if (isset($_SESSION['write_error'])) {
                    echo $_SESSION['write_error'];
                    unset($_SESSION['write_error']);
                }
        ?>

이렇게요

 

깔끔!

 

좋아요! 이렇게 ID 변경을 마치고요

 

그리고 이제 PW로 넘어가겠습니다.

 

my_info.php에 PW수정하기 버튼 만들겠습니다.

 

 

        <form action="change_pw.php">
            <p><input type="submit" value="PW 수정하기"></p>
        </form>

 

 

그리고 change_pw.php을 만들고 일단 change_id.php을 그대로 복사 붙이기 하겠습니다.

 

그런데 여기서 게시판 데이터 베이스는 필요 없겠죠? 게시판 관련 된 건 전부 지우고 글씨 ID을 PW로 바꾸겠습니다

 

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Welcome! HACKER!</title>
    </head>
    <body>
        <h1>MY PAGE!</h1>
        <p>
        <?php 
            include 'DB_INFO.php'; //데이터 베이스 정보

            //데이터베이스 연결
            $conn = mysqli_connect($host,$username,$password,$dbname); //로그인
   
            //데이터베이스 오류시 종료
            if(mysqli_connect_errno()) {
                die("데이터 베이스 오류: ". mysqli_connect_error());
            }

            session_start(); //세션 시작

            if(!isset($_SESSION['login_id'])) {
                //로그인하지 않은 사용자
                header("Location: login.php"); //login 화면으로 바꾼다
                exit(); //이 페이지를 바로 닫는다
            }        
        ?>
        </p>
        <form action="change_pw.php" method="GET"> 
            <p><input type="text" name="old_pw" placeholder="기존 PW입력" required></p>
            <p><input type="text" name="new_pw" placeholder="변경할 PW" required></p>
            <p><input type="submit" value="수정하기"></p>
        </form>
        
        <p></p>
        <form action="only_login.php">
            <p><input type="submit" value="메인으로 돌아가기"></p>
        </form>
        
        <?php
            if(isset($_GET['new_pw']) && isset($_GET['old_pw'])) {

            }
        ?>
        <p></p>
        <?php 
                if (isset($_SESSION['write_error'])) {
                    echo $_SESSION['write_error'];
                    unset($_SESSION['write_error']);
                }
        ?>
    </body>
</html>

 

그리고 if isset 에 작성하겠습니다! 우선 데이터베이스 통해 이 작성자의 pw을 가져와서 비교를 하겠습니다!

 

process_login.php에 있는 기능을 가져오면 되겠네요

 

-change_pw.php

 

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Welcome! HACKER!</title>
    </head>
    <body>
        <h1>MY PAGE!</h1>
        <p>
        <?php 
            include 'DB_INFO.php'; //데이터 베이스 정보

            //데이터베이스 연결
            $conn = mysqli_connect($host,$username,$password,$dbname); //로그인
   
            //데이터베이스 오류시 종료
            if(mysqli_connect_errno()) {
                die("데이터 베이스 오류: ". mysqli_connect_error());
            }

            session_start(); //세션 시작

            if(!isset($_SESSION['login_id'])) {
                //로그인하지 않은 사용자
                header("Location: login.php"); //login 화면으로 바꾼다
                exit(); //이 페이지를 바로 닫는다
            }        
        ?>
        </p>
        <form action="change_pw.php" method="GET"> 
            <p><input type="password" name="old_pw" placeholder="기존 PW입력" required></p>
            <p><input type="password" name="new_pw" placeholder="변경할 PW" required></p>
            <p><input type="submit" value="수정하기"></p>
        </form>
        
        <p></p>
        <form action="only_login.php">
            <p><input type="submit" value="메인으로 돌아가기"></p>
        </form>
        
        <?php
            if(isset($_GET['new_pw']) && isset($_GET['old_pw'])) {
                $login_id = $_SESSION['login_id'];                
                
                //PW 찾는 쿼리문
                $sql = "SELECT pw FROM LOGIN_INFO WHERE id='$login_id'";

                //쿼리 실행
                $result = mysqli_query($conn, $sql);

                //쿼리 실행 결과 확인
                if(mysqli_num_rows($result) > 0 ) { 
                    $row = mysqli_fetch_array($result)  ;
                    $hashed_pw = $row['pw']; //결과 배열 중 pw을 가져온다

                    //old_pw와 hashed_pw 비교
                    if(password_verify($old_pw,$hashed_pw)) {
                        //일치
                        
                        
                    } else {
                        //불일치
                        $_SESSION['write_error'] = "비밀번호가 일치하지 않습니다.";
                    }
                }
                
            }
        ?>
        <p></p>
        <?php 
                if (isset($_SESSION['write_error'])) {
                    echo $_SESSION['write_error'];
                    unset($_SESSION['write_error']);
                }
        ?>
    </body>
</html>

이제 if password_verify 문에 추가하겠습니다! UPDATE이용하여 새로운 비밀번호 입력 하되 해싱된 비밀번호를요!

 

해싱하는 방법은 process_join.php에 가져오면 되겠죠

 

        <?php
            if(isset($_GET['new_pw']) && isset($_GET['old_pw'])) {
                $login_id = $_SESSION['login_id'];

                //PW 찾는 쿼리문
                $sql = "SELECT pw FROM LOGIN_INFO WHERE id='$login_id'";

                //쿼리 실행
                $result = mysqli_query($conn, $sql);

                //쿼리 실행 결과 확인
                if(mysqli_num_rows($result) > 0 ) { 
                    $row = mysqli_fetch_array($result)  ;
                    $hashed_pw = $row['pw']; //결과 배열 중 pw을 가져온다

                    //old_pw와 hashed_pw 비교
                    if(password_verify($_GET['old_pw'],$hashed_pw)) {
                        //일치시

                        //비밀번호는 해싱
                        $hashed_pw = password_hash($_GET['new_pw'], PASSWORD_DEFAULT);

                        $sql = "UPDATE LOGIN_INFO SET pw = '$hashed_pw' WHERE id = '$login_id' ";

                        //sql 실행
                        if(mysqli_query($conn,$sql)) {
                            $_SESSION['write_error'] = "PW가 수정 됬습니다!";
                        } else {
                            //실패시
                            $_SESSION['write_error'] = '작성 중 오류가 발생하였습니다.';
                        }
                        
                        //전 페이지로 이동
                        header("Location: my_info.php");
                        exit();                                            
                
                    } else {
                        //불일치
                        $_SESSION['write_error'] = "비밀번호가 일치하지 않습니다.";
                    }
                }
                
            }
        ?>

중간 php만 나오게 했습니다.

 

한 번 실행해 보겠습니다.

 

 

 

4321이였는데 1234로 바꿨습니다

 

잘 되네요!

 

한 번 일부로 틀리게 작성해 보겠습니다.

 

 

딱봐도 틀리게 생겼죠?

 

잘 되네요!

 

근데 비밀번호는 중요하잖아요? 그러니깐 GET방식을 POST 방식으로 바꾸겠습니다!

 

Form 메서드를 POST로 바꾸고  $_GET을 전부 POST로 바꾸면 됩니다!

 

 

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Welcome! HACKER!</title>
    </head>
    <body>
        <h1>MY PAGE!</h1>
        <p>
        <?php 
            include 'DB_INFO.php'; //데이터 베이스 정보

            //데이터베이스 연결
            $conn = mysqli_connect($host,$username,$password,$dbname); //로그인
   
            //데이터베이스 오류시 종료
            if(mysqli_connect_errno()) {
                die("데이터 베이스 오류: ". mysqli_connect_error());
            }

            session_start(); //세션 시작

            if(!isset($_SESSION['login_id'])) {
                //로그인하지 않은 사용자
                header("Location: login.php"); //login 화면으로 바꾼다
                exit(); //이 페이지를 바로 닫는다
            }        
        ?>
        </p>
        <form action="change_pw.php" method="POST"> 
            <p><input type="password" name="old_pw" placeholder="기존 PW입력" required></p>
            <p><input type="password" name="new_pw" placeholder="변경할 PW" required></p>
            <p><input type="submit" value="수정하기"></p>
        </form>
        
        <p></p>
        <form action="only_login.php">
            <p><input type="submit" value="메인으로 돌아가기"></p>
        </form>
        
        <?php
            if(isset($_POST['new_pw']) && isset($_POST['old_pw'])) {
                $login_id = $_SESSION['login_id'];

                //PW 찾는 쿼리문
                $sql = "SELECT pw FROM LOGIN_INFO WHERE id='$login_id'";

                //쿼리 실행
                $result = mysqli_query($conn, $sql);

                //쿼리 실행 결과 확인
                if(mysqli_num_rows($result) > 0 ) { 
                    $row = mysqli_fetch_array($result)  ;
                    $hashed_pw = $row['pw']; //결과 배열 중 pw을 가져온다

                    //old_pw와 hashed_pw 비교
                    if(password_verify($_POST['old_pw'],$hashed_pw)) {
                        //일치시

                        //비밀번호는 해싱
                        $hashed_pw = password_hash($_POST['new_pw'], PASSWORD_DEFAULT);

                        $sql = "UPDATE LOGIN_INFO SET pw = '$hashed_pw' WHERE id = '$login_id' ";

                        //sql 실행
                        if(mysqli_query($conn,$sql)) {
                            $_SESSION['write_error'] = "PW가 수정 됬습니다!";
                        } else {
                            //실패시
                            $_SESSION['write_error'] = '작성 중 오류가 발생하였습니다.';
                        }
                        
                        //전 페이지로 이동
                        header("Location: my_info.php");
                        exit();                                            
                
                    } else {
                        //불일치
                        $_SESSION['write_error'] = "비밀번호가 일치하지 않습니다.";
                    }
                }
                
            }
        ?>
        <p></p>
        <?php 
                if (isset($_SESSION['write_error'])) {
                    echo $_SESSION['write_error'];
                    unset($_SESSION['write_error']);
                }
        ?>
    </body>
</html>

이렇게요!

.

.

.

.

.

.

오늘은 이렇게 해서 id와 pw을 변경할 수 있는 마이페이지를 작성했습니다!

개인정보 나오게 하는 것은 세션 ID로 자신의 ID을 보이게 했습니다.

 

나중에 닉네임도 작성 가능하게 추가 코딩을 하겠습니다. 지금은 최소한 기능을 구현했다고 생각하시면 됩니다.

만약 닉네임도 추가하고 싶으면 phpmyadmin에 nickname 새로운 칼럼 만들고 회원가입 또는 마이 페이지에

닉네임 수정 가능 하게 UPDATE 문을 쓰면 되겠죠! 세션 ID로 데이터베이스에 일치한 ID 통해 가져오고요.

 

그리고 세션 ID을 표출하는 것 대신 nickname으로 바꾸기만 하면 되겠죠!

 

너무 단순한데 노동이라 이것은 나중에 추가할 때 그때 하겠습니다!

 

긴 글 읽어주셔서 감사합니다

.

.

.

.

.

.

 

-my_info.php

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Welcome! HACKER!</title>
    </head>
    <body>
        <h1>MY PAGE!</h1>
        <p>
        <?php 
            include 'DB_INFO.php'; //데이터 베이스 정보

            //데이터베이스 연결
            $conn = mysqli_connect($host,$username,$password,$dbname); //로그인
            $conn_for_board = mysqli_connect($host,$username,$password,$db_board); //게시판

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

            session_start(); //세션 시작

            if(!isset($_SESSION['login_id'])) {
                //로그인하지 않은 사용자
                header("Location: login.php"); //login 화면으로 바꾼다
                exit(); //이 페이지를 바로 닫는다
            }

            echo "당신은 ", $_SESSION['login_id'], " 입니다";
        ?>
        </p>
        <form action="change_id.php">
            <p><input type="submit" value="ID 수정하기"></p>
        </form>

        <form action="change_pw.php">
            <p><input type="submit" value="PW 수정하기"></p>
        </form>
        
        <p></p>
        <form action="process_logout.php" method="POST"> 
            <p><input type="submit" name="logout" value="로그아웃"></p>
        </form>
        
        <p></p>
        <form action="board.php">
            <p><input type="submit" value="메뉴"></p>
        </form>
        <?php //오류문 출력
                if (isset($_SESSION['write_error'])) {
                    echo $_SESSION['write_error'];
                    unset($_SESSION['write_error']);
                }
        ?>
    </body>
</html>

 

 

 

-change_pw.php

 

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Welcome! HACKER!</title>
    </head>
    <body>
        <h1>MY PAGE!</h1>
        <p>
        <?php 
            include 'DB_INFO.php'; //데이터 베이스 정보

            //데이터베이스 연결
            $conn = mysqli_connect($host,$username,$password,$dbname); //로그인
   
            //데이터베이스 오류시 종료
            if(mysqli_connect_errno()) {
                die("데이터 베이스 오류: ". mysqli_connect_error());
            }

            session_start(); //세션 시작

            if(!isset($_SESSION['login_id'])) {
                //로그인하지 않은 사용자
                header("Location: login.php"); //login 화면으로 바꾼다
                exit(); //이 페이지를 바로 닫는다
            }        
        ?>
        </p>
        <form action="change_pw.php" method="POST"> 
            <p><input type="password" name="old_pw" placeholder="기존 PW입력" required></p>
            <p><input type="password" name="new_pw" placeholder="변경할 PW" required></p>
            <p><input type="submit" value="수정하기"></p>
        </form>
        
        <p></p>
        <form action="only_login.php">
            <p><input type="submit" value="메인으로 돌아가기"></p>
        </form>
        
        <?php
            if(isset($_POST['new_pw']) && isset($_POST['old_pw'])) {
                $login_id = $_SESSION['login_id'];

                //PW 찾는 쿼리문
                $sql = "SELECT pw FROM LOGIN_INFO WHERE id='$login_id'";

                //쿼리 실행
                $result = mysqli_query($conn, $sql);

                //쿼리 실행 결과 확인
                if(mysqli_num_rows($result) > 0 ) { 
                    $row = mysqli_fetch_array($result)  ;
                    $hashed_pw = $row['pw']; //결과 배열 중 pw을 가져온다

                    //old_pw와 hashed_pw 비교
                    if(password_verify($_POST['old_pw'],$hashed_pw)) {
                        //일치시

                        //비밀번호는 해싱
                        $hashed_pw = password_hash($_POST['new_pw'], PASSWORD_DEFAULT);

                        $sql = "UPDATE LOGIN_INFO SET pw = '$hashed_pw' WHERE id = '$login_id' ";

                        //sql 실행
                        if(mysqli_query($conn,$sql)) {
                            $_SESSION['write_error'] = "PW가 수정 됬습니다!";
                        } else {
                            //실패시
                            $_SESSION['write_error'] = '작성 중 오류가 발생하였습니다.';
                        }
                        
                        //전 페이지로 이동
                        header("Location: my_info.php");
                        exit();                                            
                
                    } else {
                        //불일치
                        $_SESSION['write_error'] = "비밀번호가 일치하지 않습니다.";
                    }
                }
                
            }
        ?>
        <p></p>
        <?php 
                if (isset($_SESSION['write_error'])) {
                    echo $_SESSION['write_error'];
                    unset($_SESSION['write_error']);
                }
        ?>
    </body>
</html>

 

 

-change_id

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Welcome! HACKER!</title>
    </head>
    <body>
        <h1>MY PAGE!</h1>
        <p>
        <?php 
            include 'DB_INFO.php'; //데이터 베이스 정보

            //데이터베이스 연결
            $conn = mysqli_connect($host,$username,$password,$dbname); //로그인
            $conn_for_board = mysqli_connect($host,$username,$password,$db_board); //게시판

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

            session_start(); //세션 시작

            if(!isset($_SESSION['login_id'])) {
                //로그인하지 않은 사용자
                header("Location: login.php"); //login 화면으로 바꾼다
                exit(); //이 페이지를 바로 닫는다
            }        
        ?>
        </p>
        <form action="change_id.php" method="GET"> 
            <p><input type="text" name="old_id" placeholder="기존 ID입력" required></p>
            <p><input type="text" name="new_id" placeholder="변경할 ID,특수기호는 입력X" required></p>
            <p><input type="submit" value="수정하기"></p>
        </form>
        
        <p></p>
        <form action="only_login.php">
            <p><input type="submit" value="메인으로 돌아가기"></p>
        </form>
        
        <?php
            if(isset($_GET['new_id']) && isset($_GET['old_id'])) {
                //보안 검사
                $old_id = mysqli_real_escape_string($conn,filter_var(strip_tags($_GET['old_id']),FILTER_SANITIZE_SPECIAL_CHARS));
                $new_id = mysqli_real_escape_string($conn,filter_var(strip_tags($_GET['new_id']),FILTER_SANITIZE_SPECIAL_CHARS));

                if($_SESSION['login_id'] == $old_id) {
                    //ID 변경, 게시물도 전부 id 수정
                    $sql = "UPDATE LOGIN_INFO SET id= '$new_id' WHERE id = '$old_id' ";
                    $sql_board = "UPDATE BOARD_INFO SET id='$new_id' WHERE id = '$old_id'";

                    //세션 할당
                    $_SESSION['login_id'] = $new_id;

                    //sql 실행
                    if(mysqli_query($conn,$sql)) {
                        $_SESSION['write_error'] = "ID가 수정 됬습니다!";
                    } else {
                        //실패시
                        $_SESSION['write_error'] = '작성 중 오류가 발생하였습니다.';
                    }

                    //게시판sql 실행
                    if(mysqli_query($conn_for_board,$sql_board)) {
                        $_SESSION['write_error'] = "ID가 수정 됬습니다!";
                    } else {
                        //실패시
                        $_SESSION['write_error'] = '작성 중 오류가 발생하였습니다.';
                    }
                
                    //전 페이지로 이동
                    header("Location: my_info.php");
                    exit();

                } else {
                    $_SESSION['write_error'] = 'ID가 틀립니다!';
                }
            }
        ?>
        <p></p>
        <?php 
                if (isset($_SESSION['write_error'])) {
                    echo $_SESSION['write_error'];
                    unset($_SESSION['write_error']);
                }
        ?>
    </body>
</html>

 

 

-join.php (수정내용: required 추가)

<!DOCTYPE html>
<html>
<head>
    <title>회원가입</title>
    <script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=c1f446298e730adc6c1b208150504fe2"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1>회원가입</h1>
    <form action="process_join.php" method="POST">
        <label>ID:</label>
        <input type="text" name="id" placeholder="특수기호 작성시 로그인 안되요" required><br><br>
        <label>비밀번호:</label>
        <input type="password" name="pw" required><br><br>
        <input type="text" name="address" id="address" readonly> <!-- 검색된 주소를 표시할 입력란 -->
        <button type="button" onclick="openAddressSearch()">주소 검색</button><br><br>
        <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>
    <script>
        function openAddressSearch() {
            new daum.Postcode({
                oncomplete: function(data) {
                    var fullAddress = data.address; // 선택한 주소 전체 주소 변수에 담기
                    document.getElementById('address').value = fullAddress; // 주소 입력란에 값 넣기
                }
            }).open();
        }
    </script>
    <script type="text/javascript" src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
</body>
</html>

 

아! 주소 검색을 API 말고 제가 직접 데이터베이스에 검색한 후에 가져오게 만들겠습니다!

그러니 이 join.php은 조만간 크게 바뀔 예정입니다.