티스토리 뷰

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

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)

백엔드 개발 정점을 꿈꾸는 흔한 개발자입니다
우분투 데스크탑 개발 환경을 매우 선호합니다
최근에는 vscode에 vim 모드 올려서 쓰고 있습니다
개발용 키보드는 역시 해피해킹 프로2 무각입니다
락 밴드에서 드럼을 꽤나 오래 쳤었습니다