특정 레벨은 쪽지발송시 포인트 차감 제외 방법

특정 레벨은 쪽지발송시 포인트 차감 제외 방법

QA

특정 레벨은 쪽지발송시 포인트 차감 제외 방법

답변 3

본문

안녕하세요..

특정 레벨은 쪽지 발송시 포인트가 차감되지 않게 하려고 하는대요.

초보라 손을 봐도 적용이 되지 않고 있습니다.

아래 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'] == || $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'] == || $member['mb_level'] == 9) {

이와같이 예외하려는 레벨을 써 주시면 됩니다.

 

 

위에 2개 다 해야 합니다.

위에 1번은 포인트가 있는지 확인하는것이고
아래 2번은 실제로 포인트를 차감하는 소스입니다.

아~ 제가 실수 했네요 ㅠ_ㅠ
심야에 졸려서 정신이 없었나봐요.


if (!$is_admin && $member['mb_level'] != 7 && $member['mb_level'] != 8 && $member['mb_level'] != 9) {

이렇게 포인트 차감하지 않을 레벨 숫자를 위와같이 써 주세요.4

두군데 다요.

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);

 

    }


답변을 작성하시기 전에 로그인 해주세요.
전체 3
© SIRSOFT
현재 페이지 제일 처음으로