
개발 대상은 [비회원게시판 - 게시글수정] 페이지이다.
구성은 다음과 같다.
free_edit.php : 게시글 수정 양식 페이지
freeedit_proc.php : 게시글 수정 처리 페이지
board_edit.css : 게시글 작성 및 수정 공통 CSS
<free_edit.php>
<?php
$num = $_POST["num"];
$input_pass = $_POST["input_pass"];
$type = $_POST["type"];
if (empty($input_pass) or !ctype_digit($input_pass) or strlen($input_pass)!=4) {
echo "<script>
alert('비밀번호 숫자 4자리를 입력해주세요');
history.go(-1);
</script>";
exit;
}
include "../db/db_con.php";
$sql = "select * from freeboard where num=$num and password=$input_pass";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($result);
if (!$row) {
echo "<script>
alert('비밀번호가 일치하지 않습니다');
history.go(-1);
</script>";
exit;
}
$title = $row["title"];
$content = $row["content"];
$writer = $row["writer"];
if ($type == "delete") {
$sql = "delete from freeboard where num = $num";
mysqli_query($con, $sql);
echo "<script>
alert('게시글이 삭제되었습니다');
location.href='./free_list.php';
</script>";
exit;
}
else if ($type != "modify") {
echo "<script>history.go(-1)</script>";
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>자유 게시판</title>
<link rel="stylesheet" href="../css/board_edit.css?v=<?=time()?>">
</head>
<body>
<?php include "../include/header.php" ?>
<h2>게시글 수정</h2>
<div class="edit-container">
<form class="edit-form" method="post" action="freeedit_proc.php">
<input type="hidden" id="num" name="num" value="<?php echo $num?>">
<div class="edit-row">
<label for="input_title">제목 <i class="fa-solid fa-pen-to-square"></i></label>
<input id="input_title" name="input_title" type="text" value="<?php echo $title ?>">
</div>
<div class="edit-row">
<label>작성자명</label>
<input type="text" value="<?php echo $writer ?>" disabled>
</div>
<label for="input_cont">본문 <i class="fa-solid fa-pen-to-square"></i></label>
<textarea id="input_cont" name="input_cont"><?php echo $content ?></textarea>
<div class="edit-actions">
<input type="submit" value="수정 완료">
<input type="button" onclick="location.href='free_view.php?num=<?php echo $num?>'" value="뒤로가기">
</div>
</form>
</div>
</body>
</html>
| free_edit.php |
|---|
![]() |
1. 입력값 확인:
free_view.php에서 게시글 번호(num)와 사용자가 입력한 비밀번호(input_pass), 수정 유형(type)을 전달받는다.
만약 사용자가 입력한 4자리 숫자가 해당게시글 작성시 등록된 비밀번호와 일치하지 않는 경우, 이전 페이지로 되돌아간다.
2. 편집 유형(type) 확인:
1) type == delete: 만약 사용자가 비밀번호를 입력하고 삭제버튼을 눌러 delete 값이 전달된 경우, freeboard 테이블에서 해당 게시글 번호(num)에 일치하는 필드를 delete하여 해당 게시글을 삭제한다.
2) type == modify: 만약 사용자가 비밀번호를 입력하고 수정버튼을 눌러 modify 값이 전달된 경우, 게시글 수정양식을 출력한다.
freeboard 테이블에서 해당 게시글 정보를 불러와 이전에 작성하였던 게시글 제목과 내용을 보여준다.
여기서 게시글 정보를 수정하고 수정완료를 누르면, 사용자가 수정한 게시글 제목(input_title)과 내용(input_cont) 값이 POST 방식으로 수정 처리 페이지(freeedit_proc.php)로 전달된다.
<freeedit_proc.php>
<?php
$num = $_POST["num"];
$input_title = $_POST["input_title"];
$input_cont = $_POST["input_cont"];
include "../db/db_con.php";
$sql = "update freeboard set title = '$input_title', content = '$input_cont' where num = $num";
mysqli_query($con, $sql);
mysqli_close($con);
echo "<script>
alert('게시글이 수정되었습니다.');
location.href='./free_view.php?num=$num';
</script>";
?>
1. 입력값 확인:
게시글 수정 양식 페이지(free_edit.php)에서 전달받은 게시글 번호(num), 게시글 제목(input_title), 게시글 내용(input_cont) 값을 각각 ($num, $input_title, $input_cont) 변수에 저장한다.
2. 테이블 Update:
변수에 저장된 값을 토대로 freeboard 테이블에서, 해당 게시글 번호에 해당하는 게시글 필드에서 title, content를 update하여 게시글의 내용을 수정한다.
| 1. 비회원게시글 내용 확인 페이지 |
|---|
![]() |
| 2. 입력칸에 비밀번호 입력 |
|---|
![]() |
| 3. 비밀번호 확인 & 처리 |
|---|
![]() |
| ↑ 숫자 4자리 미입력시 |
![]() |
| ↑ 비밀번호 불일치시 |
![]() |
| ↑ 게시글 수정 클릭시 (영상) |
![]() |
| ↑ 게시글 삭제 클릭시 (영상) |