Esempio n. 1
0
/** 파일 업로드
 * @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;
}
Esempio n. 2
0
END;
if (!file_exists($filename)) {
    echo "@zipcode.php 가 있는 폴더에 zipcode.txt 파일을 위치시키셔야 합니다.";
    foot();
    exit;
}
if (empty($_REQUEST['confirm'])) {
    echo "<a href='@zipcode.php?exec=1&amp;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;", "&#34;"), $val);
            $ins = explode("\t", $val);
            // 규칙 입력 부분
            if (!empty($ins[7])) {
                $ins[5] = !empty($ins[5]) ? $ins[5] . " " . $ins[7] : $ins[7];
            }
Esempio n. 3
0
/**
* 관리자 권한 체크
* @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')));
    }
}
Esempio n. 4
0
/**
 * 입력 변수 체크 - 회원
 * @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}] 값은 허용되지 않습니다");
                }
        }
    }
}
Esempio n. 5
0
/** 로그 기록
 * @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'));
    }
}
Esempio n. 6
0
                     $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) {
Esempio n. 7
0
/** 코멘트 목록 뽑기
 * @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;
}
Esempio n. 8
0
/**
 * 로그인
 * @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']}");
}
Esempio n. 9
0
/** 자료 비밀번호 일치여부 확인
 * @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;
}
Esempio n. 10
0
/**
 * 입력 변수 체크 - 그룹
 * @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))) . "]";
                }
        }
    }
}
Esempio n. 11
0
/**
 * 입력 변수 체크 - 게시판
 * @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;
        }
    }
}
Esempio n. 12
0
<?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));
Esempio n. 13
0
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}]";