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

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

QA

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

본문

안녕하세요..

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

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

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

 

    }


답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT