power-girl0-0

[ PHP & MySQL ] 글 삭제 본문

언어/PHP

[ PHP & MySQL ] 글 삭제

power-girl0-0 2021. 3. 29. 22:26
728x90

생활코딩 PHP & MySQL을 참고하여 공부하였습니다.

스스로 공부한 것을 정리하고 복습하기 위한 목적으로 작성하였습니다.

( 출처 :  https://opentutorials.org/course/743inf.run/pBzy opentutorials.org/course/3167)


삭제를 하기 위해서는 삭제버튼을 생성해보자.

삭제는 어떠한 id값이 있을 때 삭제가 되어야 되기 때문에, main.php소스코드에 있는 isset조건문에 해당 버튼을 넣어준다.

  $update_link = '';
  $delete_link = '';
  if(isset($_GET['id'])) {
    $filtered_id = mysqli_real_escape_string($conn, $_GET['id']);
    $sql = "SELECT * FROM topic WHERE id={$filtered_id}";
    $result = mysqli_query($conn, $sql);
    $row = mysqli_fetch_array($result);
    $article['title'] = htmlspecialchars($row['title']);
    $article['description'] = htmlspecialchars($row['description']);

    $update_link = '<a href="update.php?id='.$_GET['id'].'">update</a>';
    $delete_link = '<a href="process_delete.php?id='.$_GET['id'].'">delete</a>';
 

그 후, html에서 불러와 줍니다.

<?=$delete_link?>

 

하지만, 삭제버튼은 링크로 처리하는 것보다 form으로 처리하는 것이 안전하다.

어떠한 이유로 링크가 하나씩 클릭될 수도 있는 위험이 있기 때문이다. 그래서 아래와 같이 수정해주었다.

$delete_link = '
      <form action="process_delete.php" method="post">
        <input type="hidden" name="id" value="'.$_GET['id'].'">
        <input type="submit" value="delete">
      </form>
  ';


해당 delete버튼을 클릭하면, 바로 삭제되도록 페이지를 생성해보자.

삭제 페이지도 process_update.php코드와 비슷하므로, copy후 sql문만 delete문으로 수정해주면 된다.

<?php
  $conn = mysqli_connect(
    'localhost',
    'root',
    'db 비밀번호',
    'opentutorials');

  settype($_POST['id'], 'integer');
  $filtered = array(
    'id'=>mysqli_real_escape_string($conn, $_POST['id'])
  );

  $sql = "
      DELETE
         FROM topic
         WHERE id = {$filtered['id']}
  ";
  $result = mysqli_query($conn, $sql);
  if($result === false){
    echo '저장하는 과정에서 문제가 생겼습니다. 관리자에게 문의해주세요';
    error_log(mysqli_error($conn));
  } else {
    echo '삭제되었습니다. <a href="main.php">돌아가기</a>';
  }
?>

이제 실행시켜보자.

attack이라는 게시물을 삭제하기 위해, 클릭 후 delete버튼을 눌러보았다.

'삭제되었습니다.' 라는 문구가 띄면서 삭제된 것을 확인할 수 있다.

 

728x90

'언어 > PHP' 카테고리의 다른 글

[ PHP & MySQL ] 글 수정  (0) 2021.03.29
[ PHP & MySQL ] PHP & MySQL 보안  (0) 2021.03.29
[ PHP & MySQL ] 글 읽기  (0) 2021.03.29
[ PHP & MySQL ] SELECT  (0) 2021.03.29
[ PHP & MySQL ] 글 생성  (0) 2021.03.28
Comments