<?php // (2020.12.28, 차재복, Cha Jae Bok, cjbword@gmailcom)
# 세션 설정
// 세션 스타트 (매 웹페이지 마다 필요)
session_start();
// 세션 변수에 따른 사용자 타입 설정 ('일반사용자' or '테스트편집자' or '정식편집자' or '종합관리자')
$_SESSION['user_type'] = ( empty($_SESSION['user_name']) ? '일반사용자' : $_SESSION['user_name'] );
# 편집 권한 확인
if ($_SESSION['user_type']!='종합관리자') {
echo json_encode(array('err_msg'=>'편집권한없음!'), JSON_UNESCAPED_UNICODE);
exit;
}
// ('일반사용자' or '테스트편집자' or '정식편집자' or '종합관리자')
# db 접속 (dbi)
include_once "../base_utils/db_conn.php";
# 전송 입력 매개변수
$choice = $_POST['choice'];
$type = trim($type);
$no = $_POST['no'];
if ( isset($_REQUEST[no]) and !empty($no) and !is_numeric($no) or $no<0 ) exit; // 해킹방지 (수치>0)
$id = $_REQUEST['id'];
if ( isset($_REQUEST[id]) and !empty($id) and !is_numeric($id) or $id<0 ) exit; // 해킹방지 (수치>0)
$msg = $_POST['msg']; // name(title)
$msg = trim($msg);
$text = $_POST['text']; // yoyak(desc), content
$text = trim($text);
# 전송 매개변수에 따라, 해당 update 함수 호출
if($choice == 'word_gubun_name_yoyak_update'
or $choice == 'source_name_expr_update'
or $choice == 'manual_name_yoyak_update') {
// $choice에 따라, 다른 테이블 적용
if($choice == 'word_gubun_name_yoyak_update')
$table_name = 'gubun_tree_v2';
else if($choice == 'source_name_expr_update')
$table_name = 'src_files_v2';
else if($choice == 'manual_name_yoyak_update')
$table_name = 'reform';
else return;
// update 함수 호출
name_yoyak_update($choice, $id, $msg, $text, $dbi, $table_name);
} else if($choice == 'word_titlename_yoyak_update' and !empty($no)) {
word_titlename_yoyak_update($id, $no, $msg, $text, $dbi);
} else if($choice == 'db_tbl_fld_comment_update') {
db_tbl_fld_comment_update($id, $no, $text, $dbi);
} else {
echo json_encode( array('err_msg'=>'해당되는 선택 사항 없음'), JSON_UNESCAPED_UNICODE);
}
// (디버깅용)
//echo json_encode(array('err_msg'=>"type=$type, id=$id, msg=$msg, text=$text"), JSON_UNESCAPED_UNICODE);
# 해당 id의 name 및 yoyak 업데이트
function name_yoyak_update($choice, $id, $msg, $text, $dbi, $table_name) {
// 해킹 방어
$name = mysqli_real_escape_string($dbi,$msg);
$yoyak = mysqli_real_escape_string($dbi,$text);
// name,yoyak 교체 쿼리
$query = "update {$table_name} set name='{$name}',yoyak='{$yoyak}' where id={$id} limit 1";
$result = mysqli_query($dbi,$query);
if (mysqli_errno($dbi)) { $err_msg .= mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n"; }
// db 처리 결과의 에러 유무에 따라 판단 수행
if (!empty($err_msg)){
$return = array('err_msg'=>$err_msg .' : 업데이트 실패');
} else {
if (mysqli_affected_rows($dbi) > 0){
$return = array('notice'=>'업데이트 성공 !!!','title'=>$msg,'desc'=>$text);
} else {
$return = array('notice'=>'업데이트 안함');
}
}
// 송출
echo json_encode($return, JSON_UNESCAPED_UNICODE);
}
# 해당 no의 title_name 및 yoyak 업데이트
function word_titlename_yoyak_update($id, $no, $msg, $text, $dbi) {
$table_name = 'book_idx';
// 해킹 방어
$name = mysqli_real_escape_string($dbi,$msg);
$yoyak = mysqli_real_escape_string($dbi,$text);
// titlename,yoyak 교체 쿼리
$query = "update {$table_name} set titlename='{$name}',yoyak='{$yoyak}' where no={$no} and $id={$id} limit 1";
$result = mysqli_query($dbi,$query);
if (mysqli_errno($dbi)) { $err_msg .= mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n"; }
// db 처리 결과의 에러 유무에 따라 판단 수행
if (!empty($err_msg)){
$return = array('err_msg'=>$err_msg .' : 업데이트 실패');
} else {
if (mysqli_affected_rows($dbi) > 0){
$return = array('notice'=>'업데이트 성공 !!!','title'=>$msg,'desc'=>$text);
} else {
$return = array('notice'=>'업데이트 안함');
}
}
// 송출
echo json_encode($return, JSON_UNESCAPED_UNICODE);
}
#
function db_tbl_fld_comment_update($id, $no, $text, $dbi) {
// id: db table 번호, no : field 번호, text : comment
// $return = array('err_msg'=>'id='.$id.', no='.$no.', text='.$text);
if(!empty($_SESSION['db_name'])) $db_name = $_SESSION['db_name'];
else $db_name = 'test';
$query = "select (@row_number:=@row_number + 1) as id,
table_name as name,
table_comment as yoyak,
'1' as child,
'table' as item_type
from (select @row_number:=0) as t, information_schema.tables
where table_schema='{$db_name}'";
$result = mysqli_query($dbi,$query);
if (mysqli_errno($dbi)) { $err_msg .= mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n"; }
while ( $matched = mysqli_fetch_assoc($result) ) {
if($matched[id]==$id) {
$yoyak = mysqli_real_escape_string($dbi,$text);
// table
if(empty($no)) {
$query = "alter table {$matched[name]} comment='{$yoyak}'";
$update = mysqli_query($dbi,$query);
if (mysqli_errno($dbi)) { $err_msg .= mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n"; }
$return = array('desc'=>$text);
// field
} else {
$query = "select (@row_number:=@row_number + 1) as id,
column_name,
column_type
from (select @row_number:=0) as t, information_schema.columns
where table_name = '{$matched[name]}'
and table_schema = '{$db_name}'
order by column_name";
$sub_result = mysqli_query($dbi,$query);
if (mysqli_errno($dbi)) { $err_msg .= mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n"; }
while ( $column = mysqli_fetch_assoc($sub_result) ) {
if($no == $column[id]) {
$query = "alter table {$matched[name]} modify {$column[column_name]} {$column[column_type]} comment '{$text}'";
$column_result = mysqli_query($dbi,$query);
if (mysqli_errno($dbi)) { $err_msg .= mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n"; }
$return = array('desc'=>$text);
}
}
}
}
}
// 송출
echo json_encode($return, JSON_UNESCAPED_UNICODE);
}