오늘은 회원정보 수정 페이지를 만들겠습니다.
<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 -->
<?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 |
댓글