일일 다운로드 횟수 제한 정보
일일 다운로드 횟수 제한본문
한 회원 당 일일 다운로드 횟수를 제한하려고 합니다.
검색해서 소스를 하나 찾았고 잘 적용되기는 하는데
같은 파일을 중복 다운로드 시에 카운트를 건너뛰는 법을 모르겠습니다.
소스 출처 : 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);
}
}
이런식으로 다운로드 로그를 저장하기 때문에 이걸 이용해보려고 했는데 방법을 잘 모르겠습니다.
어떻게 해야 중복 카운트를 막을 수 있나요.
부탁드립니다.
검색해서 소스를 하나 찾았고 잘 적용되기는 하는데
같은 파일을 중복 다운로드 시에 카운트를 건너뛰는 법을 모르겠습니다.
소스 출처 : 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))
{
// .....생략 ...
// 게시물당 한번만 차감하도록 수정
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))
정작 이 부분을 보지 않고 넘어갔었네요.
// 이미 다운로드 받은 파일인지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
$ss_name = "ss_down_{$bo_table}_{$wr_id}";
if (!get_session($ss_name))
정작 이 부분을 보지 않고 넘어갔었네요.
잘 처리되긴 했는데 막상 테스트를 더 해보니 저 소스를 수정한 이후부터 적용이 되는군요.
get_session 이용한 소스로 수정하기 전에 받았던 자료들은 다 새로 받게 되는 것 같네요.
get_session 이용한 소스로 수정하기 전에 받았던 자료들은 다 새로 받게 되는 것 같네요.