레벨에 따른 다운로드 제한 소스 좀 봐주세요. 정보
레벨에 따른 다운로드 제한 소스 좀 봐주세요.본문
오류가 나는곳의 주소를 알려주시면 더 빠르고 정확하게 답변 받을 수 있습니다.
오류 주소 :
download.php 수정한 소스입니다.
<?
include_once("./_common.php");
//레벨3이상은 무료다운로드3회 제한소스 시작
if ($member[mb_level] >2) { // 레벨3 이상만 적용
$to_day=date("Y-m-d");
if ($member[mb_1]==$to_day) {
if ($member[mb_2]=='3')
alert("무료다운로드는 하루에 3개로 제한합니다.\\n\\n3회 이후는 일반회원과 동일한 포인트가 적용됩니다.");
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]' ");
}
}
//레벨3이상은 무료다운로드3회 제한소스 끝
$no = (int)$no;
@include_once("$board_skin_path/download.head.skin.php");
// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 오류 발생
// 다른곳에서 링크 거는것을 방지하기 위한 코드
if (!get_session("ss_view_{$bo_table}_{$wr_id}"))
alert("잘못된 접근입니다.");
$sql = " select bf_source, bf_file from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$no' ";
$file = sql_fetch($sql);
if (!$file[bf_file])
alert_close("파일 정보가 존재하지 않습니다.");
if ($member[mb_level] < $board[bo_download_level]) {
$alert_msg = "다운로드 권한이 없습니다.";
if ($member[mb_id])
alert($alert_msg);
else
alert($alert_msg . "\\n\\n회원이시라면 로그인 후 이용해 보십시오.", "./login.php?wr_id=$wr_id&$qstr&url=".urlencode("$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id=$wr_id"));
}
$filepath = "$g4[path]/data/file/$bo_table/$file[bf_file]";
$filepath = addslashes($filepath);
if (!is_file($filepath) || !file_exists($filepath))
alert("파일이 존재하지 않습니다.");
// 사용자 코드 실행
@include_once("$board_skin_path/download.skin.php");
// 이미 다운로드 받은 파일인지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
$ss_name = "ss_down_{$bo_table}_{$wr_id}";
$ss_name .= "_{$no}";
if (!get_session($ss_name))
{
// 자신의 글이라면 통과
// 관리자인 경우 통과
// 3레벨 이상 통과
if (($write[mb_id] && $write[mb_id] == $member[mb_id]) || $is_admin);
if($member[mb_level] > 2);
else if ($board[bo_download_level] > 1) // 회원이상 다운로드가 가능하다면
{
// 다운로드 포인트가 음수이고 회원의 포인트가 0 이거나 작다면
if ($member[mb_point] + $board[bo_download_point] < 0)
alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 다운로드(".number_format($board[bo_download_point]).")가 불가합니다.\\n\\n포인트를 적립하신 후 다시 다운로드 해 주십시오.");
// 게시물당 한번만 차감하도록 수정
insert_point($member[mb_id], $board[bo_download_point], "$board[bo_subject] $wr_id 파일 다운로드", $bo_table, $wr_id . '|' . $no, "다운로드");
}
// 다운로드 카운트 증가
$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);
}
$g4[title] = "$group[gr_subject] > $board[bo_subject] > " . conv_subject($write[wr_subject], 255) . " > 다운로드";
if (preg_match("/^utf/i", $g4[charset]))
$original = urlencode($file[bf_source]);
else
$original = $file[bf_source];
@include_once("$board_skin_path/download.tail.skin.php");
if(preg_match("/msie/i", $_SERVER[HTTP_USER_AGENT]) && preg_match("/5\.5/", $_SERVER[HTTP_USER_AGENT])) {
header("content-type: doesn/matter");
header("content-length: ".filesize("$filepath"));
header("content-disposition: attachment; filename=\"$original\"");
header("content-transfer-encoding: binary");
} else {
header("content-type: file/unknown");
header("content-length: ".filesize("$filepath"));
header("content-disposition: attachment; filename=\"$original\"");
header("content-description: php generated data");
}
header("pragma: no-cache");
header("expires: 0");
flush();
$fp = fopen("$filepath", "rb");
// 4.00 대체
// 서버부하를 줄이려면 print 나 echo 또는 while 문을 이용한 방법보다는 이방법이...
//if (!fpassthru($fp)) {
// fclose($fp);
//}
$download_rate = 10;
while(!feof($fp)) {
//echo fread($fp, 100*1024);
/*
echo fread($fp, 100*1024);
flush();
*/
print fread
위와처럼 회수제한 소스를 걸었는데,
무료 다운로드 3회 이후에는 레벨2의 회원처럼
다운로드 포인트를 사용하여 다운로드가 가능하게 하려고 합니다.
어디를 손을 봐야 할 지 모르겠네요.
오류 주소 :
download.php 수정한 소스입니다.
<?
include_once("./_common.php");
//레벨3이상은 무료다운로드3회 제한소스 시작
if ($member[mb_level] >2) { // 레벨3 이상만 적용
$to_day=date("Y-m-d");
if ($member[mb_1]==$to_day) {
if ($member[mb_2]=='3')
alert("무료다운로드는 하루에 3개로 제한합니다.\\n\\n3회 이후는 일반회원과 동일한 포인트가 적용됩니다.");
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]' ");
}
}
//레벨3이상은 무료다운로드3회 제한소스 끝
$no = (int)$no;
@include_once("$board_skin_path/download.head.skin.php");
// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 오류 발생
// 다른곳에서 링크 거는것을 방지하기 위한 코드
if (!get_session("ss_view_{$bo_table}_{$wr_id}"))
alert("잘못된 접근입니다.");
$sql = " select bf_source, bf_file from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$no' ";
$file = sql_fetch($sql);
if (!$file[bf_file])
alert_close("파일 정보가 존재하지 않습니다.");
if ($member[mb_level] < $board[bo_download_level]) {
$alert_msg = "다운로드 권한이 없습니다.";
if ($member[mb_id])
alert($alert_msg);
else
alert($alert_msg . "\\n\\n회원이시라면 로그인 후 이용해 보십시오.", "./login.php?wr_id=$wr_id&$qstr&url=".urlencode("$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id=$wr_id"));
}
$filepath = "$g4[path]/data/file/$bo_table/$file[bf_file]";
$filepath = addslashes($filepath);
if (!is_file($filepath) || !file_exists($filepath))
alert("파일이 존재하지 않습니다.");
// 사용자 코드 실행
@include_once("$board_skin_path/download.skin.php");
// 이미 다운로드 받은 파일인지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
$ss_name = "ss_down_{$bo_table}_{$wr_id}";
$ss_name .= "_{$no}";
if (!get_session($ss_name))
{
// 자신의 글이라면 통과
// 관리자인 경우 통과
// 3레벨 이상 통과
if (($write[mb_id] && $write[mb_id] == $member[mb_id]) || $is_admin);
if($member[mb_level] > 2);
else if ($board[bo_download_level] > 1) // 회원이상 다운로드가 가능하다면
{
// 다운로드 포인트가 음수이고 회원의 포인트가 0 이거나 작다면
if ($member[mb_point] + $board[bo_download_point] < 0)
alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 다운로드(".number_format($board[bo_download_point]).")가 불가합니다.\\n\\n포인트를 적립하신 후 다시 다운로드 해 주십시오.");
// 게시물당 한번만 차감하도록 수정
insert_point($member[mb_id], $board[bo_download_point], "$board[bo_subject] $wr_id 파일 다운로드", $bo_table, $wr_id . '|' . $no, "다운로드");
}
// 다운로드 카운트 증가
$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);
}
$g4[title] = "$group[gr_subject] > $board[bo_subject] > " . conv_subject($write[wr_subject], 255) . " > 다운로드";
if (preg_match("/^utf/i", $g4[charset]))
$original = urlencode($file[bf_source]);
else
$original = $file[bf_source];
@include_once("$board_skin_path/download.tail.skin.php");
if(preg_match("/msie/i", $_SERVER[HTTP_USER_AGENT]) && preg_match("/5\.5/", $_SERVER[HTTP_USER_AGENT])) {
header("content-type: doesn/matter");
header("content-length: ".filesize("$filepath"));
header("content-disposition: attachment; filename=\"$original\"");
header("content-transfer-encoding: binary");
} else {
header("content-type: file/unknown");
header("content-length: ".filesize("$filepath"));
header("content-disposition: attachment; filename=\"$original\"");
header("content-description: php generated data");
}
header("pragma: no-cache");
header("expires: 0");
flush();
$fp = fopen("$filepath", "rb");
// 4.00 대체
// 서버부하를 줄이려면 print 나 echo 또는 while 문을 이용한 방법보다는 이방법이...
//if (!fpassthru($fp)) {
// fclose($fp);
//}
$download_rate = 10;
while(!feof($fp)) {
//echo fread($fp, 100*1024);
/*
echo fread($fp, 100*1024);
flush();
*/
print fread
위와처럼 회수제한 소스를 걸었는데,
무료 다운로드 3회 이후에는 레벨2의 회원처럼
다운로드 포인트를 사용하여 다운로드가 가능하게 하려고 합니다.
어디를 손을 봐야 할 지 모르겠네요.
댓글 전체
그런경우라면 다운을 3회를 했다는것을 구분하기위해 확장필드를 쓰는게 좋을것 같습니다.
무료다운을 1회했다면 mb_1 필드에 1을더하고 다운받을때마다 이필드를 검사한 후 3회가 넘으면 차단하는거죠 ㅇㅂㅇ
sql컨트롤을쓰시면될겁니다.
무료다운을 1회했다면 mb_1 필드에 1을더하고 다운받을때마다 이필드를 검사한 후 3회가 넘으면 차단하는거죠 ㅇㅂㅇ
sql컨트롤을쓰시면될겁니다.
도치즈님 ....
좀더 자세히 설명해 주실수는 없을까요?
제 실력이 너무 허접인지라 구체적인 내용이 필요할것 같네요
좀더 자세히 설명해 주실수는 없을까요?
제 실력이 너무 허접인지라 구체적인 내용이 필요할것 같네요
아.. 죄송합니다 mb_1, mb_2 을 벌써 쓰고있네요;;
mb_3 필드를 제한필드로 쓰고요
sql_query("update $g4[member_table] set mb_3 = mb_3 + 1 where mb_id = '$member[mb_id]'");
로하시면되겠네요 ㅎ
sql_query("update $g4[member_table] set mb_3 = mb_3 + 1 where mb_id = '$member[mb_id]'");
로하시면되겠네요 ㅎ
<?
include_once("./_common.php");
//레벨3이상은 무료다운로드3회 제한소스 시작
$down_count = 1;
if ($member[mb_level] >2) { // 레벨3 이상만 적용
$to_day=date("Y-m-d");
if ($member[mb_1]==$to_day) {
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]' ");
$member[mb_2] = 1;//추가
}
}
//레벨3이상은 무료다운로드3회 제한소스 끝
$no = (int)$no;
@include_once("$board_skin_path/download.head.skin.php");
// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 오류 발생
// 다른곳에서 링크 거는것을 방지하기 위한 코드
if (!get_session("ss_view_{$bo_table}_{$wr_id}"))
alert("잘못된 접근입니다.");
$sql = " select bf_source, bf_file from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$no' ";
$file = sql_fetch($sql);
if (!$file[bf_file])
alert_close("파일 정보가 존재하지 않습니다.");
if ($member[mb_level] < $board[bo_download_level]) {
$alert_msg = "다운로드 권한이 없습니다.";
if ($member[mb_id])
alert($alert_msg);
else
alert($alert_msg . "\\n\\n회원이시라면 로그인 후 이용해 보십시오.", "./login.php?wr_id=$wr_id&$qstr&url=".urlencode("$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id=$wr_id"));
}
$filepath = "$g4[path]/data/file/$bo_table/$file[bf_file]";
$filepath = addslashes($filepath);
if (!is_file($filepath) || !file_exists($filepath))
alert("파일이 존재하지 않습니다.");
// 사용자 코드 실행
@include_once("$board_skin_path/download.skin.php");
// 이미 다운로드 받은 파일인지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
$ss_name = "ss_down_{$bo_table}_{$wr_id}";
$ss_name .= "_{$no}";
if (!get_session($ss_name))
{
// 자신의 글이라면 통과
// 관리자인 경우 통과
// 3레벨 이상 통과
if (($write[mb_id] && $write[mb_id] == $member[mb_id]) || $is_admin){;}
else
{
if($member[mb_level] > 2 && $member[mb_2]< 3 ) { //레벨이 3이상이고 다운로드가 3개 이하이면 넘어간다<- 수정부분
;
}
else if ($board[bo_download_level] > 1) // 회원이상 다운로드가 가능하다면
{
// 다운로드 포인트가 음수이고 회원의 포인트가 0 이거나 작다면
if ($member[mb_point] + $board[bo_download_point] < 0)
alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 다운로드(".number_format($board[bo_download_point]).")가 불가합니다.\\n\\n포인트를 적립하신 후 다시 다운로드 해 주십시오.");
// 게시물당 한번만 차감하도록 수정
insert_point($member[mb_id], $board[bo_download_point], "$board[bo_subject] $wr_id 파일 다운로드", $bo_table, $wr_id . '|' . $no, "다운로드");
}
// 다운로드 카운트 증가
$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);
}
}
2군데만 수정하였습니다
처음 횟수 검사하는부분과
포인트 주는 부분입니다
include_once("./_common.php");
//레벨3이상은 무료다운로드3회 제한소스 시작
$down_count = 1;
if ($member[mb_level] >2) { // 레벨3 이상만 적용
$to_day=date("Y-m-d");
if ($member[mb_1]==$to_day) {
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]' ");
$member[mb_2] = 1;//추가
}
}
//레벨3이상은 무료다운로드3회 제한소스 끝
$no = (int)$no;
@include_once("$board_skin_path/download.head.skin.php");
// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 오류 발생
// 다른곳에서 링크 거는것을 방지하기 위한 코드
if (!get_session("ss_view_{$bo_table}_{$wr_id}"))
alert("잘못된 접근입니다.");
$sql = " select bf_source, bf_file from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$no' ";
$file = sql_fetch($sql);
if (!$file[bf_file])
alert_close("파일 정보가 존재하지 않습니다.");
if ($member[mb_level] < $board[bo_download_level]) {
$alert_msg = "다운로드 권한이 없습니다.";
if ($member[mb_id])
alert($alert_msg);
else
alert($alert_msg . "\\n\\n회원이시라면 로그인 후 이용해 보십시오.", "./login.php?wr_id=$wr_id&$qstr&url=".urlencode("$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id=$wr_id"));
}
$filepath = "$g4[path]/data/file/$bo_table/$file[bf_file]";
$filepath = addslashes($filepath);
if (!is_file($filepath) || !file_exists($filepath))
alert("파일이 존재하지 않습니다.");
// 사용자 코드 실행
@include_once("$board_skin_path/download.skin.php");
// 이미 다운로드 받은 파일인지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
$ss_name = "ss_down_{$bo_table}_{$wr_id}";
$ss_name .= "_{$no}";
if (!get_session($ss_name))
{
// 자신의 글이라면 통과
// 관리자인 경우 통과
// 3레벨 이상 통과
if (($write[mb_id] && $write[mb_id] == $member[mb_id]) || $is_admin){;}
else
{
if($member[mb_level] > 2 && $member[mb_2]< 3 ) { //레벨이 3이상이고 다운로드가 3개 이하이면 넘어간다<- 수정부분
;
}
else if ($board[bo_download_level] > 1) // 회원이상 다운로드가 가능하다면
{
// 다운로드 포인트가 음수이고 회원의 포인트가 0 이거나 작다면
if ($member[mb_point] + $board[bo_download_point] < 0)
alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 다운로드(".number_format($board[bo_download_point]).")가 불가합니다.\\n\\n포인트를 적립하신 후 다시 다운로드 해 주십시오.");
// 게시물당 한번만 차감하도록 수정
insert_point($member[mb_id], $board[bo_download_point], "$board[bo_subject] $wr_id 파일 다운로드", $bo_table, $wr_id . '|' . $no, "다운로드");
}
// 다운로드 카운트 증가
$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);
}
}
2군데만 수정하였습니다
처음 횟수 검사하는부분과
포인트 주는 부분입니다
위 소스를 적용하니 레벨3 회원의 무료다운로드가 적용이 되지 않네요.
SQL 쿼리 상단부 삭제한 부분이 아닐까요?
SQL 쿼리 상단부 삭제한 부분이 아닐까요?
위쪽의 레벨3 무료다운로드 소스를 삭제하면 될듯 합니다.
아래쪽에서 else if 문에서 레벨3의 다운로드에 대한 정의가 되어 있으니 말이죠.
혹시 안되면.... 또 질문을 드릴지도~
아래쪽에서 else if 문에서 레벨3의 다운로드에 대한 정의가 되어 있으니 말이죠.
혹시 안되면.... 또 질문을 드릴지도~
onlymilk74 님의 답변이 도움이 되었네요.
도움주신 도치즈님과 onlymilk74 님 감사합니다.
위쪽의 상단에서 무료다운로드 소스를 제거하니 정상적으로 잘 됩니다.
도움주신 도치즈님과 onlymilk74 님 감사합니다.
위쪽의 상단에서 무료다운로드 소스를 제거하니 정상적으로 잘 됩니다.
다행이시네요 ^^