테스트 사이트 - 개발 중인 베타 버전입니다

잉여 첨부파일 검색 팁을 봤는데요. 채택완료

웹스토리2 9년 전 조회 2,059

아래 같은 소스를 보고 적용 시키니까 잘 되는거 같은데요

 

문제가 빌더를 쓰고 있는데 data/file 아래에 자동으로 생성 되는 폴더들 까지 디비에 없다고 떠버리네요. 

 

폴더 까지 카운팅이 되버립니다 ㅠㅠ

 

아래 소스에서 폴더는 안나오게 할수 없을까요? 파일만 검사 하는게 아니라 폴더 까지 나와버리네요.ㅠㅠ

 

 

 

<?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_desc02 local_desc">

<p>

완료 메세지가 나오기 전에 프로그램의 실행을 중지하지 마십시오.

</p>

</div>

 

<?php

$directory = array();

$dl = array('file');

 

$cnt = 0; $cnt2 = 0;

echo '<ul>'.PHP_EOL;

 

foreach($dl as $val) {

if($handle = opendir(G5_DATA_PATH.'/'.$val)) {

while(false !== ($entry = readdir($handle))) {

if($entry == '.' || $entry == '..' || $entry == 'index.php')

continue;

 

$path = G5_DATA_PATH.'/'.$val.'/'.$entry;

 

if(is_dir($path)) {

$directory[] = array( $val, $entry, $path );

}

 

if($handle2 = opendir($path)) {

while(false !== ($entry2 = readdir($handle2))) {

if($entry2 == '.' || $entry2 == '..' || $entry2 == 'index.php' || $entry2 == 'thumb')

continue;

 

$cnt++;

$row = sql_fetch(" select bf_source from {$g5['board_file_table']} where bo_table = '{$entry}' and bf_file = '{$entry2}' ");

 

if (!$row['bf_source']) {

$cnt2++;

echo "<li>파일이 디비에 없습니다. - " . $path . "/" . $entry2 . "</li>\n";

}

flush();

 

}

}

 

}

}

}

 

if (empty($directory)) {

echo '<p>file 디렉토리를 열지못했습니다.</p>';

}

 

echo '<li>완료됨</li></ul>'.PHP_EOL;

echo '<div class="local_desc01 local_desc"><p><strong>첨부파일 '.$cnt.' 건 중 '.$cnt2.' 개가 검색되었습니다.</strong><br>프로그램의 실행을 끝마치셔도 좋습니다.</p></div>'.PHP_EOL;

?>

 

<?php

include_once('./admin.tail.php');

?>

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
9년 전

if($entry2 == '.' || $entry2 == '..' || $entry2 == 'index.php' || $entry2 == 'thumb') continue;

여기를

if(!is_file($entry2) || $entry2 == '.' || $entry2 == '..' || $entry2 == 'index.php' || $entry2 == 'thumb') continue;

이렇게 해보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

웹스토리2
9년 전
이렇게 하니까 디렉토리가 안나오는데 잉여 파일도 같이 안나옵니다 ㅠㅠ;
먼지손
9년 전
비슷한 if문이 두개인데 윗쪽껄 바꾸신건 아니죠?
파일이 아닐때만 패스하라는 거여서 파일이 안나올 일은 없는데요...
혹시 is_file 앞에 ! 이거 빼먹으신건 아닌지 다시 한 번 소스 확인해보세요.
웹스토리2
9년 전
아예 첨부파일 0건으로 뜨고 잉여파일도 안뜨네요 ㅠ.ㅠ if(!is_file($entry2) || $entry2 == '.' || $entry2 == '..' || $entry2 == 'index.php' || $entry2 == 'thumb') continue; 로 교체 해줬습니다!!
먼지손
9년 전
이크.. 제가 정신이 없었네요 ^^;
경로가 빠졌었네요.
!is_file($path.'/'.$entry2)
이렇게 되야 합니다.
웹스토리2
9년 전
잘됩니다~!!! 도움 감사드립니다~!!!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인