특정 레벨은 쪽지발송시 포인트 차감 제외 방법
본문
안녕하세요..
특정 레벨은 쪽지 발송시 포인트가 차감되지 않게 하려고 하는대요.
초보라 손을 봐도 적용이 되지 않고 있습니다.
아래 memo_form_update.php 원본입니다.
제가 이부분을
if (!$is_admin || $member[mb_level] > '3') {
if (count($member_list['id'])) {
$point = (int)$config[cf_memo_send_point] * count($member_list['id']);
if ($point) {
if ($member[mb_point] - $point < 0) {
alert("보유하신 포인트(".number_format($member[mb_point])."가 모자라서 쪽지를 보낼 수 없습니다.");
}
}
}
}
이렇게 수정해봤는대도 안되더라고요.. ㅠㅠ
도움 부탁합니다 고수님들~~
원본:
<?
include_once("./_common.php");
if (!$member[mb_id])
alert("회원만 이용하실 수 있습니다.");
$recv_list = explode(",", trim($_POST['me_recv_mb_id']));
$str_nick_list = "";
$msg = "";
$error_list = array();
$member_list = array();
for ($i=0; $i<count($recv_list); $i++) {
$row = sql_fetch(" select mb_id, mb_nick, mb_open, mb_leave_date, mb_intercept_date from $g4[member_table] where mb_id = '$recv_list[$i]' ");
// 관리자가 아니면서
// 가입된 회원이 아니거나 정보공개를 하지 않았거나 탈퇴한 회원이거나 차단된 회원에게 쪽지를 보내는것은 에러
if ((!$row[mb_id] || !$row[mb_open] || $row[mb_leave_date] || $row[mb_intercept_date]) && !$is_admin) {
$error_list[] = $recv_list[$i];
} else {
$member_list['id'][] = $row[mb_id];
$member_list['nick'][] = $row[mb_nick];
}
}
$error_msg = implode(",", $error_list);
if ($error_msg && !$is_admin)
alert("회원아이디 \'".$error_msg."\' 은(는) 존재(또는 정보공개)하지 않는 회원아이디 이거나 탈퇴, 접근차단된 회원아이디 입니다.\\n\\n쪽지를 발송하지 않았습니다.");
if (!$is_admin) {
if (count($member_list['id'])) {
$point = (int)$config[cf_memo_send_point] * count($member_list['id']);
if ($point) {
if ($member[mb_point] - $point < 0) {
alert("보유하신 포인트(".number_format($member[mb_point])."가 모자라서 쪽지를 보낼 수 없습니다.");
}
}
}
}
for ($i=0; $i<count($member_list['id']); $i++) {
$tmp_row = sql_fetch(" select max(me_id) as max_me_id from $g4[memo_table] ");
$me_id = $tmp_row[max_me_id] + 1;
$recv_mb_id = $member_list['id'][$i];
$recv_mb_nick = get_text($member_list['nick'][$i]);
// 쪽지 INSERT
$sql = " insert into $g4[memo_table]
( me_id, me_recv_mb_id, me_send_mb_id, me_send_datetime, me_memo )
values ( '$me_id', '$recv_mb_id', '$member[mb_id]', '$g4[time_ymdhis]', '$_POST[me_memo]' ) ";
sql_query($sql);
// 실시간 쪽지 알림 기능
$sql = " update $g4[member_table] set mb_memo_call = '$member[mb_id]' where mb_id = '$recv_mb_id' ";
sql_query($sql);
if (!$is_admin) {
insert_point($member[mb_id], (int)$config[cf_memo_send_point] * (-1), "{$recv_mb_nick}({$recv_mb_id})님께 쪽지 발송", "@memo", $recv_mb_id, $me_id);
}
}
$str_nick_list = implode(",", $member_list['nick']);
alert("쪽지가 전달되었습니다", "./memo.php?kind=send");
?>
답변 3
## 1 . 중간에
if (!$is_admin) {
if (count($member_list['id'])) {
$point = (int)$config[cf_memo_send_point] * count($member_list['id']);
if ($point) {
if ($member[mb_point] - $point < 0) {
alert("보유하신 포인트(".number_format($member[mb_point])."가 모자라서 쪽지를 보낼 수 없습니다.");
}
}
}
}
여기서 if (!$is_admin) { 이것을
if (!$is_admin || $member['mb_level'] == 7 || $member['mb_level'] == 8 || $member['mb_level'] == 9) {
이와같이 예외하려는 레벨을 써 주시면 됩니다.
## 2 . 밑부분에
if (!$is_admin) {
insert_point($member[mb_id], (int)$config[cf_memo_send_point] * (-1), "{$recv_mb_nick}({$recv_mb_id})님께 쪽지 발송", "@memo", $recv_mb_id, $me_id);
}
여기서 if (!$is_admin) { 이것을
if (!$is_admin || $member['mb_level'] == 7 || $member['mb_level'] == 8 || $member['mb_level'] == 9) {
이와같이 예외하려는 레벨을 써 주시면 됩니다.
위에 2개 다 해야 합니다.
if (!$is_admin || $member[mb_level] > '3') {
이렇게 하셨는데 || or 입니다.
관리자가 아니거나 레벨이 3보다 크면 통과되요
사용하신 조건문 자체가 관리자가 아니거나 회원레벨이 3보다 클때
둘중에 하나라도 만족하면 루틴이 실행되는 방식이에요..
if (!$is_admin and $member[mb_level] > '3') {
이렇게 바꾸시면 관리자도 아니고 회원레벨이 3보다 크면 (포인트깍음) 입니다
3레벨 이상 혹은 관리자일경우 포인트를 사용안하게 하시려면
if (!$is_admin and $member[mb_level]< '3') {
이렇게 하시면 관리자도 아니고..회원이지만
레벨3부터 포인트를 차감 안합니다.
밑에도 마찬가지로
if (!$is_admin and $member[mb_level]< '3') {
insert_point($member['mb_id'], (int)$config['cf_memo_send_point'] * (-1), $recv_mb_nick.'('.$recv_mb_id.')님께 쪽지 발송', '@memo', $recv_mb_id, $me_id);
}
감사합니다