안녕하세요. 코딩을 독학하고 있는 정호빈입니다.
이전에 로그인환경을 구현해보았는데요 이어서 로그인이 완료되면 정보를 수정할 수 있다면 좋을 것입니다. 그래서 정보수 정과정을 추가로 구현해보았습니다. 이전 과정이 궁금하시다면 아래 링크를 참조해주세요.
https://seongjangjhb.tistory.com/32
로그인을 마친 기본화면이였습니다.
로그인 화면에서 정보 수정 버튼을 클릭해보겠습니다.
현재 자신의 정보가 뜨는 것을 볼 수 있고, 해당 정보들은 로그인할 때 쿠키로 다 받아왔었기 때문에 그 부분을 출력하도록 하였습니다. 코드를 살펴보겠습니다.
modify.php입니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="model2.css">
<title>정보수정</title>
</head>
<body>
<h1 class="title"><?= $_COOKIE['nickname'] ?>님의 정보</h1>
<div class="main_login">
<form action="modifydata.php" method="POST">
<br>이름<br><br>
<?= $_COOKIE['name'] ?><br><br>
아이디<br><br>
<?= $_COOKIE['userid'] ?><br><br>
현재 비밀번호<br><br>
<input class="input1" type="password" name="oldpw"><br><br>
새로운 비밀번호<br><br>
<input class="input1" type="password" name="newpw"><br><br>
email<br>
<input class="input1" type="text" name="newemail" value="<?= $_COOKIE['email'] ?>"><br><br>
닉네임<br>
<input class="input1" type="text" name="newnick" value="<?= $_COOKIE['nickname'] ?>"><br><br>
전화번호<br>
<input class="input1" type="text" name="newnumber" value="<?= $_COOKIE['phone'] ?>"><br><br>
<p>
<input class="submit1" style='cursor:pointer' type="submit" value="수정">
</p>
<p>
<a href="index.php"><span class="a1">홈으로</span></a>
</p>
</form>
</div>
</body>
</html>
한번 전화번호와 이메일을 바꾸어 보겠습니다.
수정을 한 뒤에 정보 수정 버튼을 눌러보면 정보가 수정된 것을 알 수 있습니다. 바꾸고 싶지 않은 정보는 그대로 내버려두고 현재 비밀번호가 틀릴 시에는 수정이 이루어지지 않습니다. 새로운 비밀번호도 바꾸고 싶지 않다면 현재 비밀번호를 입력하도록 만들었습니다. 그러면 이 과정을 코드로 살펴보겠습니다.
modifydata.php입니다.
<?php
$oldpw = $_POST['oldpw'];
if (!(password_verify($oldpw, $_COOKIE['pw']))) {
?>
<script>
alert("비밀번호가 다릅니다.");
location.replace("modify.php");
</script>
<?php } else {
$pw = $_POST['newpw'];
$e_pw = password_hash($pw, PASSWORD_DEFAULT);
$email = $_POST['newemail'];
$phone = $_POST['newnumber'];
$nickname = $_POST['newnick'];
$id = $_COOKIE['userid'];
$conn = mysqli_connect('', '', '', '','');
$qry = "UPDATE logintest SET pw='{$e_pw}', email='{$email}',
phone='{$phone}', w_nickname='{$nickname}'
WHERE w_id='{$id}'";
if ($result = mysqli_query($conn, $qry)) {
setcookie('email', $email, time() + 10800);
setcookie('phone', $phone, time() + 10800);
setcookie('nickname', $nickname, time() + 10800);
setcookie('pw', $e_pw, time() + 10800);
echo "<script>alert('수정 성공')</script>";
echo "<script>location.replace('index.php')</script>";
} else {
switch (mysqli_errno($conn)) {
//아이디중복 1062
case 1062:
echo "<script>alert('중복된 닉네임 입니다.')</script>";
echo "<script>location.replace('modify.php')</script>";
break;
default:
echo "<script>alert('오류입니다. 다시 시도해주세요.')</script>";
echo "<script>location.replace('modify.php')</script>";
break;
}
}
}
?>
새롭게 바뀐 정보들을 다시 쿠키 정보에 삽입시켜주어서 정보가 바뀌도록 하였습니다. 새롭게 바뀐 정보들도 중복이 되면 안 되기 때문에 중복 코드를 검출하는 것까지 구현해보았습니다.
여기까지가 정보 수정 과정이었습니다. 다음에는 게시판을 구현해보도록 할 건데요 게시판은 공지 게시판으로 사용하기 위해 글쓰기는 마스터만 사용할 수 있도록 구현해보겠습니다. 감사합니다.
'백엔드 개발 > PHP' 카테고리의 다른 글
[PHP]PHP를 이용한 프로젝트 (추가) (0) | 2022.03.10 |
---|---|
[PHP]PHP를 이용한 게시판구현 (0) | 2022.02.14 |
[PHP]PHP를 이용한 로그인환경 구현 (0) | 2022.02.10 |
[PHP]PHP를 이용한 졸업작품 프로젝트 (0) | 2022.02.07 |
[PHP] 개발환경 설정 (0) | 2022.01.26 |