없는 게시물 파일 일괄삭제 질문 입니다.

없는 게시물 파일 일괄삭제 질문 입니다.

QA

없는 게시물 파일 일괄삭제 질문 입니다.

본문


<?php
$sub_menu = '100920';
include_once('./_common.php');
if ($is_admin != 'super')
    alert('최고관리자만 접근 가능합니다.', G5_URL);
$g5['title'] = '없는 게시물 파일 일괄삭제';
include_once('./admin.head.php');
?>
<div class="local_desc01 local_desc">
    <p>
        완료 메세지가 나오기 전에 프로그램의 실행을 중지하지 마십시오.
    </p>
</div>
<?php
$directory = array();
$dl = array('file', 'file2');
foreach($dl as $val) {
    $dir = G5_DATA_PATH.'/'.$val;
    if(!is_dir($dir)) continue;
    if($handle = opendir($dir)) {
        while(false !== ($entry = readdir($handle))) {
            if($entry == '.' || $entry == '..')
                continue;
            $path = G5_DATA_PATH.'/'.$val.'/'.$entry;
            if(is_dir($path))
                $directory[] = $path;
        }
    }
}
flush();
if (empty($directory)) {
    echo '<p>디렉토리를 열지못했습니다.</p>';
}
$cnt=0;
echo '<ul>'.PHP_EOL;
foreach($directory as $dir) {
    $files = glob($dir);
    $dirs = explode('/', $dir);
    if ( $dirs[count($dirs)-1] == "lost+found" || $dirs[count($dirs)-1] == "file_name" || $dirs[count($dirs)-1] == "lost+found" ) {
        continue;
    }
//    echo '<li>'.$dir.'</li>'.PHP_EOL;
    if (is_dir($dir)) {
        // 핸들 획득
        $handle  = opendir($dir);
        while(false !== ($filename = readdir($handle))) {
            if($filename == "." || $filename == ".." || $filename == "index.php"){
                continue;
            }
            $sql = "SELECT count(*) as cnt FROM ".$g5[write_prefix].$dirs[count($dirs)-1]." WHERE wr_content LIKE '%$filename%'";
            $ret = sql_fetch($sql);
            $ct = $ret['cnt'];
          
            $sql2 = "SELECT count(*) as cnt FROM g5_board_file WHERE bf_file = '$filename'";
            $ret2 = sql_fetch($sql2);
            $ct += $ret2['cnt'];
 
            if( !$ct ) {
                $cnt++;
                echo '<li> filename : '.$dir.'/'.$filename.' : '.$ct.'</li>'.PHP_EOL;
                @unlink($dir.'/'.$filename);
            }
            flush();
            if ($cnt%10000==0) {
                echo PHP_EOL;
                break;
            }
        }
        
        // 핸들 해제 
        closedir($handle);
    }
}
echo '<li>완료됨</li></ul>'.PHP_EOL;
echo '<div class="local_desc01 local_desc"><p><strong>파일 '.$cnt.'건의 삭제 완료됐습니다.</strong><br>프로그램의 실행을 끝마치셔도 좋습니다.</p></div>'.PHP_EOL;
?>
<?php
include_once('./admin.tail.php');
?>

 

게시물을 삭제하고 실행을 하면 분명 data/file/폴더 안에 삭제해당 파일이 남아있는데

지우지를 못하네요..어디부분을 수정을 하고 보안을 해야할지 고수님들 좀 알려주세요

이 질문에 댓글 쓰기 :

답변 1

삭제하는 파일의 data 경로 부분이 제대로 처리되고 있는지 여부 혹은 권한 부분을 체크해 보셔야 할듯 합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 158
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT