/** * 회원 수정 * @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'])); } }
/** 쪽지 쓰기 * @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; } }
/** 로그인 체크 * @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 }