게시판을 만들어 보기 전에 마이페이지 먼저 만들어보도록 하겠습니다.
마이페이지는 데이터베이스에 있는 사용자의 정보를 출력해주고 수정할 수 있도록 만들어 보겠습니다.
<?php
require_once('views/includes/head.php'); // 중복되는 헤드 가져오기
require_once('models/user-model.php'); // user에 대한 함수 가져오기 (내가 만듦)
require_once('config/cookie.php'); // 쿠키에 관한 함수 가져오기 (내가 만듦)
?>
<link rel="stylesheet" href="static/css/mypage.css">
<title>Home</title>
</head>
<body>
<?php
$userId = getCookie($_COOKIE); // 쿠키를 넣어주면 쿠키에 포함되어있는 userid를 가져옴
$user = getUser($userId);?> // userid를 넣어주면 해당 user의 데이터를 가져옴
<section id="mypage">
<h1><?=$userId ?> Page</h1>
<hr style="width: 80%; margin: 1rem auto;">
<ul>
// user의 정보를 출력
<li>이름 : <?= $user['name'] ?></li>
<li>아이디 : <?= $user['id'] ?></li>
<li>이메일 : <?= $user['email'] ?></li>
<li>전화번호 : <?= $user['phone'] ?></li>
<li>생년월일 : <?= $user['birth'] ?></li>
</ul>
// 회원정보를 변경하고 싶을 때 링크 클릭 시 수정할 수 있는 페이지로 이동
<p id="edit"><a href="/mypage-edit.php" class="link-primary link-offset-2 link-underline-opacity-25 link-underline-opacity-100-hover">회원정보 변경</a></p>
</section>
</body>
</html>
위와 같이 작성하여 마이페이지를 만들어 주었습니다. <?= 변수 ?>를 넣어주면 php에서 생성한 변수를 html에서 출력할 수 있습니다.
이것을 통해 user 정보를 출력했습니다. 결과 페이지를 보겠습니다.
회원가입할 때 이름, 아이디, 이메일만 적어주었기 때문에 전화번호와 생년월일은 비어있습니다. 이것을 채워주기 위해 회원정보 변경에서 추가할 수 있도록 만들어 보겠습니다.
<?php
require_once('views/includes/head.php'); // 중복되는 헤드 가져오기
require_once('config/cookie.php'); // 쿠키에 관한 함수 가져오기 (내가 만듦)
require_once('models/user-model.php'); // user에 관한 함수 가져오기 (내가 만듦)
$userId = getCookie($_COOKIE); // 쿠키를 가져와 쿠키에 저장되어있는 userId를 가져오기
$user = getUser($userId); // userid를 넣으면 데이터베이스에서 user 데이터를 가져오기
?>
<link rel="stylesheet" href="static/css/signup.css">
<title>Sign Up</title>
</head>
<body>
<div class="card">
<div class="card-body">
<h2>마이페이지</h2>
<form method="post">
<div class="form-floating mb-3">
<input type="text" class="form-control" id="nameInput" name="name" placeholder="Name" value="<?= $user['name'] ?>" required>
<label for="nameInput">이름</label>
</div>
<div class="form-floating mb-3">
<input type="text" class="form-control" id="idInput" name="id" placeholder="Id" value="<?= $user['id'] ?>" required>
<label for="idInput">아이디</label>
</div>
<div class="form-floating mb-3">
<input type="email" class="form-control" id="emailInput" name="email"
placeholder="name@example.com" value="<?= $user['email'] ?>" required>
<label for="emailInput">이메일</label>
</div>
<div class="form-floating mb-3">
<input type="text" class="form-control" id="phoneInput" name="phone" placeholder="phone" value="<?= $user['phone'] ?>" required>
<label for="phoneInput">전화번호</label>
</div>
<div class="form-floating mb-3">
<input type="date" class="form-control" id="birthInput" name="birth" placeholder="birth" value="<?= $user['birth'] ?>" required>
<label for="birthInput">생년월일</label>
</div>
<hr>
<div class="form-floating mb-3">
<input type="password" class="form-control" id="floatingPassword" name="confirmPassword"
placeholder="Password" required>
<label for="floatingPassword">비밀번호 확인</label>
</div>
<div>
<button type="submit" id="signup" class="btn btn-outline-primary">수정하기</button>
</div>
</form>
</div>
</div>
</body>
<?php
// post 메소드일 경우 회원정보를 수정할 코드 가져오기
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
require_once('mypage-editfunc.php');
}
?>
</html>
따로 설명할 것은 없고 input의 value값을 넣어주면 기본적으로 해당 값을 채워줍니다. value값에 각 맞는 user의 정보를 넣어 변경 시 현재 데이터베이스에 들어있는 정보를 채워 매 번 입력할 필요없게 만들어 주었습니다.
<?php
require_once('data/database.php');
$db_conn = connectDb(); // 데이터베이스 연결
if (!$db_conn) {
exit;
}
$enteredName = $_POST['name'];
$enteredId = $_POST['id'];
$enteredEmail = $_POST['email'];
$enteredPhone = $_POST['phone'];
$enteredBirth = $_POST['birth'];
$enteredConfirmPassword = $_POST['confirmPassword'];
// 비밀번호가 틀릴경우 수정할 수 없게 만들기
$hashedPassword = hash('sha256', $enteredConfirmPassword);
if ($user['password'] !== $hashedPassword) {
echo '비밀번호가 틀렸습니다.';
exit;
}
// 입력받은 정보를 update를 사용하여 데이터베이스 수정후 마이페이지로 이동
$query = "update users set name='$enteredName', id='$enteredId', email='$enteredEmail', phone='$enteredPhone', birth='$enteredBirth' where id='$userId'";
mysqli_query($db_conn, $query);
mysqli_close($db_conn);
header('location: mypage.php');
?>
post할 경우 실행할 코드입니다. 입력받은 정보로 비밀번호를 검사하고 비밀번호가 맞을 경우에만 회원정보를 수정할 수 있게 하였습니다.
저장되어있는 회원정보는 input안에 자동으로 채워져있는 것을 확인할 수 있습니다.
회원정보 수정도 정상적으로 작동하네요!!!
혹시나 따로 만든 user-model 함수와 cookie에 관한 함수가 궁금할 수 도 있으니 같이 올려놓겠습니다.
// cookie.php 함수
<?php
// 쿠키를 받아 쿠키안의 세션에서 userid를 가져오는 함수
function getCookie($cookie) {
$phpSessionId = $cookie['PHPSESSID'];
if ($phpSessionId) {
session_start();
if ($_SESSION['id']) {
$userId = $_SESSION['id'];
return $userId;
} else return false;
} else return false;
}
?>
//user-model.php
<?php
require_once('data/database.php');
// userid를 입력받아 userid의 데이터베이스안의 정보를 모두 가져오는 함수
function getUser($id) {
$db_conn = connectDb();
$query = "select * from users where id='$id'";
$result = mysqli_query($db_conn, $query);
return mysqli_fetch_array($result);
}
?>
다음에는 게시판을 만들어보겠습니다.
'웹 개발' 카테고리의 다른 글
웹 개발 공부 일기장 (게시판) (0) | 2024.01.08 |
---|---|
웹 개발 공부 일기장 (마이페이지 수정) (0) | 2023.12.25 |
웹 개발 공부 일기장 4 - 과제 (쿠키탈취 및 키로거) (0) | 2023.11.19 |
웹 개발 공부하기 4 - 과제 (자바스크립트) (0) | 2023.11.18 |
웹 개발 공부하기 4 - 3 (HTTP) (0) | 2023.11.17 |