일일 다운로드 횟수 제한 > 그누4 질문답변

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누4 질문답변

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

일일 다운로드 횟수 제한 정보

일일 다운로드 횟수 제한

본문

한 회원 당 일일 다운로드 횟수를 제한하려고 합니다.

검색해서 소스를 하나 찾았고 잘 적용되기는 하는데
같은 파일을 중복 다운로드 시에 카운트를 건너뛰는 법을 모르겠습니다.

소스 출처 : http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=162043 의 댓글

  $to_day=date("Y-m-d");
  if ($member[mb_1]==$to_day) {

    if ($member[mb_2]=='5')
      alert("다운로드는 하루에 5개까지만 받을수 있습니다. ");
    else
      sql_query(" update g4_member set mb_2 = mb_2+'1' where mb_id = '$member[mb_id]' ");
 
  }else{

    sql_query(" update g4_member set mb_1 = '$to_day', mb_2='1' where mb_id = '$member[mb_id]' ");
 
  }

이게 download.skin.php 넣은 소스인데요.
같은 파일을 또 받아도 카운트가 되는데 어떻게 해야 카운트가 안되게 할 수 있을까요?

common.lib.php 파일 내부에 중복 다운 시 포인트를 한번만 차감하는 소스를 보고
어떻게 좀 수정해보려고 했는데 잘 안되네요.

    // 이미 등록된 내역이라면 건너뜀
    if ($rel_table || $rel_id || $rel_action)
    {
        $sql = " select count(*) as cnt from $g4[point_table]
                  where mb_id = '$mb_id'
                    and po_rel_table = '$rel_table'
                    and po_rel_id = '$rel_id'
                    and po_rel_action = '$rel_action' ";
        $row = sql_fetch($sql);
        if ($row[cnt])
            return -1;
    }

게다가 다운로드 시 포인트 차감을 사용하고 있지 않아서 저렇게는 안되고요.

저는 배추 베이직 스킨을 사용하고 있는데 배추 베이직 스킨에서는 다운로드 로그를 저장하거든요.

if ($mw_basic[cf_download_log]) { // 다운로드 기록
    $dl_name = $board[bo_use_name] ? $member[mb_name] : $member[mb_nick];
    $sql = "insert into $mw[download_log_table]
              set bo_table = '$bo_table'
                  , wr_id = '$wr_id'
                  , bf_no = '$no'
                  , mb_id = '$member[mb_id]'
                  , dl_name = '$dl_name'
                  , dl_ip = '$_SERVER[REMOTE_ADDR]'
                  , dl_datetime = '$g4[time_ymdhis]'";
    $qry = sql_query($sql, false);
    if (!$qry) { // 테이블 생성시 dl_name 필드가 빠져서 추가함 v.1.0.2 버그
        sql_query("alter table $mw[download_log_table] add dl_name varchar(20) not null after mb_id", false);
        sql_query($sql);
    }
}

이런식으로 다운로드 로그를 저장하기 때문에 이걸 이용해보려고 했는데 방법을 잘 모르겠습니다.

어떻게 해야 중복 카운트를 막을 수 있나요.
부탁드립니다.

댓글 전체

bbs/download.php 34행 부분

// 이미 다운로드 받은 파일인지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
$ss_name = "ss_down_{$bo_table}_{$wr_id}";
if (!get_session($ss_name))
{
    // .....생략 ...
        // 게시물당 한번만 차감하도록 수정
        insert_point($member[mb_id], $board[bo_download_point], "$board[bo_subject] $wr_id 파일 다운로드", $bo_table, $wr_id, "다운로드");

    // 다운로드 카운트 증가
    $sql = " update $g4[board_file_table] set bf_download = bf_download + 1 where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$no' ";
    sql_query($sql);

    set_session($ss_name, TRUE);
}

위 흐름 참고 처리 중인 소스에 추가.보완 해 보세요.
빠른 답변 감사드립니다.

// 이미 다운로드 받은 파일인지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
$ss_name = "ss_down_{$bo_table}_{$wr_id}";
if (!get_session($ss_name))

정작 이 부분을 보지 않고 넘어갔었네요.
잘 처리되긴 했는데 막상 테스트를 더 해보니 저 소스를 수정한 이후부터 적용이 되는군요.

get_session 이용한 소스로 수정하기 전에 받았던 자료들은 다 새로 받게 되는 것 같네요.
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

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