저번시간에는 게시글 검색기능을 구현하였습니다.
이번시간에는 마이페이지 안에서 내정보를 수정하고 비밀번호도 변경할 수 있는 페이지를 만들어보겠습니다.
기능 구현
mypage.php |
마이페이지는 이렇게 구성하였습니다.
내 정보를 수정해보겠습니다.
정보가 수정되면 알람이 뜬 후 mypage.php 로 이동하게 됩니다.
mypage.php(내 정보 수정후) |
|
비밀번호를 변경해주겠습니다.
비밀번호 변경 |
이후 인증절차를 거쳐 비밀번호가 변경됩니다.
인증절차를 통과시 비밀번호 변경후 세션은 폐기하고 index.php 로 돌아가게됩니다.
만약 인증절차에 통과를 못할시 index.php 로 이동하게 됩니다.
인증절차에 따른 알림 메세지 | |
인증통과(o) | 인증통과(x) |
코드설명
<mypage.php>
<?php
include 'dbcon.php';
session_start();
if(!($_SESSION['loggedin'])){ // 점프해서 mypage.php 로 오는것을 방지.
header('Location: /index.php');
exit();
}
$sql = "select myinfo from userlog where name='".$_SESSION['username']."'";
$result = mysqli_query($dbcon,$sql);
$row=mysqli_fetch_array($result);
?>
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="holygrail.css" rel="stylesheet" type = "text/css">
<link href="div.css" rel="stylesheet" type = "text/css">
<link rel="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
<title>마이페이지</title>
<style> /*a 태그 스타일시트*/
a:link {
color : black;
text-decoration-line: none;
}
a:hover{
text-decoration-line: underline;
}
</style>
</head>
<body>
<div class ="wrapper">
<header>
<div style="text-align: right ;font-weight:bold; transform:translate(-30px,30px)"><a href = "page.php">BACK</a></div>
<h1 style = "text-align:center ; color: #B86824; font-size:20px ; font-weight:medium"> MY PAGE </h1>
</header>
<nav>
<p style="text-align:center ; color: #B86824; font-size:20px ; font-weight:medium">My Info</p>
<div style="height:70%"><div class="login-box">
이미지 삽입
</div></div>
<div style= "transform:translate(0,-90px)">
<div style="text-align:center ; color: #B86824; font-size:20px ; font-weight:medium">Name : <?php echo $_SESSION['username']; ?> </div>
<div style="text-align:center ; color: #B86824; font-size:20px ; font-weight:medium">ID : <?php echo $_SESSION['userId']; ?> </div>
</div>
</nav>
<main>
<div style="font-size:20px">내 정보
</hr>
<form action="mypage_update_info.php" method="POST">
<input style="position:absolute;right:2%;height:25px;width:10%" type = submit class="submit-btn" value="수정">
<textarea name="myinfo" style="position:absolute;left:0px;width:88%;height:25%;font-size:20px"><?php echo $row['myinfo']; ?></textarea>
</form>
</div><p>
<div style="position:absolute;bottom:0px; left:-25%; width:100%;height:65%" class="login-box">
<form action="mypage_update_pass.php" method="POST">
<p style="text-align:center; font-weight:bold; font-family:Inter" >비밀번호 변경</p>
<p style="text-align:center"><input type="text" name ="ex_pass" placeholder = "이전 비밀번호 " maxlength='30' class="id-form" ></p>
<p style="text-align:center"><input type="text" name ="new_pass" placeholder = "새로운 비밀번호" maxlength='30' class="password-form"></p>
<p style="text-align:center"><input style="height:30px;width:60%" type = submit class="submit-btn" value="변경"></p>
</form>
</div>
</main>
</div>
</body>
</html>
<mypage_update_info.php>
=내 정보 수정 process=
<?php
include 'dbcon.php';
session_start();
if(!($_SESSION['loggedin'])){ // 점프해서 page.php 로 오는것을 방지.
header('Location: /index.php');
exit();
}
$content=$_POST['myinfo'];
$username=$_SESSION['username'];// DB에서 update 를 위한 인증정보 가져오기
$sql = "select * from userlog where name='".$username."'";
$result = mysqli_query($dbcon,$sql);
$row=mysqli_fetch_array($result);
if($row['name']==$_SESSION['username']){ //글작성자와 세션의 사용자가 같은지 인증
$sql = "update userlog set myinfo='".$content."' where name='".$username."'";
$result = mysqli_query($dbcon,$sql);
//인증 완료시 게시글 삭제
echo "<script>alert('내 정보가 수정되었습니다!!!');
location.href='/mypage.php'
</script>";
exit();
}else{ //인증 X 일때 권한이 없다한 후 index.php 로 리다이렉션
echo "<script>alert('잘못된 접근입니다.');
location.href='/index.php'
</script>";
exit();
}
?>
<mypage_update_pass.php>
=비밀번호 변경 process=
<?php
include 'dbcon.php';
if(!session_id()){ //세션 파일 생성여부 확인
session_start(); //세션 시작
}
$ex_pass=$_POST['ex_pass'];
$new_pass=$_POST['new_pass']; //입력값 변수로 설정
$password_hash_old=hash("sha256",$ex_pass);
$password_hash_new=hash("sha256",$new_pass); //입력받은 비번 hash 처리.
$sql = "select * from userlog where name='".$_SESSION['username']."'";
$result = mysqli_query($dbcon,$sql);
$row=mysqli_fetch_array($result);
if($row['password']==$password_hash_old){//인증시 비밀번호 변경
$sql = "update userlog set password='".$password_hash_new."' where name='".$_SESSION['username']."'";
$result = mysqli_query($dbcon,$sql);
//인증 완료시 세션폐기 처리후 ,비밀번호 변경 확인 알람
session_destroy();
echo "<script>alert('비밀번호가 변경되었습니다!');
location.href='/index.php'
</script>";
exit();
}else{
echo "<script>alert('인증정보가 일치하지 않습니다.');
location.href='/index.php'
</script>";
exit();
}
?>
긴 글 읽어주셔서 감사합니다!
'웹개발(PHP-Mysql)' 카테고리의 다른 글
[웹 개발-PHP] 파일 업로드 기능 구현(+확장자 체크) (0) | 2024.07.20 |
---|---|
[웹 개발-PHP] Pagination 기능 추가(+ 보완할 점) (0) | 2024.07.17 |
[웹 개발] 검색 및 정렬 기능 구현 (0) | 2024.07.16 |
[웹 개발] CRUD(생성,읽기,수정,삭제) 페이지 만들기 (0) | 2024.07.15 |
<2주차 과제> 회원가입 페이지 만들기 (0) | 2024.05.15 |