본문 바로가기
IT/PHP

PHP(6) 회원정보 수정

by Sungjun_ 2020. 2. 9.

오늘은 회원정보 수정 페이지를 만들겠습니다.

 

<body>
    <header>
        <nav id="navBar">
            <div class="navBarCon">
                <div class="navBarleft">
                    Sung's 영화 리뷰
                </div>
                <div class="navBarItem">
                    <ul>
                        <a href="main.php"><li>홈으로</li></a>
                        <a href="border/review.php"><li>리뷰 보기</li></a>
                    </ul>
                </div>
                <div class="navBarRight">
                    <div class="navBarLogin">
                        <?php if(!isset($_SESSION['userid'])){
                            echo '<a href="member/login.php">로그인</a>';
                        } else {
                        echo '<div class="helloUser">'.$_SESSION['name'].'님 환영합니다.</div>';
                        echo '<div class="outAndUpdate"><a href="member/member_process.php?mode=logout">로그아웃</a> | 
                        <a href="member/update.php">정보수정</a>
                        </div>';
                        }
                        ?>   
                    </div>
                </div>
            </div>
        </nav>
    </header>

 

그리고 member 폴더 안에 update.php 파일을 만들어줍니다.

 

 

그리고 아래와 같이 기본 코드를 작성해줍니다.

<!-- update.php -->
<?php
 session_start();
?>
<!DOCTYPE html>
<html>
<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=8">
    <title>Sung's 영화 리뷰</title>
</head>
<body>
    <header>
    <nav id="navBar">
            <div class="navBarCon">
                <div class="navBarleft">
                    Sung's 영화 리뷰
                </div>
                <div class="navBarItem">
                    <ul>
                        <a href="../main.php"><li>홈으로</li></a>
                        <a href="../border/review.php"><li>리뷰 보기</li></a>
                    </ul>
                </div>
                <div class="navBarRight">
                    <div class="navBarLogin">
                        <?php if(!isset($_SESSION['userid'])){
                            echo '<a href="login.php">로그인</a>';
                        } else {
                        echo '<div class="helloUser">'.$_SESSION['name'].'님 환영합니다.</div>';
                        echo '<div class="outAndUpdate"><a href="member_process.php?mode=logout">로그아웃</a> | 
                        <a href="update.php">정보수정</a>
                        </div>';
                        }
                        ?>   
                    </div>
                </div>
            </div>
        </nav>
    </header>
    <section>
    	<div class="mainCon">
            
        </div>
    </section>
    <footer></footer>
</body>
</html>

 

그러면 아래와 같이 화면이 나올겁니다.

 

update.php

 

 

이제 회원정보를 화면에서 표시해보겠습니다.

<!-- update.php -->
<?php
    session_start();
    require_once("../db/db.php");
    
    $sql = $db -> prepare("SELECT * FROM register WHERE userid=:userid");
    $sql -> bindParam("userid",$_SESSION['userid']);
    $sql -> execute();
    $row = $sql -> fetch();
?>
<!DOCTYPE html>
<html>
<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=12">
    <title>Sung's 영화 리뷰</title>
</head>
<body>
    <header>
    <nav id="navBar">
            <div class="navBarCon">
                <div class="navBarleft">
                    Sung's 영화 리뷰
                </div>
                <div class="navBarItem">
                    <ul>
                        <a href="../main.php"><li>홈으로</li></a>
                        <a href="../border/review.php"><li>리뷰 보기</li></a>
                    </ul>
                </div>
                <div class="navBarRight">
                    <div class="navBarLogin">
                        <?php if(!isset($_SESSION['userid'])){
                            echo '<a href="login.php">로그인</a>';
                        } else {
                        echo '<div class="helloUser">'.$_SESSION['name'].'님 환영합니다.</div>';
                        echo '<div class="outAndUpdate"><a href="member_process.php?mode=logout">로그아웃</a> | 
                        <a href="update.php">정보수정</a>
                        </div>';
                        }
                        ?>   
                    </div>
                </div>
            </div>
        </nav>
    </header>
    <section>
        <div class="mainCon">
            <div class="updateTitle">회원정보</div>
            <form action="member_process.php?mode=update" method="post">
                <input type="hidden" name="userid" value="<?= $row['userid']?>">
                <table class="updateTable">
                    <tr>
                        <td>아이디</td>
                        <td><?= $row['userid'] ?></td>
                    </tr>
                    <tr>
                        <td>비밀번호</td>
                        <td><input type="password" name="pw1"></td>
                    </tr>
                    <tr>
                        <td>비밀번호 확인</td>
                        <td><input type="password" name="pw2"></td>
                    </tr>
                    <tr>
                        <td>전화번호</td>
                        <td><input type="text" name="tel" placeholder=<?= $row['tel']?>></td>
                    </tr>
                    <tr>
                        <td>이메일</td>
                        <td><?= $row['email'] ?></td>
                    </tr>
                </table>
                <div class="updateBtn">
                <input type="submit" value="수정">
                <input type="button" value="취소" onclick="history.back(1)">
                </div>
            </form>
        </div>
    </section>
    <footer></footer>
</body>
</html>

 

일단 update.php에 저렇게 코딩을 합니다.

먼저 가장 위쪽에서 userid를 받아 DB에서 usreid가 제 아이디인 sungs에 해당하는 값들을 가지고옵니다.

그리고 그 값들울 $row에 할당해 아이디와 전화번호, 이메일에 각각 넣어줍니다.

아이디와 이메일은 수정하지 않기 때문에 그대로 값을 넣어주었고

전화번호는 placeholder에 넣어 수정 전에 원래 사용하던 전화번호를 넣어주었습니다.

그리고 input hidden으로 userid 값을 member_process.php로 보내줍니다.

 

그럼 위와 같이 화면이 나올 것입니다.

 

 

이번에도 member_process.php에서 DB 수정 작업을 하기 때문에 

member_process.php에 case 'update'를 만들어줍시다.

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

case 'update':
            $userid = $_POST['userid'];
            $pw1 = $_POST['pw1'];
            $pw2 = $_POST['pw2'];
            $tel = $_POST['tel'];

            $stmt = $db -> prepare("SELECT * FROM register WHERE userid=:userid");
            $stmt -> bindParam("userid",$userid);
            $stmt -> execute();
            $user = $stmt -> fetch();

            $sql = $db -> prepare("UPDATE register set pw=:pw, tel=:tel WHERE userid=:userid");
            $sql -> bindParam("pw",$pw1);
            $sql -> bindParam("tel",$tel);
            $sql -> bindParam("userid",$userid);

            if(!$pw1 || !$pw2){
                errMsg("비밀번호를 입력해주세요.");
            } elseif($pw1 != $pw2){
                errMsg("비밀번호가 일치하지 않습니다.");
            } elseif($pw1 == $user['pw']){
                errMsg("이전 비밀번호와 같습니다.");
            } elseif (!$tel) {
                errMsg("전화번호를 입력해주세요.");
            }

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

 

먼저 update.php에서 post로 보내온 userid, pw1,pw2,tel을 각각 변수에 저장시켜줍니다.

이번에는 셀렉문과 업데이트문 2가지가 쓰였습니다.

먼저 셀렉문으로 register 테이블에서  userid가 sungs인 곳의 값들을 $user에 저장시켜줍니다.

그리고 업데이트 문으로 register 테이블에서 수정할 pw와 tel 지정해줍니다.

 

아래 if문은 비밀번호와 전화번호를 입력하지 않았을때 또는 비밀번호와 비밀번호 확인이 일치하지 않을 때

그리고 비밀번호가 이전 비밀번호와 같을 때 에러 메세지를 띄우게 하는 곳입니다.

 

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

비밀번호를 입력하지 않았을 때
전화번호를 입력하지 않았을 때
비밀번호가 일치하지 않을 때
이전 비밀번호와 같을 때

이제 기존 비밀번호가 1234인데 1235로 바꾸고 전화번호는 010-9876-5432 이렇게 바꿔보겠습니다.

 

이렇게 작성을 하고 수정을 누르고 DB를 확인해봅시다.

 

 

비밀번호와 전화번호가 제대로 바뀐 것을 알 수 있습니다.

 

그리고 정보 수정을 하면 다시 로그인하게

case 'update':
            $userid = $_POST['userid'];
            $pw1 = $_POST['pw1'];
            $pw2 = $_POST['pw2'];
            $tel = $_POST['tel'];

            $stmt = $db -> prepare("SELECT * FROM register WHERE userid=:userid");
            $stmt -> bindParam("userid",$userid);
            $stmt -> execute();
            $user = $stmt -> fetch();

            $sql = $db -> prepare("UPDATE register set pw=:pw, tel=:tel WHERE userid=:userid");
            $sql -> bindParam("pw",$pw1);
            $sql -> bindParam("tel",$tel);
            $sql -> bindParam("userid",$userid);

            if(!$pw1 || !$pw2){
                errMsg("비밀번호를 입력해주세요.");
            } elseif($pw1 != $pw2){
                errMsg("비밀번호가 일치하지 않습니다.");
            } elseif($pw1 == $user['pw']){
                errMsg("이전 비밀번호와 같습니다.");
            } elseif (!$tel) {
                errMsg("전화번호를 입력해주세요.");
            }

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

헤더 위에 session_unset()을 추가해줍시다.

 

다시 정보수정을 하고 로그인 표시가 뜨는지 확인해봅시다.

 

정보수정을 하고 수정을 클릭하면

메인 페이지로 돌아오고 오른쪽 상단에 로그인 표시가 뜨는 것을 확인할 수 있습니다.

 

그리고 바뀐 비밀번호로 로그인하면 정상적으로 로그인이 가능합니다.

 

 

 

 

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

 

 

 

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

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

PHP(8) 리뷰 작성하기  (0) 2020.02.13
PHP(7) 아이디/비밀번호 찾기  (0) 2020.02.12
PHP(5) 로그인, 로그아웃  (1) 2020.02.08
PHP(4) 회원가입 페이지 만들기  (0) 2020.02.06
PHP(3) 회원가입 페이지 만들기  (0) 2020.02.02

댓글