001002003004005006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
<?php // (2020.7.21, 차재복, Cha Jae Bok, http://www.ktword.co.kr) # 세션 설정 // 세션 스타트 (매 웹페이지 마다 필요) session_start(); # db 접속 include "../base_utils/db_conn.php"; # 전송 매개변수 $id = $_REQUEST['id']; if ( isset($_REQUEST[id]) and !empty($id) and !is_numeric($id) or $id<0 ) exit; // 해킹방지 (수치>0) $id_list = $_REQUEST['id_list']; if (!empty($id_list) and !preg_match('/^\d[,\d]*\d$|^\d$/',$id_list)) exit ("해킹방어"); // 해킹방지 $ch = $_REQUEST['ch']; $str = $_REQUEST['str']; # db 쿼리 실행 // 해당 id의 table 내용 표출 if ($ch == 'table_show' or empty($ch)) { $query = "select * from reform where depth=1 and id={$id}"; $result = mysqli_query($dbi,$query); if (mysqli_errno($dbi)) { echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";} while ($matched = mysqli_fetch_assoc($result)) { $output = $matched[translated]; } echo $output; } else if ($ch == 'show' or empty($ch)) { $query = "select * from reform where id={$id} order by sub_seq"; $result = mysqli_query($dbi,$query); if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";} $matched = mysqli_fetch_assoc($result); $output = str_replace('&','&',$matched[merged]); // => &nbsp; echo $output; // 해당 id의 table 내용 update } else if ($ch == 'edit' and isset($_REQUEST['str'])) { $clean_str = mysqli_real_escape_string($dbi, $str); $query = "update reform set merged='$clean_str',date=now() where id={$id}"; $result = mysqli_query($dbi,$query); if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";} // if (mysqli_affected_rows($dbi) == 1) echo "1 row updated !!! <br>"; include "file_transform_v2.php"; $translated_str = string_transform($str, $dbi); $translated_str = mysqli_real_escape_string($dbi, $translated_str); $query = "update reform set translated='$translated_str' where id={$id}"; $result = mysqli_query($dbi,$query); if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";} // if (mysqli_affected_rows($dbi) == 1) echo "1 row translated !!!"; echo "<meta http-equiv='refresh' content='0; url=../reform/special.php?gr={$id}&ch=reform'>"; } else if ($ch == 'tr_show') { $query = "select path2node from reform where id={$id}"; $result = mysqli_query($dbi,$query); if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";} $matched = mysqli_fetch_assoc($result); $query = "select * from reform where parent in ({$matched[path2node]})"; $result = mysqli_query($dbi,$query); if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";} while ($matched = mysqli_fetch_assoc($result)) { $arr[] = array('parent'=>$matched[parent],'title'=>$matched[title],'id'=>$matched[id]); } echo json_encode($arr, JSON_UNESCAPED_UNICODE); // 매 id별 하위 ol 구축을 위한, 직하위 li 레코드들 쿼리 } else if ($ch == 'ol') { $query = "select * from reform where parent={$id} order by sub_seq"; $result = mysqli_query($dbi,$query); if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";} while ($matched = mysqli_fetch_assoc($result)) { $title = ( empty($matched[name_2nd]) ? $matched[name] : $matched[name_2nd] ); $arr[$matched[parent]][] = array('id'=>$matched[id], 'parent'=>$matched[parent], 'title'=>$title, 'title_orig'=>$matched[name], 'path2node'=>$matched[path2node], 'child'=>$matched[child],'yoyak'=>$matched[yoyak], 'more_type'=>$matched[more_type], 'more_subtype'=>$matched[more_subtype], 'more_ptr'=>$matched[more_ptr], 'table'=>$matched[translated]); } echo json_encode($arr, JSON_UNESCAPED_UNICODE); // 매 id별 하위 ol 구축을 위한, 직하위 li 레코드들 쿼리 (Ver.2) // reform 및 reform_more 조인 } else if ($ch == 'ol_v2') { $query = "select a.id,a.parent,a.sub_seq,a.name,a.name_2nd, a.path2node,a.child,a.yoyak, b.more_type,b.more_subtype,b.more_ptr,b.dir,b.file,b.func,b.parm from reform a left join reform_more b on a.id=b.id where a.parent={$id} order by a.sub_seq"; $result = mysqli_query($dbi,$query); if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";} while ($matched = mysqli_fetch_assoc($result)) { $title = ( empty($matched[name_2nd]) ? $matched[name] : $matched[name_2nd] ); $arr[$matched[parent]][$matched[sub_seq]] = array('id'=>$matched[id], 'parent'=>$matched[parent], 'sub_seq'=>$matched[sub_seq], 'title'=>$title, 'title_orig'=>$matched[name], 'path2node'=>$matched[path2node], 'child'=>$matched[child],'yoyak'=>$matched[yoyak], 'more_type'=>$matched[more_type], 'more_subtype'=>$matched[more_subtype], 'more_ptr'=>$matched[more_ptr], 'dir'=>$matched[dir], 'file'=>$matched[file], 'func'=>$matched[func], 'parm'=>$matched[parm] ); } echo json_encode($arr, JSON_UNESCAPED_UNICODE); // id list에 열거된 id 정보들을 돌려줌 } else if ($ch == 'id_list') { $query = "select a.id,a.parent,a.name,a.name_2nd, a.path2node,a.child,a.yoyak, b.more_type,b.more_subtype,b.more_ptr,b.dir,b.file from reform a left join reform_more b on a.id=b.id where a.parent in ($id_list) order by a.sub_seq"; $result = mysqli_query($dbi,$query); if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";} while ($matched = mysqli_fetch_assoc($result)) { $title = ( empty($matched[name_2nd]) ? $matched[name] : $matched[name_2nd] ); $arr[$matched[parent]][] = array('id'=>$matched[id], 'parent'=>$matched[parent], 'title'=>$title, 'title_orig'=>$matched[name], 'path2node'=>$matched[path2node], 'child'=>$matched[child],'yoyak'=>$matched[yoyak], 'more_type'=>$matched[more_type], 'more_subtype'=>$matched[more_subtype], 'more_ptr'=>$matched[more_ptr], 'dir'=>$matched[dir], 'file'=>$matched[file] ); } echo json_encode($arr, JSON_UNESCAPED_UNICODE); // 해당 id 관련 모든 하위 레코드들 쿼리 } else if ($ch == 'all_ol') { $query = "select * from reform where id!={$id} and (concat(',',path2node,',') like '%,{$id},%') order by depth,sub_seq"; $result = mysqli_query($dbi,$query); if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";} while ($matched = mysqli_fetch_assoc($result)) { $title = ( empty($matched[name_2nd]) ? $matched[name] : $matched[name_2nd] ); $arr[$matched[parent]][] = // $arr[$matched[parent]][$matched[id]] = array('id'=>$matched[id],'parent'=>$matched[parent], 'title'=>$title,'title_orig'=>$matched[name], 'path2node'=>$matched[path2node],'child'=>$matched[child],'yoyak'=>$matched[yoyak], 'more_type'=>$matched[more_type],'more_subtype'=>$matched[more_subtype], 'more_ptr'=>$matched[more_ptr]); } echo json_encode($arr, JSON_UNESCAPED_UNICODE); } ?>