팁자료 [ editor ] cheditor 이미지 첨부 파일 관리
페이지 정보
작성자 웹지기 댓글 0건 조회 4,332회 작성일 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)
지금부터는 위에 나열된 순서대로 파일을 수정한 부분과 추가한 부분에 대해서 정리를 합니다.
물론 이 소스 그대로 사용을 하셔도 되지만, 별도의 키는 자신이 만드셔야 합니다.
※ HTML 파일내에서 PHP 태그를 사용하지 못하면은 사용할 수 없는 방법입니다.
* phpmyAdmin 에서 본 g4_board_cheditor 구조
* ./config.php
설명 :
cheditor 이미지 첨부 파일을 관리할 테이블
소스 :
* ./extend/cheditor_key.php
설명 :
고유의 키 값을 만들기 위해서 세션을 이용하며, 이후에 $member 에 키 값을 저장해 놓음
소스 :
?>
굵게 표시된 부분을 추가 하되 ' $throw_id; ' 부분은 각자 고유값을 이용하시기 바랍니다.
* ./cheditor5/ imageUpload/_config.php
설명 :
기본 cheditor 의 설정을 이용해도 되지만, 추후 관리를 위해서 저장 경로를 설정함
SAVE_DIR2 를 정의하여서 내가 원하는 경로로 정함
소스 :
※ 2013-07-18 공유인님이 $g4[cheditor4]에서 빈 공백이 있는것을 알려 주셔서 수정하였습니다.
* ./cheditor5/imageUpload/upload.php "echo $rdata;" 아래에 추가
* ./bbs/write.php 417 행 근처
설명 :
글 수정시에 고유 키 값인 $member['throwid'] 값으로 변경하여서 이후에 글 수정시에 삭제된 내용이 있다면은 제거하기 위한 기본값을 설정
소스 :
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
- config.php
- extend/cheditor_key.php
- cheditor5/popup/_common.php (파일추가)
- chediotr5/popup/image.html
- chediotr5/popup/js/image.js
- cheditor5/imageUpload/_config.php
- 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
- 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_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 값 생성
// 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 로 넘기기 위해서 소스를 수정함
설명 :
위에 정의된 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");
* ./cheditor5/imageUpload/upload.php "echo $rdata;" 아래에 추가
설명 :
이미지 파일이 아니면은 SQL을 실행하지 않기 위해서 cheditor의 "-ERR" 값은 실행하지 않음.
순서는 정확하지 않지만, 순서를 정하기 위해서 이미 삽입된 내역에 대해서 순서를 정해봄.
그누보드의 $member['throwid'] 의 값을 cheditor_table 에 삽입하기
이때 게시판명과 글 번호는 비우게 됨. 그외 정보는 write_update.php 에 처리 하면 됨.
소스 :
이미지 파일이 아니면은 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를 저장하기 않고 비워 버립니다.
소스 :
* ./bbs/delete.php
설명 :
기존에 첨부파일 삭제 아래에 cheditor 의 이미지 첨부파일 삭제 실행을 해주고, DB에서도 정보를 삭제 한다.
소스 :
* ./bbs/delete_all.php
설명 :
기존에 첨부파일 삭제 아래에 cheditor 의 이미지 첨부파일 삭제 실행을 해주고, DB에서도 정보를 삭제 한다.
소스 :
* ./bbs/move_update.php
설명 :
cheditor로 이미지 첨부 파일은 " 년.월" 기준이므로 별도로 삭제 이동하지 않습니다.
단지, 저장된 정보에서 경로를 변경하여서 불 필요한 정보의 삭제나 이동이 없도록 한다.
소스 :
설명 :
각자 첨부된 파일에 대해서 각 게시물에 대해서 직접 사용하고 있는지 체크 합니다.
이전에 공개된 소스의 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 파일은 경로만 변경하고 실제 지우지 않는다.
// 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);
}
추천0 비추천0
관련링크
- http://aoiminamo.tistory.com/104 460회 연결
댓글목록
등록된 댓글이 없습니다.