Today I Learned …

[웹개발] 게시글 삭제 기능 본문

Web/APM

[웹개발] 게시글 삭제 기능

염베리 2021. 11. 7. 22:14

* 개인적인 공부 내용을 기록한 글입니다.


최종 화면

클릭하면 확대됩니다.

 

이전 포스팅

https://choco4study.tistory.com/56

 

[웹개발] 게시글 수정 기능

* 개인적인 공부 내용을 기록한 글입니다. 최종 화면 이전 포스팅 https://choco4study.tistory.com/40?category=1054456 [웹개발] 게시글 작성 기능 * 개인적인 공부 내용을 기록한 글입니다. 최종 화면 게시글..

choco4study.tistory.com


게시글 삭제 기능

 

 

0. 요약

[1] 작성자가 게시글을 조회하는 경우에만 [삭제] 버튼이 나타나게끔 구현한다.

[2] [삭제] 버튼을 클릭하면 게시글을 삭제한다.

 

 

1. 다음은 게시글 조회 페이지를 출력하는 view.php에 추가해줄 내용이다.

<?php
    if($_SESSION['user_id'] == $res_view['writer']){ ?>
        <div class=mine>
        	<button class=write onclick="window.location.href='update.php?id=<?=$res_view['id']?>'" type="button">수정</button>
        	<button class=write onclick="window.location.href='remove_ok.php?id=<?=$res_view['id']?>'" type="button">삭제</button>
        </div>
<?php } ?>

[1] 현재 로그인하고 있는 사용자가 해당 게시글의 작성자일 경우,

[2] [삭제] 버튼을 출력한다.

[3] [삭제] 버튼을 클릭하면 remove_ok.php로 넘겨주고, 동시에 GET으로 해당 게시글의 식별자 (= id) 를 전달해준다.

 

 

2. 다음은 게시글 삭제를 실질적으로 처리할 remove_ok.php의 내용이다.

<?php
    session_start();
    $conn = mysqli_connect('localhost', 'choco', '7173', 'study_login');
    $id = $_GET['id'];

    $sql_check = "SELECT * FROM board WHERE id=$id";
    $res_check = mysqli_fetch_array(mysqli_query($conn, $sql_check));
    if($_SESSION['user_id'] != $res_check['writer']){
        echo "<script>alert('권한이 없습니다!');";
        echo "window.history.back()</script>";
        exit;
    }

    $sql = "
    DELETE FROM board WHERE id=$id;
    DELETE FROM like_manager WHERE like_post_id=$id;
    ";

    $res = mysqli_multi_query($conn, $sql);

    echo "<script>alert('게시글이 삭제되었습니다!');";
    echo "window.location.replace('board.php');</script>";
?>

[1] GET으로 넘겨받은 해당 게시글의 식별자 (= id) 를 $id에 할당해준다.

[2] 현재 사용자가 해당 게시글의 작성자가 아닐 시, alert를 출력하고 exit 해준다.

[3] 이상 없을 시, 해당 게시글을 delete 해주고 게시글 목록으로 돌아간다.

 

[4] 파일을 첨부한 게시글일 경우, 파일이 서버의 폴더에 저장되기 때문에 삭제 시에는 서버에 있는 해당 파일까지 깔끔하게 삭제해줘야하는 것이 원칙이다...

[5] 이건 나중에 해보도록 하겠다... 오늘은 여기서 끝!

프로필사진
berry
FE Developer, loves React & better DX
Comments