파일 삭제는 글 삭제와 같은 흐름으로 구현하되, SQL에 연결해서 row를 삭제하는 것이 아니라 특정 폴더에 있는 파일을 삭제하면 된다. 파일 삭제 기능을 구현할 file_delete.php 파일 하나를 만들어주고, 삭제 링크로 연결해준다. 이때, get 파라미터로 id를 넘겨준다.
① 파일 삭제
[read.php]
<div>
<a href="http://localhost/web_dev/files/<?=$username?>/<?=$file_name?>" target="_blank">View</a>
<a href="file_delete.php?id=<?=$id?>">Delete</a>
</div>
[file_delete.php]
<?php
if(isset($_GET['id'])){
$id = $_GET['id'];
$sql = "SELECT username, file from board where id = '$id';";
$sql2 = "UPDATE board SET file = 'NULL' where id = '$id';";
$conn = mysqli_connect('localhost', 'ID', 'PW', 'DBname');
$result2 = mysqli_fetch_array(mysqli_query($conn, $sql));
$username = $result2[0];
$file = $result2[1];
unlink("./files/$username/$file");
if($result = mysqli_query($conn, $sql2)){
echo "<script>alert('파일이 삭제되었습니다!')</script>";
echo "<script>window.location.href='read.php?id=$id';</script>";
}
mysqli_close($conn);
}
?>
파일을 삭제하려면, 1) 서버에 있는 파일 삭제, 2) MySQL 파일 이름을 NULL로 재수정 과정이 있어야 한다.
파일 삭제는 unlink 함수를 사용해서 구현해주었고, MySQL에서는 update로 NULL을 넣어주었다.
View와 Delete는 파일이 존재할 때만 띄워줄 것이기 때문에, 지정한 경로에 파일이 없는 경우는 따로 처리해주지 않았다.
Delete를 누르니 파일이 잘 삭제되었다.
② 파일 조건문
이제 파일이 있는 경우에만 View, Delete와 Download 버튼을 보여주자. (다음 포스팅에서 Download 기능을 구현하면서 Delete는 작성자에게만 보여주도록 만들 것이다.)
<?php
} //좋아요 기능의 끝자락
$path = "./files/$username/$file_name";
if(file_exists($path)){
?>
<div>
<a href="http://localhost/web_dev/files/<?=$username?>/<?=$file_name?>" target="_blank">View</a>
<a href="#">Download</a>
<a href="file_delete.php?id=<?=$id?>">Delete</a>
</div>
<?php
}
?>
파일 업로드에 사용했던 file_exists 함수를 사용해서 해당 경로에 파일이 있을 경우 View, Delete 등을 보여준다.
view 글자들이 보이지 않는다. 다시 사진을 업로드해서 확인해보자.
수정할 때도 파일을 업로드할 수 있도록 update.php에는 create.php와 똑같이 input file을 추가해주고, board_update.php에는 board_create.php와 똑같이 file을 업로드했을 경우 서버에 저장 + MySQL에 이름을 저장하는 코드를 추가해주었다.
파일을 업로드하고 업데이트를 하니 View, Download, Delete가 뜨는 것을 볼 수 있다.
'WEB HACKING > 웹 해킹[실습]' 카테고리의 다른 글
Php로 웹 개발하기 : 게시판(16) - 날짜 기간 조회 (3) | 2021.12.07 |
---|---|
Php로 웹 개발하기 : 게시판(15) - 파일 다운로드 (0) | 2021.12.06 |
Php로 웹 개발하기 : 게시판(13) - 파일 확인 (0) | 2021.12.02 |
Php로 웹 개발하기 : 게시판(12) - 파일 업로드 (0) | 2021.11.30 |
Php로 웹 개발하기 : 게시판(11) - 좋아요 (0) | 2021.11.28 |
댓글