쪽지 포인트 차감을 쓰고 있는데요.. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

쪽지 포인트 차감을 쓰고 있는데요.. 정보

쪽지 포인트 차감을 쓰고 있는데요..

본문

쪽지 포인트 차감을 쓰고 있는데요 ..

포인트 차감은 아주 잘 되는데 ..

포인트가 0인사람 도

쪽지를 보낼수 있네요 ..

-100으로  되서 요 ㅜ.ㅜ

이걸 어떻게  해야 하는지 ㅜ.ㅜ
  • 복사

댓글 전체

<?
include_once("./_common.php");
?>
<meta http-equiv="content-type" content="text/html; charset=<?=$g4['charset']?>">
<?
include_once("./memo_confc.php");

if (!$member[mb_id])
    alert("회원만 이용하실 수 있습니다.");

// 메모 저장하기일때
if ($memo_msg =="ok") {

if ($memo_membodc_6 !="on")
{
  alert("현재설정에서 메모 저장하기를 사용하지 않습니다.", "./memo.php");
 }
if ($member[mb_level] < $memo_membodc_7)
 {
    alert("메모의 저장은 회원레벨 $memo_membodc_7 부터 허용 합니다. 현재레벨: $member[mb_level]");
  }

$sqls2 = " select count(*) as cnt from $g4[memo_table] where memo_datec = '1' and me_recv_mb_id = '$member[mb_id]' ";
$rows2 = sql_fetch($sqls2);
$total_counts = $rows2[cnt];

if (!$is_admin && $total_counts > $memo_membodc_8)
{
  alert("저장할 총메모 갯수 ({$memo_membodc_8}) 를 초과 하였습니다.\\n이전에 저장한 메모를 삭제한후 저장하세요.");
  }
  $sql = " select * from $g4[memo_table] where me_id = '$memo_no' and (me_recv_mb_id = '$member[mb_id]' or me_send_mb_id = '$member[mb_id]') ";
  $result = sql_fetch($sql);
  $memo_nsub = addslashes($result[me_memo]);
  $memo_nsub_bc = addslashes($result[me_read_datetime]);
  $memo_nsub_b = addslashes($result[me_recv_mb_id]);
  $memo_nsub_c = addslashes($result[me_send_mb_id]);
  $memo_nsub_d = $result[memo_datec];
  $memo_nsub_e = $result[memofile];
  $memo_nsub_eb = $result[bmemos];
  $memo_nsub_f = addslashes($result[memosub]);

 if ($mkind == "recv") {
  if ($member[mb_id] != $memo_nsub_b){
  alert("본인에게 발송된 메모가 아닙니다.");
}
  }
  else if($mkind == "send") {
  if ($member[mb_id] != $memo_nsub_c){
  alert("본인이 보낸 메모가 아닙니다.");
  }
 }
  else if($mkind == "sendad") {
  alert("이미 저장되어 있는 메모 입니다.");
 }
 else
{
    alert("정상적인 방법으로 저장해 주시기 바랍니다.");
}
  if ($memo_nsub_d =="1") {
  alert("이미 저장되어 있는 메모 입니다.");
  }

if ($memo_nsub_e)
  {
 $srcm_dir = "$g4[path]/data/file/memo_data";
 $membermb_mid =$member[mb_id];
  @copy("$srcm_dir/$memo_nsub_e", "$srcm_dir/{$membermb_mid}_{$memo_nsub_e}");
  @chmod("$srcm_dir/{$membermb_mid}_{$memo_nsub_e}", 0606);
  }
  $memo_nsub .= "\n\n[{$member[mb_nick]} 님이 $g4[time_ymdhis] 에 저장한 메모 입니다.]\n\n";

if ($memo_nsub_e)
  {
  $memodatasd_upb = "{$membermb_mid}_{$memo_nsub_eb}";
  $memodatasd_up = "{$membermb_mid}_{$memo_nsub_e}";
}
else
{
        $memodatasd_upb = "";
  $memodatasd_up = "";
}
        $tmp_rowm = sql_fetch(" select max(me_id) as max_me_id from $g4[memo_table] ");
        $me_idm = $tmp_rowm[max_me_id] + 1;
$me_idmbc ="1";

    // 쪽지 INSERT bmemos,'$memodatas_upb', memosub,  me_read_datetime,

        $sql = " insert into $g4[memo_table]
                ( me_id, me_recv_mb_id, me_send_mb_id, me_read_datetime, me_send_datetime, me_memo, memofile, bmemos, memopoint, memo_datec, memosub )
              values ( '$me_idm', '$member[mb_id]', '$memo_nsub_c', '$memo_nsub_bc', '$g4[time_ymdhis]', '$memo_nsub', '$memodatasd_up', '$memodatasd_upb', '', '$me_idmbc', '$memo_nsub_f' ) ";
      sql_query($sql);

    alert("요청하신 $memo_no 번의 $me_idm 메모를 저장 하였습니다.", "./memo.php?mkind=sendad");
  exit;
  // 메모저장하기끝
  }
 else

 {

// 기존의 메모보내기 일때
// 넘어온 포인트값이 있다면 지정한 수수료를 계산하고
$me_send_point = trim($_POST["me_send_point"]);
$me_sendms = $memo_membodc_18;
$me_sendmscb = $memo_membodc_12;
$me_sendmscbc = $memo_membodc_13;
$me_sendmsm = 100 - $me_sendms;
$me_send_points  = (int)($me_send_point  * $me_sendmsm / 100);
$me_send_pointsm = $me_send_point - $me_send_points;

if ($me_send_point) {
if ($member[mb_level] < $memo_membodc_11)
{
 alert("포인트 선물은 회원레벨 $memo_membodc_11 이상부터 선물이 가능합니다. \\n\\n메모 발송이 취소되었습니다.");
}

if ($member[mb_datetime] <= date("Y-m-d H:i:s", $g4[server_time] - ($memo_membodc_14 * 86400))) {

if ($me_sendmscb > $me_send_point) {
    alert("포인트 선물시 최저 {$me_sendmscb} 포인트 부터 선물이 가능합니다. \\n\\n메모발송이 취소되었습니다. ");
}  
if ($me_sendmscbc < $me_send_point) {
  alert("포인트 선물시 최고 {$me_sendmscbc} 포인트 까지만 선물이 가능합니다. \\n\\n메모 발송이 취소되었습니다.");
 }
if ($member[mb_point] < $memo_membodc_15) {
  alert("포인트 선물은 현재 포인트가 {$memo_membodc_15} 이상 보유 해야만 선물이 가능합니다. \\n\\n메모 발송이 취소되었습니다.");

}
}
else
{
 alert("포인트 선물은 가입일로부터 $memo_membodc_14 일이 지나야만 선물이 가능합니다. \\n\\n메모 발송이 취소되었습니다.");
}

}

// 메모를 받을 회원의 리스트로 만들고|| !$row[mb_open]
$tmp_list = explode(",", $me_recv_mb_id);
$me_recv_mb_id_list = "";
$msg = "";
$comma = "";
$mb_list = array();

for ($i=0; $i<count($tmp_list); $i++) {
$row = get_member($tmp_list[$i]);
      if (!$row[mb_id] || $row[mb_leave_date] || $row[mb_intercept_date]) {
    $msg .= "$comma$tmp_list[$i]";
        //$comma = ",";
    } else {
$me_recv_mb_id_list .= "$comma$row[mb_nick]";
        $mb_list[] = $tmp_list[$i];
        $mb_list_nick[] = $row[mb_nick];
        $total_spoint = $total_spoint + $me_send_point;
$total_spoints = $total_spoints + $me_send_points;
$total_spointsm = $total_spointsm + $me_send_pointsm;
    }
    $comma = ",";
}

/*
$tmp_list = explode(",", $me_recv_mb_id);
$me_recv_mb_id_list = "";
$msg = "";
$comma = "";
$mb_list = array();
for ($i=0; $i<count($tmp_list); $i++) {
    $row = get_member($tmp_list[$i]);
    if (!$row[mb_id] || $row[mb_leave_date] || $row[mb_intercept_date] || !$row[mb_open]) {
        $msg .= "$comma$tmp_list[$i]";
    } else {
        $me_recv_mb_id_list .= "$comma$row[mb_nick]";
        $mb_list[] = $tmp_list[$i];
    }
    $comma = ", ";
}
*/


if ($msg)
    alert($msg . " 은(는) 존재하지 않는 회원아이디 이거나 탈퇴, 접근차단된 회원아이디 입니다.\\n\\n쪽지를 발송하지 않았습니다.");

// 쪽지친구에게만 받기로 설정이 되어있나?

if ($memo_membodc_28 =="on") {
$madmin_uid =$config['cf_admin'];
for ($is=0; $is<count($mb_list); $is++) {
    if (trim($mb_list[$is])) {
$smember_memo = get_member($mb_list[$is]);
if ($smember_memo[$memo_memc_config] =="on")
{
$sqlmb = " select * from g4_memo_friend
          where my_id = '$mb_list[$is]'
and mf_id = '$member[mb_id]' ";
$memomb = sql_fetch($sqlmb);
$msgs = $mb_list[$is];
if ($madmin_uid == $smember_memo[mb_id] || $member[mb_id] == $smember_memo[mb_id])
;
else
{
 if (!$is_admin && !$memomb[my_id])
{
    alert("안내: 쪽지발송 에러 메세지 이므로 참조하세요.\\n\\n{$msgs} ({$smember_memo[mb_name]}) 회원 은(는) 지정한 쪽지친구 에게만 메모를\\n\\n받기로 설정이 되어 있으며  친구로 등록된 회원이 아닌분은\\n\\n메모를 보낼수가 없으며 여러명에게 동시에 메모를 보낼경우\\n\\n{$msgs} ({$smember_memo[mb_name]}) 회원을 리스트에서 제외한후 보내야 합니다.");
    }
}
  }
  }
 }
}

// 포인트를 선물할경우 넘어온 포인트값을 검사
if ($total_spoint)
{
if($member[mb_point] < $total_spoint && eregi("-",$member[mb_point]))
 {
  alert("포인트가 - 이므로 선물이 불가능 합니다.");
 }
}
if ($total_spoint)
{
$me_memo = $me_memo."\n\n\n[{$member[mb_nick]}({$member[mb_id]})님의 포인트 선물받음 : ".$me_send_points."]";
}

if ($total_spoint && ($total_spoint < 0 || $total_spoint > $member[mb_point]))
 {
    alert("보내시려는 총 포인트값({$total_spoint})이 현재 포인트값({$member[mb_point]})을 넘었습니다. \\n\\n메모 발송이 취소되었습니다.");
 }

if ($total_spoint) {
$totalm_spointm ="1";
}
else
 {
$totalm_spointm ="";
 }


// 파일을 첨부했다면 검사과정 및 파일을 암호화_암호화_이름으로 변경한후 저장
if ($file1)
 {
if ($member[mb_level] < $memo_membodc_3) {
    alert("메모의 파일 첨부는 회원레벨 $memo_membodc_3 부터 허용 합니다.\\n\\n메모 발송이 취소되었습니다.");
}
for ($im=0; $im<count($mb_list); $im++) {
    if (trim($mb_list[$im])) {
if (!$is_admin && $member[mb_id] == $mb_list[$im])
 {
  alert("자신 에게는 파일을 첨부 할수가 없습니다. \\n\\메모 발송이 취소되었습니다.");
 }
 }
}
$sqls3 = " select count(*) as cnt from $g4[memo_table] where memofile LIKE '%_%' and memo_datec ='0' and me_send_mb_id = '$member[mb_id]' ";
$rows3 = sql_fetch($sqls3);
$total_countsm = $rows3[cnt];
if (!$is_admin && $total_countsm > $memo_membodc_4) {
  alert("첨부할 파일의 총갯수 ({$memo_membodc_4}) 를 초과 하였습니다.\\n이전에 저장한 메모와 파일을 삭제한후 업로드 하세요. \\n\\n발송이 취소되었습니다.");
}
 $membermb_id =$member[mb_id];

  // 업로드할 디렉토리를 구하고
@mkdir("$g4[path]/data/file/memo_data", 0707);
    @chmod("$g4[path]/data/file/memo_data", 0707);

    $tmp_file  = $_FILES[file1][tmp_name];
    $filename  = $_FILES[file1][name];
    $filesize  = $_FILES[file1][size];

    // 서버에 설정된 값보다 큰파일을 업로드 한다면
    if ($filename)
    {
        if ($_FILES[file1][error]== 1)
        {
            alert("{$filename} 파일의 용량이 서버에 설정 ({$upload_max_filesize}) 된 값보다 크므로 업로드 할 수 없습니다.");

        }
        else if ($_FILES[file1][error] != 0)
        {
            alert("{$filename}\' 파일이 정상적으로 업로드 되지 않았습니다.");
        }
    }

    if (is_uploaded_file($tmp_file))
    {
        if (!$is_admin && $filesize > $memo_membodc_5)
        {
          alert("$filename} 의 파일의 용량(".number_format($filesize)." 바이트) 설정(".number_format($memo_membodc_5)." 바이트) 된 값보다 크므로 업로드 하지 않습니다.");
        }
        $uploadname = $filename;
        $filename = preg_replace("/\.(php|phtm|htm|cgi|pl|exe|jsp|asp|inc|js)/i", "$0-x", $filename);
        $filename = abs(ip2long($_SERVER[REMOTE_ADDR])).'_'.substr(md5(uniqid($g4[server_time])),0,8).'_'.str_replace('%', '', urlencode($filename));
    if($filename && !move_uploaded_file($file1, "$g4[path]/data/file/memo_data/{$filename}")) alert("$uploadname 파일 업로드 실패");
        $dest_file = "$g4[path]/data/file/memo_data/" . $filename;
        @chmod($dest_file, 0606);
      }
  }

// 쪽지 보내기
for ($i=0; $i<count($mb_list); $i++) {
    if (trim($mb_list[$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;
if ($file1){
  $memodata_up = $filename;
}
else
{
        $memodata_up = "";
}
        // 쪽지 INSERT 
        $sql = " insert into $g4[memo_table]
                        ( me_id, me_recv_mb_id, me_send_mb_id, me_send_datetime, memofile, bmemos, memopoint, memosub, memo_datec, me_memo )
                values ( '$me_id', '$mb_list[$i]', '$member[mb_id]', '$g4[time_ymdhis]', '$memodata_up', '$uploadname', '$totalm_spointm', '$memosub', '', '$me_memo' ) ";
        sql_query($sql);

        // 실시간 쪽지 알림 기능
        $sql = " update $g4[member_table]
                    set mb_memo_call = '$member[mb_id]'
                  where mb_id = '$mb_list[$i]' ";
        sql_query($sql);
//쪽지 포인트 차감
    if (!$is_admin) {
            $recv_mb_nick = get_text($mb_array[$i][mb_nick]);
            $recv_mb_id = $mb_array[$i][mb_id];
            insert_point($member[mb_id], (int)$config[cf_memo_send_point] * (-1), "{$mb_list_nick[$i]}({$mb_list[$i]})님께 쪽지 발송", "@memo", $recv_mb_id, $me_id);
        }


if ($total_spoint) {
        insert_point($mb_list[$i], $me_send_points, "{$member[mb_nick]}({$member[mb_id]})님께 $me_send_points 포인트 선물받음", '', '', '');
        insert_point($member[mb_id], -$me_send_points, "{$mb_list_nick[$i]}({$mb_list[$i]})님께 $me_send_points 포인트 선물보냄", '', '', '');
        insert_point($member[mb_id], -$me_send_pointsm, "{$mb_list_nick[$i]}({$mb_list[$i]})님께 $me_send_pointsm 포인트 선물수수료", '', '', '');
  }


}
}


// 포인트 선물시 보낸이 에게도 메모보내기로 설정을 했다면 동시에 보내고
if ($memo_membodc_17 =="on") {
if ($total_spoint) {
$pmentsm = "{$me_recv_mb_id} 님께 {$me_send_points} 포인트와 함께 메모보냄";
    $pment = "{$me_send_points} 포인트와 함께";
    $cpoint = $member[mb_point] - $total_spoint;
    $content ="$me_recv_mb_id 님께 {$me_send_points} (총{$total_spoints}포인트이며 수수료 {$total_spointsm} 포인트차감) 를 보내드렸습니다. 자세한 사항은 포인트 내역을 참조하세요.";
$tmp_row = sql_fetch(" select max(me_id) as max_me_id from $g4[memo_table] ");
    $me_ids = $tmp_row[max_me_id] + 1;
        // 쪽지 INSERT
        $sql = " insert into $g4[memo_table]
                        ( me_id, me_recv_mb_id, me_send_mb_id, me_send_datetime, memofile, memopoint, memosub, memo_datec, me_memo )
                values ( '$me_ids', '$member[mb_id]', '$member[mb_id]', '$g4[time_ymdhis]', '', '', '$pmentsm', '', '$content' ) ";
        sql_query($sql);

        // 실시간 쪽지 알림 기능
        $sql = " update $g4[member_table]
                    set mb_memo_call = '$member[mb_id]'
                  where mb_id = '$member[mb_id]' ";
        sql_query($sql);
  }
 }

alert("{$me_recv_mb_id_list} 님께{$pment} 쪽지를 전달하였습니다.", "./memo.php?mkind=send");
 
 }

?>
아.. 이 소스 에서 .. 밑에 부분이 빠진것 까지는 알겠는데 ..
어떻게 넣어야 할지 모르 겠네요 ㅜ.ㅜ


if (!$is_admin) {
    if (count($mb_list)) {
        $point = (int)$config[cf_memo_send_point] * count($mb_list);
        if ($point) {
            if ($member[mb_point] - $point < 0) {
                alert("보유하신 포인트(".number_format($member[mb_point])."점)가 모자라서 쪽지를 보낼 수 없습니다.");
            }
        }
    }
}

for ($i=0; $i<count($mb_list); $i++) {
    if (trim($mb_list[$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;

        // 쪽지 INSERT
아래의 코드가 들어가야 합니다.
이유는 다수의 회원에게 일괄 메모 전송시 메모갯수 * 차감할 포인트 보다
회원이 보유한 포인트가 적을 경우를 검사하는 과정 입니다.

아래처럼 // 쪽지 보내기 <- 바로위에 위치하여 추가 하세요.

if (!$is_admin) {
    if (count($mb_list)) {
        $point = (int)$config[cf_memo_send_point] * count($mb_list);
        if ($point) {
            if ($member[mb_point] - $point < 0) {
                alert("보유하신 포인트(".number_format($member[mb_point])."점)가 모자라서 쪽지를 보낼 수 없습니다.");
            }
        }
    }
}

// 쪽지 보내기
for ($i=0; $i<count($mb_list); $i++) {
    if (trim($mb_list[$i])) {
 
생략
© SIRSOFT
현재 페이지 제일 처음으로