티스토리 뷰

이전 포스팅을 참고하시고 오시면 더욱 좋습니다.

1. PHP MySQL Hash 함수를 사용한 파일관리 - 파일 업로드

2. PHP MySQL Hash 함수를 사용한 파일관리 - 파일 조회, 다운로드



※ 본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다.



마지막으로 delete.php 를 구현하여 파일삭제를 해보도록 하겠습니다.


delete.php 의 php 소스입니다.


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php    
 
    if(!$_GET['num'])
    {
        echo "<script>alert('이상하게 접근하셨습니다;;');";
        echo "history.back();</script>";
    }
    
    @ $db = new mysqli('DB호스트명''DB계정명''DB계정비밀번호''사용할DB명');
    if(mysqli_connect_errno())
    {
        echo "DB connect error";
        exit;
    }
    
    $query = "select hash from ftp where num=".$_GET['num'];
    $result = $db->query($query);
    if(!$result)
    {
        echo "select query error";
        exit;
    }
    $result = $result->fetch_assoc();
    
    $dir = "./files/";
    $filehash = $result['hash'];
    
    if(!unlink($dir.$filehash))
    {
            echo "file delete error";
            exit;
    }
    
    $query = "delete from ftp where num=".$_GET['num'];
    $result = $db->query($query);
    if(!$result)
    {
        echo "delete query error";
        exit;
    }
    
    echo "<script>alert('파일이 삭제되었습니다.');";
    echo "history.back();</script>";
 
    $db->close();
    
?>


대부분 앞의 포스팅에서 설명했던 기능들이라 딱히 설명할 건 없네요.


if(!unlink($dir.$filehash)) : unlink 함수는 해당위치의 파일을 삭제합니다. 업로드할 때 파일이름을 해시값으로 저장했기 때문에 해시명이 들어갑니다.

$query = "delete from ftp where num=".$_GET['num']; : 파일을 삭제했으므로 DB에서도 제거해야합니다. 해당 컬럼을 삭제하는 쿼리문입니다.



delete.php 가 잘 작동하나 확인해 보겠습니다.





index.php 에서 삭제할 파일의 DEL을 누르면



삭제가 되었다네요.





정말로 되었네요.




흠.. 포스팅 끗인듯..?




ps) 추신입니다. 본문에서는 작업이 완료되고 자바스크립트의 history.back() 

함수로 되돌아 갔는데 이렇게 되면 DB의 갱신이 되지 않고 페이지가 뜰 수 있습니다. 

history.back 보다는 location.href를 사용하여 페이지를 새로 읽어 들이는게 

DB 갱신에 바로바로 대응할 수 있습니다.






저작자 표시 비영리 변경 금지
신고
공유하기 링크
태그 클라우드
, ,
프로필사진

Yowu (Yu Yongwoo)

My MBTI type is ENTP. (Of course I do not believe it 100%, but I want to do that) I use Node.js to develop the backend. I use Ubuntu Linux as my development environment, and I love Vim. I am interested in open source and are keen to contribute. I have a bachelor's degree in computer science from Catholic University and now a software engineer at Plating Inc., I spent about 5 years developing and learning, and I am still interested in software development and culture. Recently, I am interested in React, Serverless structure, Domain Design Driven. Sometimes I play drums in the band.