없는 게시물 파일 일괄삭제 질문 입니다. 채택완료
Darcy
7년 전
조회 2,211
</p>
<p><?php
$sub_menu = '100920';
include_once('./_common.php');</p>
<p>if ($is_admin != 'super')
alert('최고관리자만 접근 가능합니다.', G5_URL);</p>
<p>$g5['title'] = '없는 게시물 파일 일괄삭제';
include_once('./admin.head.php');
?></p>
<p><div class="local_desc01 local_desc">
<p>
완료 메세지가 나오기 전에 프로그램의 실행을 중지하지 마십시오.
</p>
</div></p>
<p><?php
$directory = array();
$dl = array('file', 'file2');</p>
<p>foreach($dl as $val) {
$dir = G5_DATA_PATH.'/'.$val;</p>
<p> if(!is_dir($dir)) continue;</p>
<p> if($handle = opendir($dir)) {
while(false !== ($entry = readdir($handle))) {
if($entry == '.' || $entry == '..')
continue;</p>
<p> $path = G5_DATA_PATH.'/'.$val.'/'.$entry;</p>
<p> if(is_dir($path))
$directory[] = $path;
}
}
}</p>
<p>flush();</p>
<p>if (empty($directory)) {
echo '<p>디렉토리를 열지못했습니다.</p>';
}</p>
<p>$cnt=0;
echo '<ul>'.PHP_EOL;</p>
<p>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;
}</p>
<p> $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'];</p>
<p>
$sql2 = "SELECT count(*) as cnt FROM g5_board_file WHERE bf_file = '$filename'";
$ret2 = sql_fetch($sql2);
$ct += $ret2['cnt'];
</p>
<p> if( !$ct ) {
$cnt++;
echo '<li> filename : '.$dir.'/'.$filename.' : '.$ct.'</li>'.PHP_EOL;
@unlink($dir.'/'.$filename);
}</p>
<p> flush();</p>
<p> if ($cnt%10000==0) {
echo PHP_EOL;
break;
}
}
// 핸들 해제
closedir($handle);
}
}</p>
<p>echo '<li>완료됨</li></ul>'.PHP_EOL;
echo '<div class="local_desc01 local_desc"><p><strong>파일 '.$cnt.'건의 삭제 완료됐습니다.</strong>
프로그램의 실행을 끝마치셔도 좋습니다.</p></div>'.PHP_EOL;
?></p>
<p><?php
include_once('./admin.tail.php');
?></p>
<p>
게시물을 삭제하고 실행을 하면 분명 data/file/폴더 안에 삭제해당 파일이 남아있는데
지우지를 못하네요..어디부분을 수정을 하고 보안을 해야할지 고수님들 좀 알려주세요
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
답변을 작성하려면 로그인이 필요합니다.
로그인