PHP + MySQL 게시판 제작 - 게시글 수정

2026. 2. 16. 23:11·모의해킹

삭제는 너무너무 쉽고.. 간단하고.... 사랑스러웠는데

수정은 진짜

하면서 내가 이렇게 빡대가리였나 싶고,,,

 

사실 수정도 그냥 글이랑 내용만 수정하면 쉽지만

파일이 들어가는 순간 지옥을 맛봤어요

결과

사실 아직도 정확히 이해 못한거같음;;

글고 기존파일삭제에 체크하면 팝업창으로

[새 파일 선택 시 기존 파일은 자동으로 삭제됩니다]

이거 띄우고싶었는데 이건 자바스크립트라 그래서 패스...

 

기존 파일이 존재하면

1. 기존 파일 삭제에 체크하거나 

2. 다른 파일로 바꾸기 위해서는

기존 파일을 DELETE 해줘야함

 

기존파일 삭제에 체크해서 DELETE하는거 까진 이해했음

근데 다른 파일로 바꾸는게 진짜 개어려웠는데

계속 UPDATE만 하려고하니까

기존파일 삭제했는데 어떻게 UPDATE를 하지?

UPDATE하려면 기존 file_id가 있어야하는데

하느라 진전이 없었다ㅠㅠ

 

결국엔 UPDATE가 아니라 INSERT로 타협봄

 

[ update.php ]

<?php
	include 'lib.php';
	$num = $_GET['num'];
	$sql = "SELECT * FROM board LEFT JOIN file_upload ON board.file_id = file_upload.file_id WHERE num=$num";
	$result = mysqli_query($conn, $sql);
	$row = mysqli_fetch_assoc($result);
?>

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title><?php echo $row['title']; ?></title>
</head>

<body>
<?php
	if ($_SESSION['name'] == $row['name']) { ?>
	<form method="POST" action="updateok.php" enctype="multipart/form-data">
	<input type="hidden" method="POST" name="num" value="<?= $row['num']; ?>">
		<table border=1>
		<tbody>
			<tr>
				<td>이름</td>
				<td><?= $row['name']; ?></td>
			</tr>
			<tr>
				<td>제목</td>
				<td><input type="text" name="title" style="width:700px" value="<?php echo $row['title'];?>"></td>
			</tr>
			<tr>
				<td>내용</td>
				<td><textarea name="content" style="width:700px; height: 500px;"><?php echo $row['content'];?></textarea></td>
			</tr>
			<tr>
				<td>파일</td>
				<td><?php if ($row['file_id']) { ?>
					<?= $row['file_name']; ?>
					<input type="checkbox" name="file_delete">기존 파일 삭제<br>
				<font color="red">(새 파일 선택 시 기존 파일은 자동으로 삭제됩니다)</font><br><?php } ?>
					<input type="file" name="upload_file"></td>
			</tr>
		</tbody>
		</table>
		<br>
		<input type="submit" value="수정하기">
		</form>
		<?php } else {
		echo "<script>alert('수정은 본인만 가능합니다'); window.location.href='index.php';</script>";
	}
	?>
</body>
</html>

 

[ updateok.php ]

<?php
	include 'lib.php';
	$num = $_POST['num'];
	$title = $_POST['title'];
	$content = $_POST['content'];
	
	$result = mysqli_query($conn, "SELECT * FROM board WHERE num = '$num'");
	$row = mysqli_fetch_assoc($result);
	$old_file_id = $row['file_id'];
	
	mysqli_query($conn, "UPDATE board SET title='$title', content='$content' WHERE num='$num'");
	
	if (isset($_POST['file_delete']) || ($_FILES['upload_file']['error'] == 0)) {
		
		if ($old_file_id != NULL) {
			$f = mysqli_query($conn, "SELECT * FROM file_upload WHERE file_id = '$old_file_id'");
			$file_row = mysqli_fetch_assoc($f);
		
			unlink("./uploads/".$file_row['file_save']);
			mysqli_query($conn, "DELETE FROM file_upload WHERE file_id='$old_file_id'");
		}
			mysqli_query($conn, "UPDATE board SET file_id = NULL WHERE num = '$num'");
	}
	
	if ($_FILES['upload_file']['error'] == 0) {
		
		$filename = $_FILES['upload_file']['name'];
		$tmp_name = $_FILES['upload_file']['tmp_name'];
		$e = substr($filename, strrpos($filename, '.') + 1);
		
		$new_file_id = md5(uniqid(rand(), true));
		$path = $new_file_id.'.'.$e;
			
		$folder = "./uploads/$path";
			move_uploaded_file($tmp_name, $folder);
			
			mysqli_query($conn, 
			"INSERT INTO file_upload(file_id, file_name, file_save, up_time) VALUES ('$new_file_id', '$filename', '$path', now())");
			mysqli_query($conn, "UPDATE board SET file_id = '$new_file_id' WHERE num = '$num'");
	}
	mysqli_close($conn);
?>

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>수정</title>
</head>

<body>
<script>alert('수정되었습니다'); window.location.href='view.php?num=<?php echo $num ?>';</script>
</body>
</html>

 

뭘 하나 건드리면 하나 안되고...

update가 잘 되니까 view가 안되고..

엉망진창이었다ㅠㅠㅠ

계속 맞게한거같은데 안돼서 지피티한테 물어보니까

이번엔 중괄호 위치가 잘못됐다그러구,,

그래도 여차저차 되긴됐다는게 넘 신기..........

'모의해킹' 카테고리의 다른 글

웹 해킹 공부 - 인증/권한 우회  (0) 2026.03.29
웹 해킹 공부 - XSS  (0) 2026.03.08
PHP + MySQL 게시판 제작 - 게시물 삭제  (0) 2026.02.16
PHP + MySQL 게시판 제작 - 파일 다운로드  (0) 2026.02.16
PHP + MySQL 게시판 제작 - 게시글 조회  (0) 2026.02.16
'모의해킹' 카테고리의 다른 글
  • 웹 해킹 공부 - 인증/권한 우회
  • 웹 해킹 공부 - XSS
  • PHP + MySQL 게시판 제작 - 게시물 삭제
  • PHP + MySQL 게시판 제작 - 파일 다운로드
songtoy
songtoy
  • songtoy
    ㅎㅇ
    songtoy
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 모의해킹
  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
songtoy
PHP + MySQL 게시판 제작 - 게시글 수정
상단으로

티스토리툴바