포인트차감질문

포인트차감질문

QA

포인트차감질문

본문

특정 게시글의 첨부파일을 다운받을시 포인트를 차감 당하게하려고 여분필드를 이용해 만들었습니다.

아래의 소스코드는 bbs/download.php 입니다. 아래의 소스코드에서 어디가 문제인가요?


if ($member['mb_point'] + $board['bo_download_point'] < 0)
            alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 다운로드('.number_format($board['bo_download_point']).')가 불가합니다.\\n\\n포인트를 적립하신 후 다시 다운로드 해 주십시오.');
        if($group['gr_subject'] == "게시판그룹")
        {
          if ($member['mb_point'] +  $write[wr_1] < 0)
              alert('보유하신 포인트가 없거나 모자라서 다운로드가 불가합니다.\\n\\n포인트를 적립하신 후 다시 다운로드 해 주십시오.');
          else
          insert_point($member['mb_id'], $write[wr_1] * -1, "{$board['bo_subject']} $wr_id 파일 다운로드", $bo_table, $wr_id, "다운로드");
        }
        else
        {
          // 게시물당 한번만 차감하도록 수정
          insert_point($member['mb_id'], $board['bo_download_point'], "{$board['bo_subject']} $wr_id 파일 다운로드", $bo_table, $wr_id, "다운로드");
        }

 

파일을 다운받을때 다운로드시 차감되는 포인트보다 보유하고있는 포인트가 적을시 경고가떠야되는데

그대로 다운받아지면서 포인트가 음수가 되버리고맙니다...

이 질문에 댓글 쓰기 :

답변 1

bbs/write.php 파일을 수정하시기 보다는 게시판 스킨에 download.head.skin.php 파일을 추가하시고 원하시는 조건이 만족할 경우 $board['bo_download_point'] 를 원하는 포인트로 재설정하셔서 구현하실 수 있을듯 합니다.

 


if(조건) {
    $board['bo_download_point'] = 포인트;
}

bbs/download.php 파일을 보시면 `download.head.skin.php` 파일을 include 하는 부분이 있습니다. 기본스킨에는 그 파일이 없지만 있을경우 include 되죠.


..
// bbs/download.php 파일 9라인
@include_once($board_skin_path.'/download.head.skin.php');
..

그럼 download.head.skin.php 파일을 생성하고
안에
if($group['gr_subject'] == "게시판 그룹")
        {
          if ($member['mb_point'] +  $write[wr_1] * -1 <= 0)
              alert('보유하신 포인트가 없거나 모자라서 다운로드가 불가합니다.\\n\\n포인트를 적립하신 후 다시 다운로드 해 주십시오.');
          else
          insert_point($member['mb_id'], $write[wr_1] * -1, "{$board['bo_subject']} $wr_id 파일 다운로드", $bo_table, $wr_id, "다운로드");
        }
이렇게만 넣어주면 되는건가요?

$write['wr_1'] 에 차감 포인트가 있는것 같은데.. 이렇게만 하면 될것 같은데요? 임시로 파일 다운로드할 때만 wr_1에 설정된 값을 게시판의 다운로드 차감 포인트로 설정하는 겁니다.


if($group['gr_subject'] == "게시판 그룹") {
    $board['bo_download_point'] = $write['wr_1'];
}

<?php
if($group['gr_subject'] == "게시판그룹") {
    $board['bo_download_point'] = $write['wr_1'] * -1;
}
?>

이렇게해줫더니 차감된다는 메시지가 떠서 확인눌렀더니 차감은 안되고 다운로드가 되어지네염...

저... 다운로드 되는건 얼떨결에 해결된거같은데 더 이상한 문제가 생겼습니다.
게시글다운로드시 "파일명" 파일을 다운-로드 하시면 포인트가 차감(-3,000점)됩니다.포인트는 게시물당 한번만 차감되며 다음에 다시 다운로드 하셔도 중복하여 차감하지 않습니다.그래도 다운로드 하시겠습니까? 라는 메시지가 떠서 확인을 누르니 잘못된 접근입니다. 라고 뜨고 확인을 누르면 다시 제일처음 메시지가 뜨면서 무한반복을 해버립니다....

확인해보니까 그누보드 다운로드 스크립트에 약간의 버그가 있는것 같습니다. 일단 버그신고는 제가 해놨습니다만... 해결할 수 있는 방법은

download.head.skin.php 파일은


if($group['gr_subject'] == "게시판 그룹") {
    $board['bo_download_point'] = $write['wr_1'];
}

이런식으로 수정하시면 되실 것 같고, 경고창 문제는  view.skin.php 파일에서 파일 다운로드시 포인트 차감경고를 하지 않고 download.php 로 바로 이동해서 생기는 문제입니다. (이 부분을 처리하는데 download.php 에 버그가 있는것 같습니다.)

어째든, 경고 문제는 view.skin.php 에서 포인트 차감 경고를 제대로 하고 넘어가면 해결될 것입니다.

view.skin.php 파일의 하단 부분에 다음과 같은 코드가 있을 것입니다.

<?php if ($board['bo_download_point'] < 0) { ?>
$(function() {
    $("a.view_file_download").click(function() {
        if(!g5_is_member) {
            alert("다운로드 권한이 없습니다.\n회원이시라면 로그인 후 이용해 보십시오.");
            return false;
        }

        var msg = "파일을 다운로드 하시면 포인트가 차감(<?php echo number_format($board['bo_download_point']) ?>점)됩니다.\n\n포인트는 게시물당 한번만 차감되며 다음에 다시 다운로드 하셔도 중복하여 차감하지 않습니다.\n\n그래도 다운로드 하시겠습니까?";

        if(confirm(msg)) {
            var href = $(this).attr("href")+"&js=on";
            $(this).attr("href", href);

            return true;
        } else {
            return false;
        }
    });
});
<?php } ?>


이 부분을

<?php
$download_point = ($group['gr_id'] == '그룹아이디' && $view['wr_1'] < 0 ? $view['wr_1'] : $board['bo_download_point']);
if ($download_point < 0) { 
?>
$(function() {
    $("a.view_file_download").click(function() {
        if(!g5_is_member) {
            alert("다운로드 권한이 없습니다.\n회원이시라면 로그인 후 이용해 보십시오.");
            return false;
        }

        var msg = "파일을 다운로드 하시면 포인트가 차감(<?php echo number_format($download_point) ?>점)됩니다.\n\n포인트는 게시물당 한번만 차감되며 다음에 다시 다운로드 하셔도 중복하여 차감하지 않습니다.\n\n그래도 다운로드 하시겠습니까?";

        if(confirm(msg)) {
            var href = $(this).attr("href")+"&js=on";
            $(this).attr("href", href);

            return true;
        } else {
            return false;
        }
    });
});
<?php } ?>


이런식으로 고치시면 될것 같습니다. 그리고 파일 다운로드시 반드시 이 스크립트가 호출되도록 해주세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 26
QA 내용 검색

회원로그인

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