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

디비와 파일 체크 하는 부분만 해결하면 되는데요 ㅠㅠ 채택완료

웹스토리2 9년 전 조회 5,601

에디터를 사용하고 있는데요. 그냥 이미지를 올려 놓고 페이지를 나가 버리면 불용파일이 생겨버려서 너무 너무 고민 입니다. ㅠ.ㅠ

 

그래서 글 등록을 하게 되면 이미지 주소와 인덱스 번호 까지 해서 디비에 올리는 팁을 봐서 적용까지는 하였는데요

 

실제적으로 사용안하는 이미지는 디비에 내용이 없고 파일만 존재 하는데 까지는 성공 했는데

 

너무 초보라서 이 이상진도가 힘드네요..ㅠ.ㅠ 일주일 넘게 팁을 찾고 시도 해봐도 답이 안나옵니다 ㅠㅠ

 

디비랑 파일이랑 비교해서 없는거만 찾아 주는거만 하면 이제 문제가 없을꺼 같은데요..

 

그래서 아래 팁을 찾아 내긴 했는데 활용하기가 너무 힘드네요.

 

아래 팁은 첨부파일이 실제로 있는지를 체크해주는건데요. 제가 여기서 보고 만든 디비랑 너무 상이 해서 활용이 힘듭니다. ㅠㅠ

 

고수님들 도움이 너무 필요합니다. 어떻게 이 난관을 헤쳐나가야 할까요..ㅠ.ㅠ

 

현재 글 등록을 하면 올라 가는 디비의 구조와 팁에서 본 소스 내용 입니다.

 

 

 

 "CREATE TABLE `g5_images` (

`idx` int(11) NOT NULL AUTO_INCREMENT,

`bo_table` varchar(100) NOT NULL DEFAULT '' COMMENT '게시판 이름',

`path` varchar(255) NOT NULL DEFAULT '' COMMENT '첨부 이미지',

`wr_id` int(11) NOT NULL DEFAULT '0' COMMENT '게시물 번호',

`reg_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '등록 시간',

PRIMARY KEY (`idx`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

 

 

이하는 여기서 찾은 팁인데 비교해서 저 위 테이블에 없는 파일로 어떻게 찾을수 있을까요

 

 

<?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');

?>

 

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

답변 15개

여기에다가

echo $aa[4]."===".$entry2."<br>";

이러게 찍어보세요 그러면

20160608193836_wxoalriz.gif==20160608193836_wxoalriz.gif

이런식으로나와야 되거든요 어떠게 나오는 지 봐보세요

if ($aa[4]!=$entry2) {

 

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

답변에 대한 댓글 2개

웹스토리2
9년 전
20160608150102_vakeqbvp.jpg===20160608193836_wxoalriz.gif
이렇게 출력이 됩니다~!!

최종적으로는

20160608150102_vakeqbvp.jpg===20160608193836_wxoalriz.gif
파일이 디비에 없습니다. - /home/u322749029/public_html/data/editor/1606/20160608193836_wxoalriz.gif
웹스토리2
9년 전
20160608150102_vakeqbvp.jpg 이게 어떻게 나오는걸까요 서버에도 없고 디비에도 없는건데 ㅠㅠ;

20160608150102_vakeqbvp.jpg===20160608193836_wxoalriz.gif
파일이 디비에 없습니다. - /home/u322749029/public_html/data/editor/1606/20160608193836_wxoalriz.gif
20160608150102_vakeqbvp.jpg===20160608145930_fixezcur.jpg
파일이 디비에 없습니다. - /home/u322749029/public_html/data/editor/1606/20160608145930_fixezcur.jpg
20160608150102_vakeqbvp.jpg===20160608155850_murzxeym.jpg
파일이 디비에 없습니다. - /home/u322749029/public_html/data/editor/1606/20160608155850_murzxeym.jpg
20160608150102_vakeqbvp.jpg===20160608155659_kgyesxst.jpg
파일이 디비에 없습니다. - /home/u322749029/public_html/data/editor/1606/20160608155659_kgyesxst.jpg
20160608150102_vakeqbvp.jpg===20160608155220_obizsffv.jpg
파일이 디비에 없습니다. - /home/u322749029/public_html/data/editor/1606/20160608155220_obizsffv.jpg
완료됨
첨부파일 5 건 중 5 개가 검색되었습니다.

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

 

$row['path'] 에  /data/editor/1606/20160608193836_wxoalriz.gif  이러게 있다면

$aa = explode("/", $row['path']);

이러게 하면

$aa[1] 가 data

$aa[2] 가 editor

$aa[3] 가 1606

$aa[4] 가 20160608193836_wxoalriz.gif

이러게 됩니다 

select * from g5_images "

이러게 하면 다 불러오고 여기서 불러온값이

$row['path']인데 이값이 /data/editor/1606/20160608193836_wxoalriz.gif

식이라면 아래처럼 하면 될듯하네요

 

$aa = explode("/", $row['path']);

if ($aa[4]!=$entry2) {

$cnt2++;

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

}

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

답변에 대한 댓글 1개

웹스토리2
9년 전
$row = sql_fetch(" select * from g5_images "); 이렇게 다 불어 오고 말씀해 주신대로 했는데 여전히 디비에 등록된것도 안되있다고 출력 되네요 ㅠㅠ;

뭔가 제 능력 밖인거 같습니다...ㅠㅠ;;; 이거 때문에 탈모 올꺼 같아요 ㅠㅠ 신경 써주셔서 진심으로 감사드립니다. 에디터 불용 이미지가 분명 큰 문제인데 뽀죡한 답이 없네요. 파일 업로드 하고 창 닫으면 그게 다 무의미하게 업로드되는 문제인데요 ㅠㅠ

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

쿵 파일 자르기 소스를 이용해서

$aa = explode("/", $a);

 

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

답변에 대한 댓글 1개

웹스토리2
9년 전
죄송합니다 무슨 의미 인지를 모르겠습니다. ㅠㅠ

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

오호

답을 가지구게신데요

$val 를 지정하고

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

만  select * from g5_images where path='{$entry2}'"

식으로바꾸면 될꺼같은데

 

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

$cnt2++;

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

}

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

답변에 대한 댓글 2개

웹스토리2
9년 전
댓글 너무 감사드립니다. 바로 해봤는데 디비에 등록된 파일도 다 같이 나오네요 ㅠ.ㅠ 디비에는 정보가 잘 올라가 있는데 위 프로그램을 돌려 보면 파일이 디비에 없습니다. 하면서 나와버립니다. ㅠㅠ;; 디비에 등록된건 안나와야 완성인데 뭐가 문제인지를 모르겠네요 ㅠㅠ
웹스토리2
9년 전
참고로 디비에 path 라는 필드에는 /data/editor/1606/20160608193836_wxoalriz.gif 이렇게 저장이 됩니다. ㅠㅠ

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

왜 저 소스를 가지구그러세요 그냥

 $sql = " select * from g5_images"

    $result = sql_query($sql);

 

    while ($row = sql_fetch_array($result)){

 

 

             if(!is_file($row[path])){

                                       // 원본 파일이 없다면
                필드내용을 삭제

 

                }

}

위처럼 하면되자나요

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

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

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

로그인