일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 파이썬
- 함수
- 배열
- htmlspecialchars
- github
- 백준 알고리즘
- python
- element 조회
- Pwndbg
- 김성엽 대표님
- suninatas 풀이
- 객체
- window
- IF문
- blind sql injection
- 백준 파이썬
- 포인터
- lord of sql injection
- 메소드
- 조건문
- jQuery
- 사칙연산
- document
- property
- xss game 풀이
- 자바스크립트
- burp suite
- object
- xss game
- sql injection
Archives
- Today
- Total
power-girl0-0
[ PHP & MySQL ] 글 삭제 본문
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