Ejemplo n.º 1
0
/**
 * 회원 수정
 * @class admin.member
 * @param
		$data: 자료
		$no: 대상번호
		-is_check: 입력변수 체크 여부
*/
function editMember($data, $no, $param = '')
{
    global $mini;
    $param = param($param);
    def($param['is_check'], 1);
    $is_admin = !empty($mini['member']['level_admin']) && $mini['member']['level_admin'] >= 2;
    //// 수정할 수 없는 정보 제거
    unset($data['no']);
    unset($data['ip']);
    unset($data['ip_join']);
    unset($data['key_find']);
    unset($data['key_sms']);
    unset($data['key_login']);
    unset($data['date']);
    unset($data['date_login']);
    unset($data['count_login']);
    unset($data['count_vote']);
    unset($data['count_post']);
    unset($data['count_comment']);
    unset($data['count_recent_comment']);
    unset($data['history_login']);
    unset($data['mode']);
    unset($data['script']);
    unset($data['admin']);
    unset($data['id_mode']);
    if (!$is_admin) {
        unset($data['site']);
        unset($data['site_link']);
        unset($data['level']);
        unset($data['admit']);
        unset($data['confirm_co']);
        unset($data['confirm_mail']);
        unset($data['point']);
        unset($data['point_sum']);
        unset($data['money']);
        unset($data['count_alert']);
        unset($data['lock_login']);
        unset($data['history_admin']);
        unset($data['date_punish']);
    } else {
        $data['admit'] = $data['confirm_cp'] = $data['confirm_mail'] = 1;
    }
    if (isset($data['admit_sms'])) {
        $admit_sms = $data['admit_sms'];
    }
    //// 추가필드 권한 체크
    if (!empty($mini['site']['field'])) {
        foreach ($mini['site']['field'] as $key => $val) {
            if (empty($data['field'][$key]) && !empty($val['is_req'])) {
                __error("[{$val['name']}]을 입력해 주세요");
            }
        }
    }
    //// 변수 체크
    if ($param['is_check']) {
        checkFieldMember($data);
    }
    //// 넘어오지 않은 변수 처리
    if (!empty($mini['member']['level_admin']) && empty($data['site_link'])) {
        $data['site_link'] = '';
    }
    if (empty($data['open'])) {
        $data['open'] = '';
    }
    //// 번호 넣기
    if (is_array($no) && isset($data['name'])) {
        __error('회원 다중 수정에 닉네임 수정이 포함되어 있습니다');
    }
    if (!is_array($no)) {
        $tmp = $no;
        $no = array();
        $no[0] = $tmp;
    }
    foreach ($no as $key => $val) {
        //// 번호 체크
        check($val, 'type:num, name:회원번호');
        //// 데이터 로드
        $data_ex = sql("SELECT * FROM {$mini['name']['member']} WHERE no={$val}");
        if (!is_array($data_ex)) {
            __error('해당 회원이 존재하지 않습니다');
        }
        //// 권한체크
        if (!empty($mini['is_admin'])) {
            checkAdmin("\n\t\t\t\t\tsite: {$data_ex['site']}\n\t\t\t\t\ttype: ajax\n\t\t\t\t");
        }
        //// 아이디 중복 체크
        if (isset($data['uid'])) {
            check($data['uid'], 'type:id, name:회원아이디');
            if (sql("SELECT COUNT(*) FROM {$mini['name']['member']} WHERE no!={$val} and uid='{$data['uid']}'")) {
                __error('중복된 회원 아이디 입니다.');
            }
        }
        //// 닉네임 중복 체크
        if (isset($data['name'])) {
            if (empty($data['name'])) {
                __error('회원 닉네임을 입력해 주세요');
            }
            if (sql("SELECT COUNT(*) FROM {$mini['name']['member']} WHERE no!={$val} and name='{$data['name']}'")) {
                __error("중복된 닉네임 입니다.");
            }
        }
        //// 메일 중복 체크
        if (isset($data['mail'])) {
            if (empty($data['mail'])) {
                __error('메일을 입력해 주세요');
            }
            if (sql("SELECT COUNT(*) FROM {$mini['name']['member']} WHERE no!={$val} and mail='{$data['mail']}'")) {
                __error("중복된 메일 입니다.");
            }
        }
        //// 주민등록번호 중복 체크 및 암호화
        if (isset($data['jumin']) && $data['jumin']) {
            $data['jumin'] = md5($data['jumin']);
            if (sql("SELECT COUNT(*) FROM {$mini['name']['member']} WHERE no!={$val} and jumin='{$data['jumin']}'")) {
                __error("중복된 주민등록번호 입니다.");
            }
        }
        //// 주민등록번호 삭제 방지
        if (isset($data['jumin']) && empty($data['jumin']) && $data['jumin'] !== 0) {
            unset($data['jumin']);
        }
        if (isset($data['jumin']) && empty($data['jumin']) && $data['jumin'] === 0) {
            $data['jumin'] = '';
        }
        //// 사업자번호 중복 체크
        if (isset($data['co_num']) && $data['co_num']) {
            if (sql("SELECT COUNT(*) FROM {$mini['name']['member']} WHERE no!={$val} and co_num='{$data['co_num']}'")) {
                __error("중복된 사업자등록번호 입니다.");
            }
        }
        //// 인증받은 자료 변경시 인증 풀림
        if (!$is_admin) {
            if (!empty($data_ex['confirm_mail']) && $data_ex['mail'] != $data['mail']) {
                $data['confirm_mail'] = 0;
            }
            if (!empty($data_ex['confirm_cp']) && $data_ex['cp'] != $data['cp']) {
                $data['confirm_cp'] = 0;
            }
        }
        //// SMS인증 확인
        if (!empty($admit_sms) && !empty($mini['site']['admit']) && $mini['site']['admit'] == 'sms' && !$is_admin) {
            if (empty($data_ex['key_sms'])) {
                __error('인증번호를 받지 않았습니다');
            }
            $tmp = explode("|", $data_ex['key_sms']);
            if ($admit_sms != $tmp[0]) {
                __error('인증번호가 일치하지 않습니다');
            }
            if ($data['cp'] != $tmp[1]) {
                __error('인증받은 휴대전화번호가 아닙니다');
            }
            if ($mini['time'] - 300 > strtotime($tmp[2])) {
                __error('5분이 경과되었습니다. 다시 인증번호를 신청하시기 바랍니다');
            }
            $data['admit'] = 1;
            $data['key_sms'] = $data['key_find'] = '';
            $data['confirm_cp'] = 1;
        }
        //// 필수입력 정보 사이트 정보대로 처리해야 함
        if (!empty($mini['site']['join_check'])) {
            $tmp = '';
            foreach ($mini['site']['join_check'] as $key2 => $val2) {
                if (empty($data[$key2]) && !empty($val2['name'])) {
                    $tmp = !empty($tmp) ? $tmp . ",{$val2['name']}" : $val2['name'];
                }
            }
            if (!empty($tmp)) {
                __error("필수입력정보를 입력해 주세요. [{$tmp}]");
            }
        }
        //// 기본변수 여부 체크
        if (isset($data['site']) && !check($data['site'], 'type:num')) {
            __error("그룹을 선택해 주세요");
        }
        //// 다른 회원의 정보를 수정할 때 권한 체크
        // 그룹 정보를 저장
        if (!empty($mini['site'])) {
            $tmp_site = $mini['site'];
        }
        // 파싱
        if ($mini['member']['level_admin'] < 3) {
            $mini['member']['level_admin'] = 0;
        }
        getSite($data_ex['site']);
        $tmp = parseMember($data_ex, 1);
        if (empty($mini['member']['level_admin']) && count(array_intersect($mini['member']['site_admin'], $tmp['site_link_arr']))) {
            $mini['member']['level_admin'] = 2;
        }
        // 비교
        if (!empty($mini['member']['level_admin']) && $mini['member']['no'] != $data_ex['no'] && $mini['member']['level_admin'] < 4 && $mini['member']['level_admin'] <= $tmp['level_admin']) {
            __error('자신보다 높은 권한의 관리자 정보를 수정/열람할 수 없습니다');
        }
        if (!empty($tmp_site)) {
            $mini['site'] = $tmp_site;
            unset($tmp_site);
        }
        //// 쿼리
        sql("UPDATE {$mini['name']['member']} SET " . query($data, 'update') . " WHERE no={$val}");
        //// 번호 재입력
        $data['no'] = $val;
        //// 로그 기록
        addLog(array('mode' => 'member_edit', 'field1' => $data['no']));
    }
}
Ejemplo n.º 2
0
/** 쪽지 쓰기
 * @class memo
 * @param
		$data: 자료
		$from_no: 보내는사람번호
		$data_target: 받는회원자료
		$data_from: 보내는회원자료
		$ret: return 모드
  */
function sendMemo($data, $from_no = '', $data_target = '', $data_from = '', $ret = 0)
{
    global $mini;
    unset($data['from_member']);
    if (!is_array($data)) {
        $data = param($data);
    }
    if (empty($data['target_member'])) {
        __error('받는사람이 없습니다');
    }
    if (empty($data['ment'])) {
        __error('내용이 없습니다');
    }
    // 회원정보
    if (empty($data_target)) {
        check($data['target_member'], 'type:num, name:받는사람번호');
        $data_target = sql("SELECT * FROM {$mini['name']['member']} WHERE no={$data['target_member']}");
        if (!is_array($data_target)) {
            __error('존재하지 않는 회원 입니다');
        }
        $data_target = parseMember($data_target, 1);
    }
    if (empty($data_from)) {
        if (!empty($from_no)) {
            check($from_no, 'type:num, name:보내는사람번호');
            $data_from = sql("SELECT * FROM {$mini['name']['member']} WHERE no={$from_no}");
            if (!is_array($data_from)) {
                __error('존재하지 않는 회원 입니다');
            }
            $data_from = parseMember($data_from, 1);
        } else {
            if (!empty($mini['log'])) {
                $data_from = $mini['member'];
            } else {
                __error('보내는사람 정보가 없습니다');
            }
        }
    }
    $data['target_member'] = $data_target['no'];
    $data['from_member'] = $data_from['no'];
    $data['name_target'] = $data_target['name'];
    $data['name_from'] = $data_from['name'];
    // 친구메세지만 허용 확인
    if (!empty($data_target['ini']['memo']) && !empty($data_target['ini']['memo']['use_friend']) && empty($mini['member']['level_admin'])) {
        if (empty($data_target['ini']['friend']) || !empty($data_target['ini']['friend']) && !in_array($from_no, $data_target['ini']['friend'])) {
            __error('메세지를 보낼 수 없습니다. 상대방이 친구에게만 메세지를 받도록 설정했습니다.');
        }
    }
    // 차단 확인
    if (!empty($data_target['ini']['memo']['block']) && inStr($from_no, $data_target['ini']['memo']['block'])) {
        $data['is_block'] = 1;
    }
    // 내용 필터
    if (empty($data['skip_filter'])) {
        filter($data['ment'], 'encode');
    }
    // 기본정보 입력
    $data['date'] = $mini['date'];
    $data['ip'] = $mini['ip'];
    // 없는 것 빼기
    $col = getColumns($mini['name']['memo']);
    foreach ($data as $key => $val) {
        if (!inStr($key, $col)) {
            unset($data[$key]);
        }
    }
    // 쿼리
    sql("INSERT INTO {$mini['name']['memo']} " . query($data, 'insert'));
    // 리턴
    if ($ret) {
        return $data;
    }
}
Ejemplo n.º 3
0
/** 로그인 체크
 * @class default
 * @param
		$name: description
 * @return 
 */
function getMember()
{
    global $mini;
    if (!is_array($mini['member'])) {
        iss($_SESSION['m_no']);
        iss($_SESSION['m_pass']);
        iss($_COOKIE['m_no']);
        iss($_COOKIE['m_pass']);
        iss($_COOKIE['m_autologin']);
        iss($mini['set']['use_login_session']);
        $mini['log'] = 0;
        $check = 0;
        $no = $_SESSION['m_no'];
        $pass = $_SESSION['m_pass'];
        $autologin = $_COOKIE['m_autologin'];
        def($no, $_COOKIE['m_no']);
        def($pass, $_COOKIE['m_pass']);
        // 정보 불러오기
        if ($no) {
            if (preg_match("/[^0-9]/i", $no)) {
                __error('로그인 체크 도중 회원번호에 숫자가 아닌것이 발견되었습니다' . ' (' . __FILE__ . ' line ' . __LINE__ . ')');
            }
            // 데이터 체크
            $data = sql("SELECT * FROM {$mini['name']['member']} WHERE no={$no}");
            if (is_array($data)) {
                $arr_key_login = getStr($data['key_login']);
                if (is_array($arr_key_login)) {
                    if ($_SERVER['SERVER_ADDR'] == $mini['ip'] && preg_match("/^(phpThumb\\.php|trackback\\.php)\$/", $mini['filename'])) {
                        $mini['msg'] = "access! {$mini['ip']}";
                        $data['ip'] .= "[{$mini['ip']}]";
                    }
                    foreach (getStr($data['ip']) as $key => $val) {
                        if (empty($mini['set']['use_login_multi']) && $key != count($arr_key_login) - 1) {
                            continue;
                        }
                        // 자동 로그인 처리
                        if ($autologin && !empty($arr_key_login[$key]) && $autologin == md5("{$data['pass']}|{$val}|{$arr_key_login[$key]}")) {
                            $check = 1;
                        }
                        // 일반 로그인 처리
                        if ($pass && $pass == md5("{$data['pass']}|{$val}")) {
                            $check = 1;
                        }
                    }
                }
            }
        }
        //// 로그인 완료
        if ($check) {
            $mini['log'] = 1;
            $mini['member'] = parseMember($data, 1);
            // 인증, 징계상태, 경고 수 충족 시
            if (empty($mini['member']['admit']) && empty($mini['member']['level_admin']) || $mini['member']['date_punish'] && $mini['member']['date_punish'] != '0000-00-00 00:00:00' && $mini['time'] < strtotime($mini['member']['date_punish']) || !empty($mini['set']['punish_count']) && $mini['member']['count_alert'] >= $mini['set']['punish_count']) {
                $mini['member']['level'] = 0;
            }
            sql("UPDATE {$mini['name']['member']} SET date_login='******'date']}' WHERE no={$data['no']}");
            /*
            // 패스워드 갱신
            $new_pass = md5("{$data['pass']}|{$data['ip']}");
            if ($mini['set']['use_login_session']) 
            	$_SESSION['m_pass'] = $new_pass;
            else
            	setcookie('m_pass', $new_pass, 0, '/');
            */
            /*
            			// 손님 세션 제거
            			if ($mini['set']['use_guest_session']) {
            				unset($_SESSION['guest']);
            				sql("UPDATE {$mini['name']['ses']} SET special='member' WHERE id='".session_id()."' and ip='{$mini['ip']}'");
            			}
            */
        } else {
            unset($mini['member']);
            iss($mini['member']);
            /*
            			// 손님 세션 생성
            			if ($mini['set']['use_guest_session']) {
            				$mini['is_guest'] = 1;
            				sql("UPDATE {$mini['name']['ses']} SET special='guest' WHERE id='".session_id()."' and ip='{$mini['ip']}'");
            			}
            */
        }
    }
    // END is_array
}