728x90
PHP 위지윅 에디터를 추가하여 글쓰기하는 기능의 화면이다.
파일 첨부가 없는 경우에는 ajax 처리가 정상동작 한다.
하지만 파일 첨부가 있는 것은 인식 못하고 있다. 수정해 줘야 동작된다. 해답은 아래에....
<?php
error_reporting(0);
//*
ini_set("display_startup_errors", 1);
ini_set("display_errors", 1);
error_reporting(E_ALL);
// */
// 테이블 접속 처리
require_once 'path.php';// root 폴더를 기준으로 상대적인 경로 자동 구하기
require_once $g['path_root'].'sessionChk.php';
require_once $g['path_root'].'deviceChk.php';
if($mtype == 3) require_once $g['path_root'].'ipFiltering.php';
require_once $g['path_config'].'config.php';
require_once $g['path_config'].'dbconnect.php';
require_once $g['path_class'].'dbDataClass.php';
require_once $g['path_class'].'dbconnect.php';
require_once $g['path_class'].'bbsClass.php';
$b = new bbsClass();
$d = new LegacyDBClass;
$idx = isset($_GET['idx']) ? $d->XSSFilter($_GET['idx']): 0;
$curPage = isset($_GET['p']) ? $d->XSSFilter($_GET['p']) : 1;
if($idx > 0){
$R=$d->getDbData('bbs_data','idx='.(int)$idx,'*');
} else {
$R['idx'] = 0;
$R['subject'] = '';
$R['content'] = '';
}
?>
<div class="table-responsive text-nowrap">
<form id="bbsForm" method="post" enctype="multipart/form-data" class="text-center border border-light p-5">
<table class="table table-striped table-bordered table-hover table-sm" cellspacing="0" width="100%">
<input type="hidden" name="mode" value="write" />
<input type="hidden" name="p" value="<?php echo $curPage;?>" />
<input type="hidden" name="idx" value="<?php echo $R['idx'];?>" />
<tr>
<td><input type="text" name="subject" id="subject" class="form-control mb-4" placeholder="제목을 입력하세요" value="<?=$R['subject'];?>"></td>
</tr>
<tr>
<td>
<?php if($skin_editor==1):?>
<textarea name="content" id="content" class="form-control mb-4 summernote" rows="10">
<?php echo htmlspecialchars($R['content']);?>
</textarea>
<?php endif;?>
<?php if($skin_editor==2):?>
<textarea name="content" id="ir1" class="form-control mb-4" rows="10" style="width:100%;display:none;">
<?php
if(isset($R['content'])&& strlen($R['content'])){
echo $b->conv_content($R['content']);
} else { echo '';}
?>
</textarea>
<!-- 아래 스크립트를 추가 -->
<script type="text/javascript" src="<?php echo $g['path_plugin']?>smarteditor/js/service/se2_insert.js"></script>
<?php endif;?>
</td>
</tr>
<tr>
<td><input type=file name="file" id="file" class="form-control mb-4" size=30 /></td>
</tr>
<tr>
<td>
<button class="btn btn-info btn-block my-4" id="bbsRegister" type="submit">등록</button>
</td>
</tr>
</table>
</form>
</div>
<script>
$('#bbsRegister').click(function(e){
e.preventDefault();
var subject = $('#subject');
var curPage = $('input[name=p]').val();
var uri = "bbsList.php";
if(subject.val() ==''){
alert('제목을 입력하세요');
subject.focus();
return false;
}
// 이부분에 smarteditor validation 검증
var ir1_data = oEditors.getById['ir1'].getIR();
var checkarr = ['<p> </p>',' ','<p><br></p>','<p></p>','<br>'];
if(jQuery.inArray(ir1_data.toLowerCase(), checkarr) != -1){
alert("내용을 입력하세요.");
oEditors.getById["ir1"].exec('FOCUS');
return false;
}
// id가 ir1인 에디터의 내용이 textarea에 적용됨
oEditors.getById["ir1"].exec("UPDATE_CONTENTS_FIELD", []);
$.ajax({
url:'bbsWriteChk.php',
type: 'POST',
data: $("#bbsForm").serializeArray(),
dataType:'text',
success:function(msg){
console.log(msg);
if(msg == 1){
alert('게시글을 등록했습니다.');
MemberListTable('','',curPage,uri,'','','','',0);
} else if(msg == 2){
alert('게시글을 수정했습니다.');
MemberListTable('','',curPage,uri,'','','','',0);
} else if(msg==-1){
alert('첨부할 수 없는 파일입니다.');
} else if(msg==-2){
alert('수정권한이 없습니다.');
} else {
alert('데이터를 다시 한번 확인하세요');
return false;
}
},
error: function(jqXHR, textStatus, errorThrown){
alert("arjax error : " + textStatus + "\n" + errorThrown);
}
});
});
</script>
|
파일 첨부를 인식하는 코드
encType: 'multipart/form-data', // 필수
processData: false, // 필수
contentType: false, // 필수
data: formData, // 필수
<?php
error_reporting(0);
//*
ini_set("display_startup_errors", 1);
ini_set("display_errors", 1);
error_reporting(E_ALL);
// */
// 테이블 접속 처리
require_once 'path.php';// root 폴더를 기준으로 상대적인 경로 자동 구하기
require_once $g['path_root'].'sessionChk.php';
require_once $g['path_root'].'deviceChk.php';
if($mtype == 3) require_once $g['path_root'].'ipFiltering.php';
require_once $g['path_config'].'config.php';
require_once $g['path_config'].'dbconnect.php';
require_once $g['path_class'].'dbDataClass.php';
require_once $g['path_class'].'dbconnect.php';
require_once $g['path_class'].'bbsClass.php';
$b = new bbsClass();
$d = new LegacyDBClass;
$idx = isset($_GET['idx']) ? $d->XSSFilter($_GET['idx']): 0;
$curPage = isset($_GET['p']) ? $d->XSSFilter($_GET['p']) : 1;
if($idx > 0){
$R=$d->getDbData('bbs_data','idx='.(int)$idx,'*');
} else {
$R['idx'] = 0;
$R['subject'] = '';
$R['content'] = '';
}
?>
<div class="table-responsive text-nowrap">
<form id="bbsForm" method="post" class="text-center border border-light p-5">
<table class="table table-striped table-bordered table-hover table-sm" cellspacing="0" width="100%">
<input type="hidden" name="mode" value="write" />
<input type="hidden" name="p" value="<?php echo $curPage;?>" />
<input type="hidden" name="idx" value="<?php echo $R['idx'];?>" />
<tr>
<td><input type="text" name="subject" id="subject" class="form-control mb-4" placeholder="제목을 입력하세요" value="<?=$R['subject'];?>"></td>
</tr>
<tr>
<td>
<?php if($skin_editor==1):?>
<textarea name="content" id="content" class="form-control mb-4 summernote" rows="10">
<?php echo htmlspecialchars($R['content']);?>
</textarea>
<?php endif;?>
<?php if($skin_editor==2):?>
<textarea name="content" id="ir1" class="form-control mb-4" rows="10" style="width:100%;display:none;">
<?php
if(isset($R['content'])&& strlen($R['content'])){
echo $b->conv_content($R['content']);
} else { echo '';}
?>
</textarea>
<!-- 아래 스크립트를 추가 -->
<script type="text/javascript" src="<?php echo $g['path_plugin']?>smarteditor/js/service/se2_insert.js"></script>
<?php endif;?>
</td>
</tr>
<tr>
<td><input type=file name="file" id="file" class="form-control mb-4" size=30 /></td>
</tr>
<tr>
<td>
<button class="btn btn-info btn-block my-4" id="bbsRegister" type="submit">등록</button>
</td>
</tr>
</table>
</form>
</div>
<script>
$('#bbsRegister').click(function(e){
e.preventDefault();
var idx = $('input[name=idx]').val();
var subject = $('#subject');
var curPage = $('input[name=p]').val();
var uri = "bbsList.php";
if(subject.val() ==''){
alert('제목을 입력하세요');
subject.focus();
return false;
}
// 이부분에 smarteditor validation 검증
var ir1_data = oEditors.getById['ir1'].getIR();
var checkarr = ['<p> </p>',' ','<p><br></p>','<p></p>','<br>'];
if(jQuery.inArray(ir1_data.toLowerCase(), checkarr) != -1){
alert("내용을 입력하세요.");
oEditors.getById["ir1"].exec('FOCUS');
return false;
}
// id가 ir1인 에디터의 내용이 textarea에 적용됨
oEditors.getById["ir1"].exec("UPDATE_CONTENTS_FIELD", []);
// 파일 첨부 기능을 사용할 때에는 아래와 같이 해야 동작된다.
var formData = new FormData();
var files = $('#file')[0].files[0];
formData.append('file',files);
formData.append('mode','write');
formData.append('idx', idx);
formData.append('subject',subject.val());
formData.append('content',ir1_data);
$.ajax({
url:'bbsWriteChk.php',
type: 'POST',
dataType:'text',
encType: 'multipart/form-data', // 필수
processData: false, // 필수
contentType: false, // 필수
data: formData, // 필수
async: false,
success:function(msg){
console.log(msg);
if(msg == 1){
alert('게시글을 등록했습니다.');
MemberListTable('','',curPage,uri,'','','','',0);
} else if(msg == 2){
alert('게시글을 수정했습니다.');
MemberListTable('','',curPage,uri,'','','','',0);
} else if(msg==-1){
alert('첨부할 수 없는 파일입니다.');
} else if(msg==-2){
alert('수정권한이 없습니다.');
} else {
alert('데이터를 다시 한번 확인하세요');
return false;
}
},
error: function(jqXHR, textStatus, errorThrown){
alert("arjax error : " + textStatus + "\n" + errorThrown);
}
});
});
</script>
|
728x90
'Web 프로그램 > 테이블, 게시판, 검색' 카테고리의 다른 글
PHP 위지윅 에디터 View (0) | 2023.07.02 |
---|---|
PHP 위지윅 에디터 글쓰기 DB 저장 처리 (0) | 2023.06.28 |
bootstrap4 paging with PHP (0) | 2022.02.27 |
XSS(cross-site scripting) filtering function in PHP (0) | 2018.05.01 |
PHP 네이버 스마트에디터 연동 방법 (0) | 2018.04.15 |