소소한 IT이야기/PHP_개발

[M2 MAMP] PHP 게시판 구축 - 08 (feat. 마이페이지, 수정)

Klaus 2023. 8. 12. 16:24

1. 시나리오

1) 먼저 메인페이지의 header에서 로그인을 성공하면 마이페이지가 보이도록 설정( 로그인을 하지 않았을 경우 미노출)

2) 클릭 시 마이페이지로 이동하고 id, name값은 고정! 수정불가능하도록 설정 

3) 비밀번호를 입력하고 해당 비밀번호를 확인하는 기능까지만 만듦(보안 취약점)

    > 기존비밀번호를 확인할 수 있도록 추후 수정 예정

4) 수정이 완료되면 완료 메시지 출력되고 메인페이지로 되돌아가도록 함!

 

2. 메인페이지의 [header.php]

- 가독성을 위해 변경 코드만 업로드!

 변경 : <li><a href="mypage.php">마이페이지</a></li> 추가하여 mypage.php로 접속할 수 있도록 함.

<?php 				 <!-- 비회원/회원 메뉴 다르게 -->
	}else if($userid){	
	$logged = $username."(".$userid.")";
?>
	<ul class="nav navbar-nav navbar-right">
	  <li><a href="main.php">문의하기</a></li> 	<!-- 문의게시판 12.22 회원용 -->
	  <li class="dropdown">
		<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" 
		aria-haspopup="true" aria-expanded="false"><b><?=$logged ?></b>님의 회원관리<span class="caret"></span></a>
	  <ul class="dropdown-menu">
		<li><a href="logout.php">로그아웃</a></li>
		<li><a href="mypage.php">마이페이지</a></li>
	  </ul>
	 </li>
	</ul>
<?php }?>

UI

3. 마이페이지 [mypage.php]

- 먼저, 해당 페이지의 경우 회원가입페이지를 약간 수정하여 작성

- DB에서 정보를 가지고 와서 입력되도록 하고 id와 PW는 고정되어 수정하지 못하도록 작성

포인트: DB에서 데이터를 불러와서 각 각의 입력값에 넣어주고 (value="<?=$userid?> ") 수정 불가능한 부분들은(disabled)

- 수정 버턴을 눌렀을 때 Post 방식으로 mypage_update.php로 이동되도록 함

<form name="join"  method="post" action="mypage_update.php">
	<h3 style="text-align: center">회원정보</h3>
	<div class="col-lg-4"></div>
	<div class="form-group">
		<input type="id" class="form-control" name="id" maxlength="15" value="<?=$userid?> " disabled>
	</div>       
	<div class="form-group">
	<input type="password" class="form-control" placeholder="비밀번호" name="pass" id="pass" maxlength="20">
	</div>
	<div class="form-group">
	<input type="password" class="form-control" placeholder="비밀번호 확인" name="pass_confirm" id="pass_confirm" maxlength="20">
	</div>
	<div class="form-group">
	<span id="pass_check_msg" data-check="0"></span>	
	</div>    
	<div class="form-group">
	<input type="name" class="form-control" maxlength="20" name="name" id="name" value="<?=$username?> " disabled>
	</div>
	<div class="form-group" style="text-align: center">
	<div class="btn-group" data-toggle="buttons">
	<label class="btn btn-primary active">
	<input type="radio" name="gender" id="gender1" autocomplete="off" value="남자" checked>남자
	</label>
	<label class="btn btn-primary">
	<input type="radio" name="gender" id="gender2" autocomplete="off" value="여자">여자
	</label>
	</div>
	</div>
	<div class="form-group">
	<input type="tel" class="form-control" value="<?=$phone?> " name="phone" id="phone" maxlength="20">
	</div>	
	<div class="col-lg-4"></div>
	<div class="form-group">
	<input type="email" class="form-control" value="<?=$email?>" name="email" id="email" maxlength="80">
	</div>
					
	<span class="btn btn-primary form-control" onclick="check_input()">수정</span>&nbsp;
	<span class="btn btn-primary form-control" onclick="reset_form()">초기화</span>
						
	</form>
	</div>
	</div>
</div>

UI

3. 마이페이지 수정 [mypage_update.php]

- 해당 페이지는 간단하다.(include)를 를 많이 사용하고 있습니다. ㅎㅎㅎㅎㅎㅎㅎ

- 해당 페이지의 경우 회원가입 시 DB로 보내지는 페이지에서 아래와 같이 수정하였습니다.

포인트 : SQL쿼리가 insert에서 update로 변경되었고 SET이 따라온다는 점

  그리고 기준은 WHERE id값을 찾아 해당 아이디의 값을 변경!

<?php
	include_once "./db/db_con.php";
	include './config.php';

    $pass = $_POST['pass'];
    $gender = $_POST['gender'];
    $phone = $_POST['phone'];
    $email  = $_POST['email'];
   
mq("UPDATE user_info SET pass='$pass', gender='$gender', phone='$phone', email='$email' WHERE id='$userid' ");

    echo "
	      <script>
    	      alert('회원정보가 수정되었습니다.');
	          location.href = 'index.php';
	      </script>
	  ";
?>

CSRF 취약점 연구를 위해 개발 마이페이지를 개발해 보았습니다.