/** 파일 업로드 * @class file * @param -target: $_FILES 중에서 하나만 지정한 key값 -filename: 파일명 강제지정 -is_copy: copy를 사용한다 * @return Array 성공한 _FILES 배열 */ function uploadFile($param = '') { global $mini, $_FILES; iss($param); $param = param($param); iss($param['target']); iss($success); def($param['is_copy'], 0); foreach ($_FILES as $key => $val) { //// 타겟 체크 if ($param['target'] && $param['target'] != $key) { continue; } //// 파일명 강제지정 if (!empty($param['filename']) && !empty($val['path'])) { $val['path'] = dirname($val['path']) . '/' . $param['filename']; $val['name_insert'] = $param['filename']; } //// 파일 업로드 if (!empty($val['path'])) { if ($param['is_copy']) { $result = copy($val['tmp_name'], $val['path']); } else { $result = move_uploaded_file($val['tmp_name'], $val['path']); } if ($result) { $success[] = $val; } else { foreach ($success as $val2) { @unlink($val2['path']); } __error("[{$val['tmp_name']}] 파일 업로드에 실패했습니다"); } } } return $success; }
END; if (!file_exists($filename)) { echo "@zipcode.php 가 있는 폴더에 zipcode.txt 파일을 위치시키셔야 합니다."; foot(); exit; } if (empty($_REQUEST['confirm'])) { echo "<a href='@zipcode.php?exec=1&confirm=1' style='font:13px \"Malgun Gothic\", dotum;'>우편번호 DB를 입력합니다.</a>"; foot(); exit; } //// 자료 입력 $count = 0; $data = file($filename); iss($output); iss($_REQUEST['exec']); if ($_REQUEST['exec']) { //// TABLE 생성 if (sql("SHOW TABLES LIKE '{$mini['name']['zipcode']}'")) { sql("DROP TABLE {$mini['name']['zipcode']}"); } sql("CREATE TABLE {$mini['name']['zipcode']} (\n\t\tno int UNSIGNED not null PRIMARY KEY AUTO_INCREMENT,\n\t\tzipcode varchar(255) not null default '',\n\t\th1 varchar(255) not null default '',\n\t\th2 varchar(255) not null default '',\n\t\th3 varchar(255) not null default '',\n\t\th4 varchar(255) not null default '',\n\t\th5 varchar(255) not null default '',\n\t\n\t\tKEY h1(h1),\n\t\tKEY h2(h2),\n\t\tKEY h3(h3),\n\t\tKEY h4(h4)\n\t)"); foreach ($data as $key => $val) { unset($ins); if ($val) { $val = str_replace(array("'", "\""), array("&\$39;", """), $val); $ins = explode("\t", $val); // 규칙 입력 부분 if (!empty($ins[7])) { $ins[5] = !empty($ins[5]) ? $ins[5] . " " . $ins[7] : $ins[7]; }
/** * 관리자 권한 체크 * @class admin * @param -site: 사이트 번호 -board: 게시판 번호 -mode: 허용 모드(해당 번호와 관계 없다) [site|board|admin|god] -type: script 모드 */ function checkAdmin($param = '') { global $mini; $param = param($param); iss($param['site']); iss($param['board']); iss($param['mode']); def($param['type'], 'move'); iss($mini['member']); iss($mini['member']['board_admin']); iss($mini['member']['site_admin']); $check = 1; if (empty($mini['log'])) { $check = 0; } else { // 허용 모드 if ($param['mode']) { switch ($param['mode']) { case 'god': if (empty($mini['member']['level_admin']) || $mini['member']['level_admin'] < 4) { $check = 0; } break; case 'admin': if (empty($mini['member']['level_admin']) || $mini['member']['level_admin'] < 3) { $check = 0; } break; case 'site': if (empty($mini['member']['is_god']) && empty($mini['member']['is_admin']) && !count($mini['member']['site_admin'])) { $check = 0; } break; case 'board': if (empty($mini['member']['is_god']) && empty($mini['member']['is_admin']) && !count($mini['member']['site_admin']) && !count($mini['member']['board_admin'])) { $check = 0; } break; } } else { $check = 0; if (!empty($mini['member']['is_god']) || !empty($mini['member']['is_admin'])) { $check = 1; } if ($param['site'] && in_array($param['site'], $mini['member']['site_admin'])) { $check = 1; } if ($param['board'] && in_array($param['board'], $mini['member']['board_admin'])) { $check = 1; } } } // 처리 if (!$check) { __error(array('msg' => '권한이 없습니다', 'mode' => $param['type'], 'url' => "{$mini['dir']}login.php?url=" . url('', '', 'reload=1'))); } }
/** * 입력 변수 체크 - 회원 * @class admin.member * @param $data: 자료 */ function checkFieldMember(&$data) { global $mini; if (!is_array($data)) { __error("입력된 데이터가 없습니다"); } // DB 컬럼 로드 iss($col); $col = getColumns($mini['name']['member']); foreach ($data as $key => $val) { switch ($key) { // 숫자 체크 case 'site': case 'level': case 'confirm_jumin': case 'permit_mail': case 'confirm_mail': case 'permit_cp': case 'confirm_cp': case 'age': case 'icon': case 'icon_name': case 'photo': case 'point': case 'point_sum': case 'money': case 'lock_login': case 'admit': check($val, "type:num, name:{$key}, is_not:1"); break; // 삭제 설정 // 삭제 설정 case 'date': case 'no': unset($data[$key]); break; // 그룹연결 // 그룹연결 case 'site_link': if (is_array($val)) { $data[$key] = "[" . implode("][", $val) . "]"; } break; // 비밀번호 // 비밀번호 case 'pass_encode': case 'pass': if (isset($data['pass_encode']) && $data['pass_encode']) { switch ($mini['site']['secure_pass']) { case 'md5': case 'sha1': case 'mixed': check($data['pass_encode'], "type:id, name:암호화된 비밀번호, min:16, max:40"); break; case 'mysql': $data['pass_encode'] = mysql_escape_string($data['pass_encode']); $tmp = array(); $tmp = sql("SELECT password('{$data['pass_encode']}') as pass"); $data['pass'] = $tmp['pass']; break; case 'mysql_old': $data['pass_encode'] = mysql_escape_string($data['pass_encode']); $tmp = array(); $tmp = sql("SELECT old_password('{$data['pass_encode']}') as pass"); $data['pass'] = $tmp['pass']; break; } $data['pass'] = $data['pass_encode']; unset($data['pass_encode']); } else { unset($data[$key]); } break; // 홈페이지 // 홈페이지 case 'homepage': check($data[$key], "type:homepage, name:홈페이지, is_not:1"); break; // 주민등록번호 // 주민등록번호 case 'jumin': check($val, "type:jumin, name:주민등록번호, is_not:1"); break; // 사업자번호 // 사업자번호 case 'co_num': check($val, "type:co_num, name:사업자등록번호, is_not:1"); // 메일 // 메일 case 'mail': check($val, "type:mail, name:메일, is_not:1"); // 가입제한 메일 체크 if (!empty($mini['site']['filter_mail'])) { if (inStr(a(explode('@', $val), '1'), $mini['site']['filter_mail'])) { __error("가입이 제한된 메일 도메인 입니다. 다른 도메인을 사용한 메일로 가입해주세요"); } } break; // 휴대전화 // 휴대전화 case 'cp': check($val, "type:cp, name:휴대전화, is_not:1"); break; // 메신져 // 메신져 case 'chat': if (!empty($val)) { $data[$key] = "[" . implode("][", array_unique(getStr($val))) . "]"; } break; // 추가필드 // 추가필드 case 'field': if (is_array($val)) { str($data[$key], 'encode'); $data[$key] = serialize($data[$key]); } else { __error('추가필드 형식이 올바르지 않습니다'); } break; // 내용 필터 // 내용 필터 case 'sign': case 'ment': if (!empty($val)) { filter($data[$key], 'encode'); } break; // str형식 // str형식 case 'open': $data[$key] = "[" . implode("][", $val) . "]"; break; // 기본(단일필드) // 기본(단일필드) default: // tmp 값 제외 if (preg_match("/^tmp_/i", $key)) { unset($data[$key]); } // 존재하지 않는 필드일 때 빼기 if (!inStr($key, $col)) { unset($data[$key]); } // 배열 값 제외 if (is_array($val)) { __error("[{$key}] 값은 허용되지 않습니다"); } } } }
/** 로그 기록 * @class * @param -mode: 모드 -field1: 필드1 -field2: 필드2 -field3: 필드3 -field4: 필드4 -field5: 필드5 -ment: 내용 -result: 결과값 [1|0] -target_member: 대상회원 */ function addLog($param = '') { global $mini; $param = param($param); $check = 1; if (empty($param['mode'])) { __error('기록 mode가 없습니다'); } if ($param['mode'] == 'point' && empty($mini['set']['use_log_point'])) { $check = 0; } if ($check) { iss($param['field1']); iss($param['field2']); iss($param['field3']); iss($param['field4']); iss($param['field5']); iss($param['ment']); iss($mini['member']); iss($mini['member']['no']); def($param['result'], 1); def($param['target_member'], $mini['member']['no']); def($param['date'], $mini['date']); def($param['ip'], $mini['ip']); if (is_array($param['ment'])) { $param['ment'] = serialize($param['ment']); } sql("INSERT INTO {$mini['name']['log']} SET " . query($param, 'update')); } }
$query_action = $query_pri = $query_def = $query_null = ''; $query_action = $data_old[$key2]['Field'] ? "CHANGE {$key2}" : "ADD"; $query_null = $val2['Null'] == "NO" ? "not null" : ""; $query_def = $val2['Default'] !== '' ? "default '" . $val2['Default'] . "'" : ""; $query_pri = $val2['Key'] == "PRI" ? "PRIMARY KEY" : ""; $query .= ",{$query_action} {$key2} {$val2['Type']} {$query_null} {$query_def} {$query_pri} {$val2['Extra']}"; if (!$query_pri && $val2['Key'] && !$data_old[$key2]['Key']) { $query .= ",ADD KEY {$key2}({$key2})"; } break; } } } // 없어져야할 컬럼 확인 foreach ($data_old as $key2 => $val2) { iss($data_new[$key2]); if (!$data_new[$key2]) { $query .= ",DROP {$key2}"; } } if ($query) { $query = substr($query, 1); $query = "ALTER TABLE {$tablename[1]} {$query}"; } sql("DROP TABLE tmp_{$tablename[1]}"); } } // 쿼리 - 기존에 있던것 수정 if ($query) { $result2 = sql($query); if (!$result2) {
/** 코멘트 목록 뽑기 * @class io * @param -name: 검색배열이름 (list_cmt) -id: 게시판아이디, board_data가 있으면 없어도 된다 -page: 페이지 (마지막페이지) -target_post: 대상게시물번호. view가 있으면 없어도 된다 $board_data: 게시판정보 $view: 게시물정보 * @return Array */ function getListCmt($param, $board_data = '', $view = '') { global $mini; $param = param($param); $output = array(); iss($param['page']); def($param['name'], 'list_cmt'); def($_REQUEST['cPage'], $param['page']); def($_REQUEST['cPage'], 999999999999); //// 게시판정보 if (empty($board_data) && !empty($param['id'])) { getBoard($param['id']); if (empty($mini['site']) || $mini['site']['no'] != $mini['board']['site']) { getSite($mini['board']['site']); } } else { if (empty($board_data) && !empty($mini['board'])) { $board_data = $mini['board']; } } //// 게시물정보 if (empty($view)) { $view = sql("SELECT * FROM {$board_data['table']} WHERE no={$param['target_post']}"); if (!is_array($view)) { __error('게시물이 존재하지 않습니다' . ' (' . __FILE__ . ' line ' . __LINE__ . ' in ' . __FUNCTION__ . ')'); } parsePost($view); $output['view'] = $view; } else { $param['target_post'] = $view['no']; } $is_comment_page = !empty($board_data['use_comment_page']) && !empty($board_data['list_count_comment']) ? 1 : 0; if (!$is_comment_page) { $board_data['list_count_comment'] = 9999999; } //// 공지사항 제외 $is_first = 0; if ($is_comment_page || empty($_REQUEST['cQuick']) && empty($_REQUEST['cS']) && empty($_REQUEST['cSort'])) { $_REQUEST['cS']['notice!'] = 0; $is_first = 1; } $_REQUEST['cAnd'] = 1; //// 검색 처리 setSearch("\n\t\t\tname: {$param['name']}\n\t\t\tquickName: cQuick\n\t\t\tsName: cS\n\t\t\tandName: cAnd\n\t\t\tis_simple: 1\n\t\t"); //// 기본 검색쿼리 지정 check($param['target_post'], 'type:num, name:게시물번호'); $tmp_trackback = !empty($board_data['use_trackback_cmt']) ? '' : " and trackback=''"; $mini['list'][$param['name']]['where'] = !empty($mini['list'][$param['name']]['where']) ? $mini['list'][$param['name']]['where'] . " and target_post={$param['target_post']}{$tmp_trackback}" : "WHERE target_post={$param['target_post']}{$tmp_trackback}"; //// 공지사항 로드 if ($is_first) { $notice = sql("q:SELECT * FROM {$board_data['table_cmt']} WHERE notice=1 and target_post={$param['target_post']} ORDER BY num, mode:array"); $output['notice'] = $notice; } //// 정렬 처리 setSort("\n\t\t\tname: {$param['name']}\n\t\t\tsortName: cSort\n\t\t\ttable: {$board_data['table_cmt']}\n\t\t\torder: ORDER BY num, reply\n\t\t\torder_desc: ORDER BY num DESC, reply ASC\n\t\t"); //// 리스트 $data = getList("\n\t\t\tname: {$param['name']}\n\t\t\tlist: {$board_data['list_count_comment']}\n\t\t\ttable: {$board_data['table_cmt']}\n\t\t\tpageName: cPage\n\t\t\tdivName: cDiv\n\t\t\tstartName: cStart\n\t\t"); $output['data'] = $data; // pr($mini['list'][$param['name']]); //// 트랙백 같이 뽑기 /* $t_data = array(); if (!empty($board_data['use_trackback_cmt'])) { $t_data = sql("q:SELECT * FROM {$board_data['table_cmt']} WHERE target_post={$view['no']} and trackback!='' ORDER BY num, mode:array"); $output['data'] = array_merge($t_data, $output['data']); unset($t_data); } */ //// 트랙백 따로 뽑기 if ($is_first && empty($board_data['use_trackback_cmt'])) { $t_data = sql("q:SELECT * FROM {$board_data['table_cmt']} WHERE target_post={$view['no']} and trackback!='' ORDER BY num, mode:array"); $output['trackback'] = $t_data; } return $output; }
/** * 로그인 * @class login * @param $data: POST array -site: 그룹번호 -board: 게시판번호 -is_passed: 무조건로그인[0!|1] */ function setLogin(&$data, $param) { global $mini; $param = param($param); iss($data['uid']); iss($data['pass']); iss($data['pass_encode']); iss($data['autologin']); iss($mini['set']['use_login_session']); iss($pass_after); iss($key_login); iss($autologin_after); def($mini['this']['script'], $_REQUEST['script']); def($mini['this']['script'], 'back'); def($mini['set']['lock_login'], 5); def($param['is_passed'], 0); $site_data = $board_data = array(); $site = ''; if (empty($param['site'])) { __error('선택된 그룹이 없습니다.' . ' (' . __FILE__ . ' line ' . __LINE__ . ' in ' . __FUNCTION__ . ')'); } //// 그룹 로드 if (!empty($mini['site']) && $mini['site']['no'] == $param['site']) { $site_data = $mini['site']; } else { $site_data = getSite($param['site'], 1); } //// 게시판 로드 if (!empty($param['board'])) { if (!empty($mini['board']) && $mini['board']['no'] == $param['board']) { $board_data = $mini['board']; } else { $board_data = getBoard($param['board'], 1); } } else { if (!empty($mini['board']['site']) && $mini['board']['site'] == $site_data['no']) { $board_data = $mini['board']; } } //// 변수 검사 check($data['uid'], "name: 아이디"); if (!$param['is_passed']) { check($data['pass_encode'], "type:id, name:암호화된 비밀번호, min:16, max:40"); } if (!isset($site_data)) { __error('선택된 그룹이 없습니다.'); } $data['uid'] = mysql_escape_string($data['uid']); //// 미니아이 로그인 if (preg_match("/^\\@/", $data['uid'])) { __error('준비중 입니다.'); } else { $site = "[{$site_data['no']}]"; // 그룹의 그룹연결 if (!empty($site_data['site_link'])) { $site .= $site_data['site_link']; } // 게시판의 그룹연결 if (!empty($board_data['site_link'])) { $site .= $board_data['site_link']; } } //// 데이터 로드 $tmp_data = sql("q:SELECT * FROM {$mini['name']['member']} WHERE uid='{$data['uid']}', mode:array"); //// 아이디 확인 if (!is_array($tmp_data)) { __error('일치하는 회원이 없습니다'); } //// 그룹 확인 $check = 0; foreach ($tmp_data as $key => $val) { if (inStr($val['site'], $site) || count(array_intersect(getStr($site), getStr($val['site_link']))) || inStr('god', $val['admin']) || inStr('admin', $val['admin'])) { $check = 1; $data_ex = $val; } } if (!$check) { __error('일치하는 회원이 없습니다'); } //// 컨버팅 회원 확인 if (preg_match("/^\\!/", $data_ex['pass'])) { if (!empty($mini['complete']['ajax'])) { __complete(array('mode' => 'ajax,reload.parent', 'script' => "window.open(\"{$mini['dir']}login.conv.php?no={$data_ex['no']}\", \"conv\", \"width=400, height=400, scrollbars=2\");")); } else { __complete(array('mode' => 'move', 'url' => "{$mini['dir']}login.conv.php?no={$data_ex['no']}")); } } //// 실패 회수 확인 if ($data_ex['lock_login'] >= $mini['set']['lock_login'] && $data_ex['no'] != 1) { __error("로그인을 {$mini['set']['lock_login']}회 이상 실패하여 아이디가 잠겼습니다. 관리자에게 문의하세요"); } //// 비밀번호 확인 if (!$param['is_passed'] && $data['pass_encode'] != md5("{$data_ex['pass']}|{$mini['ip']}|" . session_id())) { if ($data_ex['pass'] == 'reset!') { __error('비밀번호가 초기화 되었습니다. 아이디/비밀번호 찾기를 통해 새 비밀번호로 설정해 주세요'); } sql("UPDATE {$mini['name']['member']} SET lock_login = lock_login + 1 WHERE no={$data_ex['no']}"); addLog("\n\t\t\t\tmode: login_lock_login\n\t\t\t\ttarget_member: {$data_ex['no']}\n\t\t\t\tfield1: {$data_ex['lock_login']}\n\t\t\t"); __error("비밀번호가 일치하지 않습니다 (" . ($data_ex['lock_login'] + 1) . "회 오류)"); } //// 암호화 // 자동 로그인 if ($data['autologin']) { $pass_after = ''; $key_login = md5($mini['date']); $autologin_after = md5("{$data_ex['pass']}|{$mini['ip']}|{$key_login}"); $interval = time() + 2592000; // 30 days after } else { $pass_after = md5("{$data_ex['pass']}|{$mini['ip']}"); $key_login = $autologin_after = ''; $interval = 0; } //// 굽기 // 세션 if ($mini['set']['use_login_session']) { $_SESSION['m_no'] = $data_ex['no']; $_SESSION['m_pass'] = $pass_after; } else { setcookie("m_no", $data_ex['no'], $interval, '/'); setcookie("m_pass", $pass_after, $interval, '/'); } // 자동로그인 if ($data['autologin']) { setcookie("m_no", $data_ex['no'], $interval, '/'); setcookie("m_autologin", $autologin_after, $interval, '/'); } else { setcookie("m_autologin", '', 0, '/'); } //// 로그인 기록 추가 def($mini['set']['login_history_count'], 10); $data_ex['history_login'] .= "{$mini['ip']}|{$mini['date']}\n"; $tmp = explode("\n", $data_ex['history_login']); if (count($tmp) > $mini['set']['login_history_count']) { unset($tmp[0]); } $data_ex['history_login'] = is_array($tmp) ? implode("\n", $tmp) : ""; //// 로그인 포인트 설정 if (!empty($site_data['point_login'])) { if (!sql("SELECT COUNT(*) FROM {$mini['name']['log']} WHERE mode='point' and target_member={$data_ex['no']} and field3='로그인' and date >= '" . date("Y/m/d 00:00:00", $mini['time']) . "'")) { setPoint("\n\t\t\t\t\ttarget: {$data_ex['no']}\n\t\t\t\t\tmsg: 로그인\n\t\t\t\t\tpoint: {$site_data['point_login']}\n\t\t\t\t"); } } //// 다중 자동로그인 설정 //+ 정식버젼에서 지울 구문임 if (!empty($data_ex['ip']) && strpos($data_ex['ip'], '[') === false) { $data_ex['ip'] = "[{$data_ex['ip']}]"; } if (!empty($data_ex['key_login']) && strpos($data_ex['key_login'], '[') === false) { $data_ex['key_login'] = "******"; } if (empty($key_login)) { $key_login = '******'; } // 입력 $data_ex['ip'] .= "[{$mini['ip']}]"; $data_ex['key_login'] .= "[{$key_login}]"; // 3개 한정 $arr_ip = getStr($data_ex['ip']); if (count($arr_ip) > 5) { unset($arr_ip[0]); $data_ex['ip'] = "[" . implode("][", $arr_ip) . "]"; } $arr_key_login = getStr($data_ex['key_login']); if (count($arr_key_login) > 5) { unset($arr_key_login[0]); $data_ex['key_login'] = "******" . implode("][", $arr_key_login) . "]"; } //// DB수정 sql("UPDATE {$mini['name']['member']} SET ip='{$data_ex['ip']}', date_login='******'date']}', key_login='******'key_login']}', lock_login=0, count_login=count_login+1, history_login='******'history_login']}' WHERE no={$data_ex['no']}"); }
/** 자료 비밀번호 일치여부 확인 * @class io * @param $data: 자료 데이터 $move: 비밀번호 입력 이동 여부 $error: 모드 지정 * @return Boolean */ function checkPass($data, $move = 0, $error = '') { global $mini; iss($_REQUEST['id']); iss($_REQUEST['group']); iss($_REQUEST['no']); iss($_REQUEST['pass_encode']); if (!empty($mini['member']['level_admin'])) { return true; } if (!empty($data['target_member']) && empty($mini['log'])) { __error('로그인이 필요합니다'); } if (!empty($data['target_member']) && !empty($mini['log']) && $data['target_member'] != $mini['member']['no']) { __error('권한이 없습니다'); } if (empty($data['target_member'])) { if (empty($_REQUEST['pass_encode'])) { if ($move) { $url = preg_match("/^upload\\./i", $mini['filename']) && !empty($_REQUEST['pageURL']) ? $_REQUEST['pageURL'] : url(); if (!empty($_REQUEST['iframe'])) { $url = ''; } __error(array('mode' => !empty($error) ? $error : 'goto' . (!empty($_REQUEST['iframe']) ? '.parent' : ''), 'url' => "pass.php?id={$_REQUEST['id']}&group={$_REQUEST['group']}&url={$url}")); } else { __error('권한이 없습니다'); } } else { if ($_REQUEST['pass_encode'] != md5("{$data['pass']}|{$mini['ip']}|" . session_id())) { __error("비밀번호가 일치하지 않습니다"); } } } return false; }
/** * 입력 변수 체크 - 그룹 * @class admin.site * @param $data: 자료 */ function checkFieldSite(&$data) { global $mini; if (!is_array($data)) { __error("입력된 데이터가 없습니다"); } // DB 컬럼 로드 iss($col); $col = getColumns($mini['name']['site']); foreach ($data as $key => $val) { switch ($key) { // 삭제 설정 case 'date': case 'no': unset($data[$key]); break; // 그룹연결 // 그룹연결 case 'site_link': if (is_array($val)) { $data[$key] = "[" . implode("][", $val) . "]"; } break; // 추가필드 // 추가필드 case 'field': if (is_array($val)) { str($data[$key], 'encode'); $data[$key] = serialize($data[$key]); } else { __error('추가필드 형식이 올바르지 않습니다'); } break; // 가입항목설정 // 가입항목설정 case 'join_setting': if (is_array($val)) { $data[$key] = serialize($data[$key]); } else { __error('가입항목설정 형식이 올바르지 않습니다'); } break; // 템플릿 // 템플릿 case 'template': if (is_array($val)) { str($data[$key], 'encode'); $data[$key] = serialize($data[$key]); } else { __error('템플릿 형식이 올바르지 않습니다'); } break; // 메일 // 메일 case 'mail': check($val, "type:mail, name:대표 메일"); break; // 휴대전화 // 휴대전화 case 'cp': check($val, "type:cp, name:대표 휴대전화, is_not:1"); break; // 회원상태목록 // 회원상태목록 case 'status': if (!empty($val)) { $tmp = array_unique(getStr($val)); if (is_array($tmp)) { $data[$key] = "[" . implode("][", $tmp) . "]"; } } break; // 그룹이름 태그처리 // 그룹이름 태그처리 case 'name': // str($data[$key], 'encode'); break; // 기본(단일필드) // 기본(단일필드) default: // tmp 값 제외 if (preg_match("/^tmp_/i", $key)) { unset($data[$key]); } // 배열 값 제외 if (is_array($val)) { __error("[{$key}] 값은 허용되지 않습니다"); } // 존재하지 않는 필드일 때 빼기 if (!inStr($key, $col)) { unset($data[$key]); } // 권한 if (preg_match("/permit_/i", $key) && $val && count(getStr($val)) > 1) { $data[$key] = "[" . implode("][", array_unique(getStr($val))) . "]"; } } } }
/** * 입력 변수 체크 - 게시판 * @class admin.board * @param $data: 자료 */ function checkFieldBoard(&$data) { global $mini; if (!is_array($data)) { __error("입력된 데이터가 없습니다"); } // DB 컬럼 로드 iss($col); $col = getColumns($mini['name']['admin']); foreach ($data as $key => $val) { switch ($key) { // 삭제 설정 case 'date': case 'no': case 'dir': unset($data[$key]); break; // 그룹연결 // 그룹연결 case 'site_link': if (is_array($val)) { $data[$key] = "[" . implode("][", $val) . "]"; } break; // 카테고리 // 카테고리 case 'category': if (is_array($val)) { foreach ($val as $key2 => $val2) { check($val2['no'], 'type:num, name: 카테고리번호'); check($val2['depth'], 'type:num, name: 카테고리단계, is_not:1'); check($val2['name'], 'name: 카테고리이름'); str($data[$key][$key2]['name'], 'encode'); } $data[$key] = serialize($data[$key]); } else { __error('카테고리 형식이 올바르지 않습니다'); } break; // 추가필드 // 추가필드 case 'field': if (is_array($val)) { str($data[$key], 'encode'); $data[$key] = serialize($data[$key]); } else { __error('추가필드 형식이 올바르지 않습니다'); } break; // 옵션 // 옵션 case 'options': if (is_array($val)) { str($data[$key], 'encode'); $data[$key] = serialize($data[$key]); } else { __error('스킨옵션 형식이 올바르지 않습니다'); } break; // 단축키 // 단축키 case 'key_map': if (is_array($val)) { str($data[$key], 'encode'); $data[$key] = serialize($data[$key]); } else { __error('단축키 형식이 올바르지 않습니다'); } break; // 기본(단일필드) // 기본(단일필드) default: // tmp 값 제외 if (preg_match("/^tmp_/i", $key)) { unset($data[$key]); } // 배열 값 제외 if (is_array($val) && !preg_match("/^(config)\$/", $key)) { __error("[{$key}] 값은 허용되지 않습니다"); } // 존재하지 않는 필드일 때 빼기 if (!inStr($key, $col)) { unset($data[$key]); } // 권한 if (preg_match("/permit_/i", $key) && $val && count(getStr($val)) > 1) { $data[$key] = "[" . implode("][", array_unique(getStr($val))) . "]"; //__error($data[$key]); } break; } } }
<?php function iss($a, $i) { $max = 10; for ($i = 0; $i < $max; $i++) { isset($a[$i]); isset($a[0]); isset($a[1]); isset($a[2]); } return isset($a[$i]); } $a = array('a', 2, false); var_dump(iss($a, 5)); $a = array('a' => 'b', 1 => 'c', 2 => 4, 'c' => 3, 0 => 'hello'); var_dump(iss($a, 5));
flush(); checkTime("query"); //mysql_query($query_board) or die(mysql_error()); mysql_query($query_search) or die(mysql_error()); checkTime("query"); echo "all complete!!"; printTime(1); exit; ?> <?php exit; iss($_GET['start']); def($start, $_GET['start']); def($start, 1); $count = 50000; $start_num = 16000000 - ($start - 1) * $count; if ($start_num == 16000000) { $query_board = "INSERT INTO m_board_test (num, title, ment, category, tag) VALUES "; $query_search = "INSERT INTO m_search (target, mode, ment, id) VALUES "; } else { $query_board = $query_search = ''; } $ment_ar = array('가', '나', '다', '라', '마', '바', '사', '아', '자', '차', '카', '타', '파', '하'); for ($a = $start_num; $a > $start_num - $count; $a--) { $num = $a % 10; $tag = "[태그{$num}]"; $category = "[카테고리{$num}]";