Files
dnssash/adm/rb/rb_form_update.php
2026-06-11 18:47:38 +09:00

287 lines
16 KiB
PHP

<?php
$sub_menu = '000000';
include_once('./_common.php');
check_demo();
auth_check_menu($auth, $sub_menu, "w");
/**
* 로고 파일 업로드 및 유효성 검사를 처리하는 함수
* @param array|null $file_info $_FILES 배열의 요소
* @param string $target_name 저장될 파일 이름 (예: 'pc', 'pc_w')
*/
function handle_logo_upload($file_info, $target_name) {
if (empty($file_info) || empty($file_info['name'])) {
return;
}
// 이미지 파일인지 확장자 검사
if (!preg_match('/\.(gif|jpe?g|bmp|png)$/i', $file_info['name'])) {
alert($file_info['name'] . " : 이미지 파일만 업로드할 수 있습니다.");
}
// 파일 업로드 실행
if (is_uploaded_file($file_info['tmp_name'])) {
$destination = G5_DATA_PATH."/logos/".$target_name;
move_uploaded_file($file_info['tmp_name'], $destination);
chmod($destination, G5_FILE_PERMISSION);
// DB에 파일명 업데이트 (파일이 실제로 존재할 때만)
$target_name_escaped = sql_real_escape_string($target_name);
sql_query("UPDATE rb_builder SET bu_logo_{$target_name_escaped} = '{$target_name_escaped}'");
}
}
// ==================================================================
// 1. 빌더 설정 저장 (폼 데이터가 전송된 경우)
// ==================================================================
if (isset($_POST['install']) && $_POST['install'] == 1) {
// 1-1. 토큰 검사를 이 블록 안으로 이동
check_admin_token();
// 1-2. 로고 저장 폴더 생성
@mkdir(G5_DATA_PATH."/logos", G5_DIR_PERMISSION);
@chmod(G5_DATA_PATH."/logos", G5_DIR_PERMISSION);
// 1-3. 로고 삭제 처리
if (!empty($_POST['bu_logo_pc_del'])) @unlink(G5_DATA_PATH."/logos/pc");
if (!empty($_POST['bu_logo_pc_w_del'])) @unlink(G5_DATA_PATH."/logos/pc_w");
if (!empty($_POST['bu_logo_mo_del'])) @unlink(G5_DATA_PATH."/logos/mo");
if (!empty($_POST['bu_logo_mo_w_del'])) @unlink(G5_DATA_PATH."/logos/mo_w");
// 1-4. 로고 업로드 처리 (함수화하여 중복 제거)
handle_logo_upload($_FILES['bu_logo_pc'] ?? null, 'pc');
handle_logo_upload($_FILES['bu_logo_pc_w'] ?? null, 'pc_w');
handle_logo_upload($_FILES['bu_logo_mo'] ?? null, 'mo');
handle_logo_upload($_FILES['bu_logo_mo_w'] ?? null, 'mo_w');
// 1-5. SQL Injection 방지 및 코드 통합
$bu_data = array();
// bu_ 로 시작하는 모든 POST 값을 가져와서 안전하게 이스케이프 처리
foreach ($_POST as $key => $value) {
if (strpos($key, 'bu_') === 0) {
// 로고 삭제 필드(_del)는 DB에 저장하지 않음
if (substr($key, -4) !== '_del') {
$bu_data[$key] = sql_real_escape_string($value);
}
}
}
// 숫자형으로 강제 변환하여 타입 안전성 확보
$bu_data['bu_load'] = isset($_POST['bu_load']) ? 1 : 0;
$bu_data['bu_systemmsg_use'] = isset($_POST['bu_systemmsg_use']) ? 1 : 0;
$bu_data['bu_trans_header'] = isset($_POST['bu_trans_header']) ? 1 : 0;
// SQL SET 구문 동적 생성
$sql_set_clauses = array();
foreach ($bu_data as $key => $value) {
$sql_set_clauses[] = "`{$key}` = '{$value}'";
}
$sql_set_clauses[] = "bu_datetime = '".G5_TIME_YMDHIS."'";
$sql_set_string = implode(', ', $sql_set_clauses);
$cnt_row = sql_fetch("SELECT COUNT(*) as cnt FROM rb_builder");
// 데이터 존재 여부에 따라 UPDATE 또는 INSERT 실행
if ($cnt_row['cnt'] > 0) {
$sql = "UPDATE rb_builder SET {$sql_set_string}";
} else {
$sql = "INSERT INTO rb_builder SET {$sql_set_string}";
}
sql_query($sql);
// ==================================================================
// 2. DB 테이블 설치 (최초 1회 실행)
// ==================================================================
} else {
//폴더생성
@mkdir(G5_DATA_PATH."/seo", G5_DIR_PERMISSION);
@chmod(G5_DATA_PATH."/seo", G5_DIR_PERMISSION);
@mkdir(G5_DATA_PATH."/banners", G5_DIR_PERMISSION);
@chmod(G5_DATA_PATH."/banners", G5_DIR_PERMISSION);
@mkdir(G5_DATA_PATH."/logos", G5_DIR_PERMISSION);
@chmod(G5_DATA_PATH."/logos", G5_DIR_PERMISSION);
//빌더설정 테이블
if(!sql_query(" DESCRIBE rb_builder ", false)) {
sql_query("
CREATE TABLE IF NOT EXISTS `rb_builder` (
`bu_logo_pc` varchar(255) NOT NULL DEFAULT '' COMMENT '로고 PC',
`bu_logo_pc_w` varchar(255) NOT NULL DEFAULT '' COMMENT '로고 PC W',
`bu_logo_mo` varchar(255) NOT NULL DEFAULT '' COMMENT '로고 MO',
`bu_logo_mo_w` varchar(255) NOT NULL DEFAULT '' COMMENT '로고 MO W',
`bu_trans_header` tinyint(4) NOT NULL DEFAULT 0 COMMENT '메인 헤더 투명 효과',
`bu_load` int(4) NOT NULL DEFAULT 1 COMMENT '로딩인디케이터',
`bu_systemmsg_use` int(4) NOT NULL DEFAULT 1 COMMENT '시스템메세지 관리자수신여부',
`bu_1` varchar(255) NOT NULL DEFAULT '' COMMENT '회사명',
`bu_2` varchar(255) NOT NULL DEFAULT '' COMMENT '대표자명',
`bu_3` varchar(255) NOT NULL DEFAULT '' COMMENT '전화번호',
`bu_4` varchar(255) NOT NULL DEFAULT '' COMMENT '팩스번호',
`bu_5` varchar(255) NOT NULL DEFAULT '' COMMENT '사업자등록번호',
`bu_6` varchar(255) NOT NULL DEFAULT '' COMMENT '통신판매업신고번호',
`bu_7` varchar(255) NOT NULL DEFAULT '' COMMENT '부가통신사업자번호',
`bu_8` varchar(255) NOT NULL DEFAULT '' COMMENT '기타등록번호1',
`bu_9` varchar(255) NOT NULL DEFAULT '' COMMENT '우편번호',
`bu_10` varchar(255) NOT NULL DEFAULT '' COMMENT '사업장주소',
`bu_11` varchar(255) NOT NULL DEFAULT '' COMMENT '개인정보책임자',
`bu_12` varchar(255) NOT NULL DEFAULT '' COMMENT '카피라이트',
`bu_13` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`bu_14` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`bu_15` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`bu_16` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`bu_17` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`bu_18` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`bu_19` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`bu_20` varchar(255) NOT NULL DEFAULT '' COMMENT '',
`bu_sns1` varchar(255) NOT NULL DEFAULT '' COMMENT '카카오채널',
`bu_sns2` varchar(255) NOT NULL DEFAULT '' COMMENT '카카오상담',
`bu_sns3` varchar(255) NOT NULL DEFAULT '' COMMENT '유튜브',
`bu_sns4` varchar(255) NOT NULL DEFAULT '' COMMENT '인스타그램',
`bu_sns5` varchar(255) NOT NULL DEFAULT '' COMMENT '페이스북',
`bu_sns6` varchar(255) NOT NULL DEFAULT '' COMMENT '트위터',
`bu_sns7` varchar(255) NOT NULL DEFAULT '' COMMENT '네이버블로그',
`bu_sns8` varchar(255) NOT NULL DEFAULT '' COMMENT '텔레그램',
`bu_sns9` varchar(255) NOT NULL DEFAULT '' COMMENT 'SIR',
`bu_sns10` varchar(255) NOT NULL DEFAULT '' COMMENT '기타',
`bu_viewport` varchar(10) NOT NULL,
`bu_datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '등록일시(변경일시)'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ", true);
}
//환경설정 테이블
if(!sql_query(" DESCRIBE rb_config ", false)) {
sql_query(" CREATE TABLE IF NOT EXISTS `rb_config` (
`co_id` int(11) NOT NULL AUTO_INCREMENT,
`co_color` varchar(20) NOT NULL DEFAULT '#aa20ff' COMMENT '강조 컬러',
`co_dark` varchar(20) NOT NULL DEFAULT '' COMMENT '다크모드',
`co_layout` varchar(20) NOT NULL DEFAULT '' COMMENT '레이아웃',
`co_layout_hd` varchar(20) NOT NULL DEFAULT '' COMMENT '레이아웃(헤더)',
`co_layout_ft` varchar(20) NOT NULL DEFAULT '' COMMENT '레이아웃(푸더)',
`co_sub_width` varchar(20) NOT NULL COMMENT '서브가로폭',
`co_main_width` varchar(20) NOT NULL COMMENT '메인가로폭',
`co_tb_width` varchar(20) NOT NULL COMMENT '상/하단가로폭',
`co_header` varchar(20) NOT NULL DEFAULT '#ffffff' COMMENT '헤더',
`co_footer` varchar(20) NOT NULL COMMENT '풋터',
`co_font` varchar(20) NOT NULL DEFAULT '' COMMENT '폰트',
`co_datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '등록일시(변경일시)',
`co_ip` varchar(100) NOT NULL DEFAULT '' COMMENT '등록자IP',
PRIMARY KEY (`co_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ", true);
}
$cnt_config = sql_fetch("SELECT COUNT(*) as cnt FROM rb_config");
if ($cnt_config['cnt'] == 0) {
$sql = " insert rb_config
set co_color = '#aa20ff',
co_dark = '',
co_layout = 'basic',
co_layout_hd = 'basic',
co_layout_ft = 'basic',
co_sub_width = '960',
co_main_width = '1400',
co_tb_width = '1400',
co_header = '#ffffff',
co_footer = '0',
co_font = 'Pretendard',
co_datetime = '".G5_TIME_YMDHIS."',
co_ip = '' ";
sql_query($sql);
}
//모듈설정 테이블
if(!sql_query(" DESCRIBE rb_module ", false)) {
sql_query(" CREATE TABLE IF NOT EXISTS `rb_module` (
`md_id` int(11) NOT NULL AUTO_INCREMENT,
`md_layout` varchar(255) NOT NULL DEFAULT '' COMMENT '레이아웃 아이디',
`md_layout_name` varchar(255) NOT NULL DEFAULT '' COMMENT '레이아웃이름',
`md_theme` varchar(255) NOT NULL DEFAULT '' COMMENT '테마명',
`md_title` varchar(255) NOT NULL DEFAULT '' COMMENT '모듈타이틀',
`md_type` varchar(255) NOT NULL DEFAULT '' COMMENT '모듈타입',
`md_bo_table` varchar(255) NOT NULL DEFAULT '' COMMENT '연결 게시판',
`md_sca` varchar(255) NOT NULL DEFAULT '' COMMENT '연결 카테고리',
`md_widget` varchar(255) NOT NULL DEFAULT '' COMMENT '프로그램',
`md_poll` varchar(255) NOT NULL DEFAULT '' COMMENT '투표',
`md_poll_id` varchar(20) NOT NULL DEFAULT '' COMMENT '투표ID',
`md_custom_skin` varchar(255) NOT NULL DEFAULT '' COMMENT '커스텀 모듈 스킨',
`md_banner` varchar(255) NOT NULL DEFAULT '' COMMENT '배너',
`md_banner_id` varchar(20) NOT NULL DEFAULT '' COMMENT '배너ID',
`md_banner_skin` varchar(255) NOT NULL DEFAULT '' COMMENT '배너스킨',
`md_module` varchar(255) NOT NULL DEFAULT '' COMMENT '출력모듈',
`md_skin` varchar(255) NOT NULL DEFAULT '' COMMENT '출력스킨',
`md_cnt` int(10) NOT NULL DEFAULT 1 COMMENT '출력갯수',
`md_auto_time` int(10) NOT NULL DEFAULT 3000 COMMENT '오토플레이타임',
`md_gap` int(10) NOT NULL DEFAULT 40 COMMENT '여백(간격)',
`md_gap_mo` int(10) NOT NULL DEFAULT 20 COMMENT '모바일 여백(간격)',
`md_col` int(10) NOT NULL DEFAULT 1 COMMENT '출력갯수(열/가로)',
`md_row` int(10) NOT NULL DEFAULT 1 COMMENT '출력갯수(행/세로)',
`md_col_mo` int(10) NOT NULL DEFAULT 1 COMMENT '모바일 출력갯수(열/가로)',
`md_row_mo` int(10) NOT NULL DEFAULT 1 COMMENT '모바일 출력갯수(행/세로)',
`md_width` varchar(20) NOT NULL DEFAULT '100%' COMMENT '가로사이즈',
`md_height` varchar(20) NOT NULL DEFAULT 'auto' COMMENT '세로사이즈',
`md_subject_is` int(4) NOT NULL COMMENT '출력항목(제목)',
`md_thumb_is` int(4) NOT NULL DEFAULT 1 COMMENT '출력항목(썸네일)',
`md_nick_is` int(4) NOT NULL DEFAULT 1 COMMENT '출력항목(닉네임)',
`md_date_is` int(4) NOT NULL DEFAULT 1 COMMENT '출력항목(작성일시)',
`md_content_is` int(4) NOT NULL DEFAULT 1 COMMENT '출력항목(본문)',
`md_icon_is` int(4) NOT NULL DEFAULT 1 COMMENT '출력항목(아이콘)',
`md_comment_is` int(4) NOT NULL DEFAULT 1 COMMENT '출력항목(코멘트)',
`md_ca_is` int(4) NOT NULL DEFAULT 1 COMMENT '출력항목(카테고리)',
`md_swiper_is` int(4) NOT NULL DEFAULT 0 COMMENT '스와이프여부',
`md_auto_is` int(4) NOT NULL DEFAULT 0 COMMENT '오토플레이 여부',
`md_order` varchar(255) NOT NULL DEFAULT 'wr_num' COMMENT '출력순서',
`md_datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '등록일시(변경일시)',
`md_ip` varchar(100) NOT NULL DEFAULT '' COMMENT '등록자IP',
`md_order_id` int(4) NOT NULL DEFAULT 0 COMMENT '모듈순서',
PRIMARY KEY (`md_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ", true);
}
//배너관리 테이블
if(!sql_query(" DESCRIBE rb_banner ", false)) {
sql_query(" CREATE TABLE IF NOT EXISTS `rb_banner` (
`bn_id` int(11) NOT NULL AUTO_INCREMENT,
`bn_alt` varchar(255) NOT NULL DEFAULT '',
`bn_url` varchar(255) NOT NULL DEFAULT '',
`bn_device` varchar(10) NOT NULL DEFAULT '',
`bn_position` varchar(255) NOT NULL DEFAULT '',
`bn_border` tinyint(4) NOT NULL DEFAULT '0',
`bn_radius` tinyint(4) NOT NULL DEFAULT '0',
`bn_ad_ico` tinyint(4) NOT NULL DEFAULT '0',
`bn_new_win` tinyint(4) NOT NULL DEFAULT '0',
`bn_begin_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`bn_end_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`bn_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`bn_hit` int(11) NOT NULL DEFAULT '0',
`bn_order` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`bn_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ", true);
}
//SEO설정 테이블
if(!sql_query(" DESCRIBE rb_seo ", false)) {
sql_query(" CREATE TABLE IF NOT EXISTS `rb_seo` (
`se_title` varchar(255) NOT NULL COMMENT '사이트명',
`se_description` mediumtext NOT NULL COMMENT '사이트설명',
`se_keywords` mediumtext NOT NULL COMMENT '키워드',
`se_favicon` varchar(255) NOT NULL COMMENT '파비콘',
`se_google_meta` varchar(255) NOT NULL COMMENT '구글 소유권 메타',
`se_naver_meta` varchar(255) NOT NULL COMMENT '네이버 소유권 메타',
`se_robots` mediumtext NOT NULL COMMENT '로봇접근제어',
`se_og_image` varchar(255) NOT NULL COMMENT '오픈그래프 이미지',
`se_og_site_name` varchar(255) NOT NULL COMMENT '오픈그래프 사이트명',
`se_og_title` varchar(255) NOT NULL COMMENT '오픈그래프 사이트명',
`se_og_description` varchar(255) NOT NULL COMMENT '오픈그래프 사이트 설명',
`se_datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '등록일시(변경일시)'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ", true);
}
alert('DB 테이블 설치가 완료 되었습니다.\\n[DB 업데이트] 를 반드시 실행해주세요.\\n테이블 설치 후 환경설정 > 테마설정 메뉴에서\\nRebuilder Basic 테마를 적용해주세요.');
}
update_rewrite_rules();
goto_url('./rb_form.php', false);