마이너스 포인트 일때 다운되지 않게 하는 법 (수정) 정보
그누호환 마이너스 포인트 일때 다운되지 않게 하는 법 (수정)본문
gbdownload.php 이 파일을 열어 수정하십시오.
굵은 부분을 추가해서 넣으십시오.
회원 권한을 앞에 두고 다운로드 포인트 권한을 두번째 옮겨 실효성을 갖추었습니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
define("_DOCTYPE_", "NONE");
# 3.23
# 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 오류 발생
# 다른곳에서 링크 거는것을 방지하기 위한 코드
$ss_name = "ss_view_{$bo_table}_{$wr_id}";
if (!$HTTP_SESSION_VARS[$ss_name])
alert("값을 제대로 넘겨주세요.");
if ($member[mb_level] < $board[bo_download_level]) {
$alert_msg = "다운로드 권한이 없습니다.";
if ($member[mb_id]) {
alert($alert_msg);
} else {
alert($alert_msg . "\\n\\n회원이시라면 로그인 후 이용해 보십시오.", "./?doc=bbs/mblogin.php&wr_id=$wr_id&$qstr&url=".urlencode("./?doc=bbs/gnuboard.php&bo_table=$bo_table&wr_id=$wr_id"));
}
}
if ($member[mb_point] < $board[bo_download_level]) {
$alert_msg = "포인트가 부족합니다.";
if ($point[mb_point] < 0) {
alert($alert_msg);
} else {
alert($alert_msg);
}
}
$subject = conv_subject($write[wr_subject], 255);
$html_title = "$group[gr_subject] > $board[bo_subject] > " . $subject . " > 다운로드";
$filepath = "./data/file/$bo_table/" . $write["wr_file".$index];
$filepath = addslashes($filepath);
$original = $write["wr_file".$index."_source"];
if ($write["wr_file{$index}"] && file_exists($filepath)) {
if(eregi("msie", $HTTP_SERVER_VARS[HTTP_USER_AGENT]) && eregi("5\.5", $HTTP_SERVER_VARS[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");
if (is_file("$filepath")) {
$fp = fopen("$filepath", "rb");
// 서버부하를 줄이려면 print 나 echo 또는 while 문을 이용한 방법보다는 이방법이...
if (!fpassthru($fp)) {
fclose($fp);
}
# 3.23
$ss_name = "ss_down_{$bo_table}_{$wr_id}_{$index}";
if (!$HTTP_SESSION_VARS[$ss_name]) {
$sql = " update $write_table
set wr_file{$index}_download = wr_file{$index}_download + 1
where wr_id = '$wr_id' ";
if($member[mb_level] < 10) {
insert_point($member[mb_id], -30, "$board[bo_subject] $wr_file 다운"); // 다운 받을때 마다 -30점 깍임 단, 레벨 10은 포인트가 깍이지 않음
}
sql_query($sql);
session_register($ss_name);
$$ss_name = $HTTP_SESSION_VARS[$ss_name] = TRUE;
}
} else {
alert("해당 파일이나 경로가 존재하지 않습니다.");
}
} else {
alert("파일을 찾을 수 없습니다.");
}
?>
굵은 부분을 추가해서 넣으십시오.
회원 권한을 앞에 두고 다운로드 포인트 권한을 두번째 옮겨 실효성을 갖추었습니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
define("_DOCTYPE_", "NONE");
# 3.23
# 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 오류 발생
# 다른곳에서 링크 거는것을 방지하기 위한 코드
$ss_name = "ss_view_{$bo_table}_{$wr_id}";
if (!$HTTP_SESSION_VARS[$ss_name])
alert("값을 제대로 넘겨주세요.");
if ($member[mb_level] < $board[bo_download_level]) {
$alert_msg = "다운로드 권한이 없습니다.";
if ($member[mb_id]) {
alert($alert_msg);
} else {
alert($alert_msg . "\\n\\n회원이시라면 로그인 후 이용해 보십시오.", "./?doc=bbs/mblogin.php&wr_id=$wr_id&$qstr&url=".urlencode("./?doc=bbs/gnuboard.php&bo_table=$bo_table&wr_id=$wr_id"));
}
}
if ($member[mb_point] < $board[bo_download_level]) {
$alert_msg = "포인트가 부족합니다.";
if ($point[mb_point] < 0) {
alert($alert_msg);
} else {
alert($alert_msg);
}
}
$subject = conv_subject($write[wr_subject], 255);
$html_title = "$group[gr_subject] > $board[bo_subject] > " . $subject . " > 다운로드";
$filepath = "./data/file/$bo_table/" . $write["wr_file".$index];
$filepath = addslashes($filepath);
$original = $write["wr_file".$index."_source"];
if ($write["wr_file{$index}"] && file_exists($filepath)) {
if(eregi("msie", $HTTP_SERVER_VARS[HTTP_USER_AGENT]) && eregi("5\.5", $HTTP_SERVER_VARS[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");
if (is_file("$filepath")) {
$fp = fopen("$filepath", "rb");
// 서버부하를 줄이려면 print 나 echo 또는 while 문을 이용한 방법보다는 이방법이...
if (!fpassthru($fp)) {
fclose($fp);
}
# 3.23
$ss_name = "ss_down_{$bo_table}_{$wr_id}_{$index}";
if (!$HTTP_SESSION_VARS[$ss_name]) {
$sql = " update $write_table
set wr_file{$index}_download = wr_file{$index}_download + 1
where wr_id = '$wr_id' ";
if($member[mb_level] < 10) {
insert_point($member[mb_id], -30, "$board[bo_subject] $wr_file 다운"); // 다운 받을때 마다 -30점 깍임 단, 레벨 10은 포인트가 깍이지 않음
}
sql_query($sql);
session_register($ss_name);
$$ss_name = $HTTP_SESSION_VARS[$ss_name] = TRUE;
}
} else {
alert("해당 파일이나 경로가 존재하지 않습니다.");
}
} else {
alert("파일을 찾을 수 없습니다.");
}
?>
추천
0
0
댓글 전체
대단히 좋은 방법입니다. 여러개의 게시판 중에서 지정된 게시판의 다운에만 적용시키는 것도 가능할까요?
포인트 깍는건 관리자 모드에서 가능한데요. -를 붙이면 깍인답니다.
정말 수고 하셨습니다. 좋은생각이셨네요
한가지 더요 글을 읽으면 포인트가 깍이는 것도 된다면 딱일듯 싶네요
저는 다운로드를 해도 포인트가 그대로 남아 있네요
뭐가 잘못된건지 모르겠네요
뭐가 잘못된건지 모르겠네요
감사합니다.
추가로
다운로드클릭시 msg활용해서 "회원님은 현재 몇 포인트를 가지고 계십니다. 다운받으실려면 XX포인트가 필요합니다. \n다운로드 받으시겠습니까?" "예" "아니오"
가 있었으면 좋겠네요^^
추가로
다운로드클릭시 msg활용해서 "회원님은 현재 몇 포인트를 가지고 계십니다. 다운받으실려면 XX포인트가 필요합니다. \n다운로드 받으시겠습니까?" "예" "아니오"
가 있었으면 좋겠네요^^
찾아다니면서 얻어낸 결실입니다...^^
애 쓰셨습니다. gbdownload.php 가 있었군요.