[ editor ] cheditor 이미지 첨부 파일 관리 > gnuboard

본문 바로가기
사이트 내 전체검색

gnuboard

팁자료 [ editor ] cheditor 이미지 첨부 파일 관리

페이지 정보

작성자 웹지기 댓글 0건 조회 2,987회 작성일 18-09-19 15:34

본문

아래 내용은 다음 웹브라우저에서 확인된 기능들 입니다.
 Internet Explorer 9 , Firefox 8 ,  Chrome 17.0.932.0 dev-m , Opera 11.52 , Safari 5.111 (7534.51.22)

수정, 추가한 파일 목록과 경로
 - config.php
 - extend/cheditor_key.php
 - cheditor5/popup/_common.php (파일추가) 

 - chediotr5/popup/image.html
 - chediotr5/popup/js/image.js
 - cheditor5/imageUpload/_config.php 
 - chediotr5/imageUpload/upload.php
 - bbs/write.php
 - bbs/write_update.php
 - bbs/delete.php
 - bbs/delete_all.php
 - bbs/move_update.php 
 


지금부터는 위에 나열된 순서대로 파일을 수정한 부분과 추가한 부분에 대해서 정리를 합니다.
물론 이 소스 그대로 사용을 하셔도 되지만, 별도의 키는 자신이 만드셔야 합니다.

※ HTML 파일내에서 PHP 태그를 사용하지 못하면은 사용할 수 없는 방법입니다.


* phpmyAdmin 에서 본  g4_board_cheditor  구조
 
--
-- 테이블 구조 `g4_board_cheditor`
--

CREATE TABLE IF NOT EXISTS `g4_board_cheditor` (
  `bo_table` varchar(20) NOT NULL,
  `wr_id` int(11) NOT NULL DEFAULT '0',
  `bc_no` int(11) NOT NULL DEFAULT '0',  
  `bc_dir` varchar(100) NOT NULL,
  `bc_file` varchar(255) NOT NULL,
  `bc_sessid` varchar(40) NOT NULL DEFAULT '0',
  `bc_datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`bc_file`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 


* ./config.php
설명 :
cheditor 이미지 첨부 파일을 관리할 테이블

소스 :
 
//
// 기타
//
$g4['board_cheditor_table']         = $g4['table_prefix'] . "board_cheditor";// 게시판 cheditor 첨부파일 테이블


* ./extend/cheditor_key.php
설명 :  
고유의 키 값을 만들기 위해서 세션을 이용하며, 이후에 $member 에 키 값을 저장해 놓음

소스 : 
 
<?php
ob_start();// head_sub.php header 관련 에러시에 추가 적용함
// CHEDITOR 문제로 인해서 새로운 key 값 생성
set_session('ss_throw_id', md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $member['mb_id'] . $_SERVER['HTTP_USER_AGENT'] . $member['mb_password']));
$member['throw_id'] = $_SESSION['ss_throw_id'];
?> 

※ 2013-07-18 "공유인" 님께서 댓글로 남겨주신 사항이 Header() 에러 부분을 처리하기위해서 위 소스에 붉은색 글씨 부분을 추가 하였습니다.


* ./cheditor5/popup/_common.php  파일 추가
설명 :
그누보드의 common 파일을 이용하기 위함.

소스 : 

 
<?php
$g4_path = "../.."; // 경로
include_once("$g4_path/common.php");
?>
 

 
* ./cheditor5/popup/image.html  1행 , 10~11행
설명 : 
cheditor은 플래시로 파일을 업로드 하지만 IE를 제외한 브라우저에서 별도의 고유 키값을 넘겨주기 위해서 자바스크립트를 이용함. (테스트 브라우저 IE9, FF7, Crome, Opera, Safari )

※ 개인이 가질수 있는 고유한 값을 가지면 될것이라 판단됨
소스 ( 1행 ) :
 
<?php
include_once("_common.php");
$throw_id = $member['throw_id'];
?>
 
소스 ( 10 ~ 11 행) : 
<script src="js/image_upload_flash.js" type="text/javascript"></script>
<script type="text/javascript">
var throwid = '<?php echo  $throw_id; ?>';
</script>
 

굵게 표시된 부분을 추가 하되 '  $throw_id; ' 부분은 각자 고유값을 이용하시기 바랍니다.


* ./cheditor5/popup/js/image.js 72 행
설명 :
위에 정의된 image.html 파일에서 불러진 images.js 가 trhowid 값을 upload.php 로 넘기기 위해서 소스를 수정함
 
스 :
 

function init(dialog) { oEditor = this; oEditor.dialog = dialog; var dlg = new Dialog(oEditor); UploadImagePath = oEditor.config.iconPath + 'imageUpload'; UploadButton = oEditor.config.iconPath + 'imageUpload/add_image_button.gif'; AppSRC = oEditor.config.popupPath + 'flash/CHXImage'; Uploadscript = oEditor.config.editorPath + 'imageUpload/upload.php?throwid='+throwid;



* ./cheditor5/
 imageUpload/_config.php  
설명 :
기본 cheditor 의 설정을 이용해도 되지만, 추후 관리를 위해서 저장 경로를 설정함
SAVE_DIR2 를 정의하여서 내가 원하는 경로로 정함

소스 : 
 
define("SAVE_DIR", "$g4[path]/data/$g4[cheditor4]/$ym");
define("SAVE_DIR2", "data/$g4[cheditor4]/$ym");
 
※ 2013-07-18 공유인님이 $g4[cheditor4]에서 빈 공백이 있는것을 알려 주셔서 수정하였습니다.

* ./cheditor5/imageUpload/upload.php  "echo $rdata;" 아래에 추가

설명 : 
이미지 파일이 아니면은 SQL을 실행하지 않기 위해서 cheditor의 "-ERR" 값은 실행하지 않음.
순서는 정확하지 않지만, 순서를 정하기 위해서 이미 삽입된 내역에 대해서 순서를 정해봄.
그누보드의 $member['throwid'] 의 값을  cheditor_table 에 삽입하기 

이때 게시판명과 글 번호는 비우게 됨.   그외 정보는 write_update.php 에 처리 하면 됨.

소스 :
if($random_name != "-ERR") {
//디렉토리를 개인 설정에 맞춤
$bc_dir = SAVE_DIR2;

//첨부된 파일 순서 정해 주기
$sql = " SELECT bc_file, bc_sessid FROM ".$g4['board_cheditor_table']."  WHERE bc_sessid = '".$throwid."' ";
$result = sql_query($sql);
$bc_no = mysql_num_rows($result) + 1;

//실질적으로 table에 저장
$sql = " INSERT INTO ".$g4['board_cheditor_table']."
            SET bo_table = '',
            wr_id = '',
            bc_no = '".$bc_no."',
            bc_dir = '".$bc_dir."',
            bc_file = '".mysql_real_escape_string($random_name)."',
            bc_sessid = '".$throwid."', 
                bc_datetime = '".$g4['time_ymdhis']."' ";
sql_query($sql);
}



* ./bbs/write.php 417 행 근처
설명 :
글 수정시에 고유 키 값인 $member['throwid'] 값으로 변경하여서 이후에 글 수정시에 삭제된 내용이 있다면은 제거하기 위한 기본값을 설정

소스 : 
// cheditor 처리해주기
$sql = " UPDATE ".$g4['board_cheditor_table']." SET bc_sessid = '".$member['throw_id']."' WHERE bo_table = '".$bo_table."' AND wr_id = '".$wr_id."' ";
sql_query($sql);

 
* ./bbs/write_update.php 610 행 근처 추가
설명 :
각자 첨부된 파일에 대해서 각 게시물에 대해서 직접 사용하고 있는지 체크 합니다.
이전에 공개된 소스의 HTML 태그에서 추출보다는 정확하게 처리 할수 있으며, 누락이 없습니다. (이전 버전은 차마 공개 할수가...)

고유값 (PHP SESSION ID)는 브라우저를 닫거나 로그아웃 하면은 변할 수 있기에, 이미 작성이 완료되고, 게시판명과 게시물 주소등의 정보가 들어간 cheditor 첨부 파일에 대해서는 더이상 SESSION ID를 저장하기 않고 비워 버립니다.

소스 :
// 사용자 코드 실행
@include_once ("$board_skin_path/write_update.skin.php");
// ------------------------------------------------------------
// cheditor 첨부 파일 member['throwid'] 를 비워 주기
$sql = " UPDATE ".$g4['board_cheditor_table']." SET bo_table = '".$bo_table."', wr_id = '".$wr_id."', bc_sessid = '' WHERE bc_sessid = '".$member['throw_id']."' ";
sql_query($sql);

// cheditor 첨부 파일 한개식 모두 체크하기
$sql = " SELECT bo_table, wr_id, bc_dir, bc_sessid, bc_file, bc_datetime  FROM ".$g4['board_cheditor_table']." WHERE bo_table = '".$bo_table."' AND wr_id = '".$wr_id."' ORDER BY bc_datetime ASC";
$return = sql_query($sql);

while ($row = sql_fetch_array($return))
{
// 직접 게시판에서 검색하기
$sql_a = " SELECT wr_id, wr_content FROM ".$write_table." WHERE wr_id = '".$row['wr_id']."' AND wr_content LIKE '%".$row['bc_file']."%' ";
$value = sql_fetch($sql_a);
$check_file = $value['wr_id'];
// 불필요한 파일 삭제하기
if(empty($check_file) == true) {
$file_path = $g4['path']."/".$row['bc_dir']."/".$row['bc_file'];
@unlink($file_path);
$sql_d = " DELETE FROM ".$g4['board_cheditor_table']." WHERE bc_file = '".$row['bc_file']."' AND bc_dir = '".$row['bc_dir']."' ";
sql_query($sql_d);
}
}


* ./bbs/delete.php
설명 :
기존에 첨부파일 삭제 아래에 cheditor 의 이미지 첨부파일 삭제 실행을 해주고, DB에서도 정보를 삭제 한다. 

소스 : 

        // 파일테이블 행 삭제
        sql_query(" delete from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$row[wr_id]' ");

       //업로드된 파일이 있다면 파일 삭제
        $sql3 = " select * from $g4[board_cheditor_table] where bo_table = '$bo_table' and wr_id = '$row[wr_id]' ";
        $result3 = sql_query($sql3);
        while ($row3 = sql_fetch_array($result3)) {
            @unlink($g4['path']."/".$row3['bc_dir']."/".$row3['bc_file']);
        }

        // 파일테이블 행 삭제
        sql_query(" delete from $g4[board_cheditor_table] where bo_table = '$bo_table' and wr_id = '$row[wr_id]' ");

* ./bbs/delete_all.php
설명 :
기존에 첨부파일 삭제 아래에 cheditor 의 이미지 첨부파일 삭제 실행을 해주고, DB에서도 정보를 삭제 한다.

소스 : 
            // 파일테이블 행 삭제
            sql_query(" delete from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$row[wr_id]' ");

            // 업로드된 파일이 있다면
            $sql3 = " select * from $g4[board_cheditor_table] where bo_table = '$bo_table' and wr_id = '$row[wr_id]' ";
            $result3 = sql_query($sql3);
            while ($row3 = sql_fetch_array($result3)) {
                // 파일삭제
                @unlink($g4['path']."/".$row3['bc_dir']."/".$row3['bc_file']);
            }
            
            // 파일테이블 행 삭제
            sql_query(" delete from $g4[board_cheditor_table] where bo_table = '$bo_table' and wr_id = '$row[wr_id]' ");
 
 

* ./bbs/move_update.php  
설명 :
cheditor로 이미지 첨부 파일은 " 년.월" 기준이므로 별도로 삭제 이동하지 않습니다.
단지, 저장된 정보에서 경로를 변경하여서 불 필요한 정보의 삭제나 이동이 없도록 한다.

소스 : 
 
                    if ($sw == "move" && $row3[bf_file])
                        $save[$cnt][bf_file][$k] = "$src_dir/$row3[bf_file]";
                }

               // cheditor  파일은 경로만 변경하고 실제 지우지 않는다.
                $sql4 = " select * from $g4[board_cheditor_table] where bo_table = '$bo_table' and wr_id = '$row2[wr_id]' order by bc_datetime ";
                $result4 = sql_query($sql4);
                for ($k=0; $row4 = sql_fetch_array($result4); $k++) 
                {
                    $sql = " update $g4[board_cheditor_table] 
                                set bo_table = '$move_bo_table', 
                                    wr_id = '$insert_id', 
                                    bc_dir = '$row4[bc_dir]', 
                                    bc_datetime = '$row4[bc_datetime]' 
                              where bc_file = '$row4[bc_file]' ";
                    sql_query($sql);
                }

31405404_1e212814_screen001.gif

 

31405404_f51d51d2_screen002.gif

 
추천0 비추천0

댓글목록

등록된 댓글이 없습니다.

Total 54건 4 페이지
+1
  • 열람중 팁자료[ editor ] cheditor 이미지 첨부 파일 관리
  • 아래 내용은 다음 웹브라우저에서 확인된 기능들 입니다.Internet Explorer 9 , Firefox 8 , Chrome 17.0.932.0 dev-m , Opera 11.52 , Safari 5.111 (7534.51.22) 수정, 추가한 파일 목록과 경로- config.php- extend/cheditor_key.php- cheditor5/popup/_common.ph...
  • 웹지기 09-19 2988 0 0 댓글 0
  • 7 팁자료한글도메인시 자동등록방지오류(chaptcha)
  • 한글도메인일때 ie10 이하 버젼의 엑박 문제해결은 kcaptcha.lib.php 파일에서 chaptcha_html() 함수 안에 있는 g5_captcha_url의 경로를 상대경로로 변경$html .= "\n".'&lt;script&gt;var g5_captcha_url = "'.G5_CAPTCHA_URL.'";&lt;/script&gt;';---------------&gt;$html .= "\n"....
  • 웹지기 09-11 4596 0 0 댓글 0
  • 6 팁자료회원탈퇴 추가 방법
  • &lt;a href="&lt;?php echo G5_BBS_URL;?&gt;/member_confirm.php?url=http://funyphp.com/member_leave#034;&gt;회원탈퇴&lt;/a&gt;
  • 웹지기 09-07 4942 0 0 댓글 0
+1
  • 5 플러그인nhn kcp 본인확인서비스 테스트
  • nhn kcp 본인확인서비스 테스트 진행시4개의 통신사중에서 kt로 테스트를 해야 테스트를 진행 할 수가 있고다음과 같이 문자가 오지않고 코드자체가 적어지게 된다.이코드를 인증코드에 입력하여서 진행하면 된다.
  • 웹지기 09-07 5094 0 0 댓글 0
  • 4 팁자료nhn kcp 본인인증확인 서비스 오픈메일 이후 설정
  • kcp의 본인확인서비스 오픈메일 확인 받은 이후 설정관리자 &gt; 기본환경설정 &gt; 본인확인 &gt; 테스트또는 실서비스 선택관리자 &gt; 기본환경설정 &gt; 휴대폰본인확인 &gt; nhn kcp 휴대폰 본인확인 선택관리자 &gt; 기본환경설정 &gt; nhn kcp 사이트코드 &gt; sm 뒷부분 부여받은 코드입력웹서버 쉘접속 또는 파일질라와 같은 ftp접속 &gt; /해당계정/plugin/kcpc...
  • 웹지기 09-07 4777 0 0 댓글 0
  • 3 스킨게시물 순번 변경
  • 파일 구성bbs/ㄴforwardNum_update.phptheme/basic/skin/board/sort/ㄴlist.skin.phpㄴview.skin.phpㄴview_common.skin.phpㄴwrite.skin.phpㄴstyle.csstheme/basic/skin/board/sort/img/bbs폴더에 forwardNum_update.php파일을 업로드테마 스킨게시판을 스킨 게시판 폴더에 새폴더를 만들던지 아니면 기존 폴더에 업로드게시글 수정시 카테고리가 있다면 해당 카테고리에서의 순번으로 하...
  • 웹지기 09-06 4656 0 0 댓글 0
+4
  • 2 스킨관리자에서 게시글 관리 게시판 제어
  • 전체 파일 구성 /adm/ └ admin.menu300.php └ admin.old.menu300.php /adm/bbs/ └ _common.php └ adm.bbs.config.php └ adm.bbs.css └ ajax.autosave.php └ ajax.autosavedel.php └ ajax.autosavelist.php └ ajax.autosaveload.php └ ajax.comment_token.php └ ajax.filter.php └ board.php ...
  • 웹지기 08-30 6358 0 0 댓글 0
  • 1 스킨그누보드5 상단 메뉴 / 중단 메뉴 네비게이션(예제)
  • 사용함수- get_top_navi() 상단메뉴를 배열로 불러오는 함수- get_middle_navi() 중간메뉴를 배열로 불러오는 함수파일 목록/extend/navigation.extend.php =&gt; 메뉴를 배열로 저장예제파일/theme/basic/head.php =&gt; 상단메뉴와 중간 메뉴의 예제 -- 배열 불러오는 방법 예제사용방법 간단 설명/extend/navigation.extend.php 파일에서 사용자가 사용할 변수들을 저장이 파일은 자동으로 불러와 지니 따...
  • 웹지기 08-30 6275 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
275
어제
11,874
최대
33,828
전체
8,534,311

그누보드5
Copyright © funyphp.com. All rights reserved.