그누보드 다중 첨부파일 개별 다운로드 포인트 차감 설정 방법
페이지 정보

본문
그누보드 기본 설정은 동일 게시물 내 여러 첨부파일을 다운로드할 때 최초 1회만 포인트를 차감합니다. 이를 파일마다 개별적으로 포인트가 차감되도록 수정하여 포인트 경제 시스템을 정밀하게 관리하는 방법을 안내합니다.
다중 첨부파일 다운로드 시 파일별 포인트 개별 차감 수정 방법
그누보드 기본 설정은 동일 게시물 내의 첨부파일을 여러 번 다운로드해도 게시물당 1회만 포인트가 차감되도록 되어 있습니다. 이를 각 파일마다 개별적으로 포인트가 차감되도록 수정하려면 bbs/download.php 파일의 세션 체크 로직과 포인트 기록 함수를 수정해야 합니다.
수정 전 주의사항
작업을 시작하기 전에 반드시 bbs/download.php 파일을 백업하십시오. 코드 수정 중 발생할 수 있는 오류에 대비하기 위함입니다.
수정 절차
bbs/download.php 파일을 열어 다음 두 곳을 수정합니다.
1. 세션 이름($ss_name) 수정
파일 내에서 이미 다운로드 받은 파일인지 검사하는 세션 변수에 파일 번호($no)를 추가하여 파일별로 세션을 구분합니다.
- 기존 코드:
$ss_name = 'ss_down_'.$bo_table.'_'.$wr_id; - 수정 코드:
$ss_name = 'ss_down_'.$bo_table.'_'.$wr_id.'_'.$no;
2. 포인트 차감 함수(insert_point) 수정
포인트 내역이 DB에 기록될 때 게시물 번호와 파일 번호가 함께 저장되도록 $wr_id 인자를 수정합니다.
- 기존 코드:
insert_point($member['mb_id'], $board['bo_download_point'], "{$board['bo_subject']} $wr_id 파일 다운로드", $bo_table, $wr_id, "다운로드"); - 수정 코드:
insert_point($member['mb_id'], $board['bo_download_point'], "{$board['bo_subject']} $wr_id 파일 다운로드", $bo_table, $wr_id.'|'.$no, "다운로드");
결과 확인
수정 후 파일을 다운로드하면 g5_point 테이블에 포인트 내역이 기록됩니다. 이때 wr_id 필드에는 게시물번호|파일번호(예: 7|0) 형태로 저장되어, 각 파일별로 포인트 차감 내역이 개별적으로 관리되는 것을 확인할 수 있습니다.
코드 수정 전 주의사항
그누보드 소스 코드를 수정하기 전에는 반드시 원본 파일을 백업해야 합니다. 수정 과정에서 발생할 수 있는 문법 오류나 예기치 않은 기능 오작동으로부터 사이트를 보호하고, 문제가 발생했을 때 즉시 이전 상태로 복구하기 위함입니다.
백업 및 복구 절차
- 파일 백업: 수정 대상인
bbs/download.php파일을 서버에서 로컬 PC로 다운로드하거나, 서버 내 안전한 경로에 복사본(예:download.php.bak)을 생성합니다. - 오류 대응: 코드 수정 후 기능이 작동하지 않거나 경고창이 출력되지 않는 등 문제가 발생하면, 즉시 백업해둔 원본 파일을 서버에 다시 업로드하여 복구합니다.
- 환경 확인: 수정 후에는 게시판 ID나 코드 문법이 정확하게 적용되었는지 재확인합니다.
참고 사항
- 본 수정은 그누보드 원본 소스를 기준으로 합니다. 만약 별도의 커스텀 스킨이나 플러그인을 사용 중이라면 코드의 위치나 구조가 다를 수 있으므로, 해당 스킨의 구조를 먼저 파악해야 합니다.
- 포인트 차감 내역은 DB에 기록되므로, 수정 후 실제 다운로드 시 포인트가 파일별로 정상적으로 차감되는지 테스트 계정으로 확인하는 것을 권장합니다.
포인트 차감 내역 확인 방법
그누보드에서 insert_point 함수를 통해 기록된 포인트 차감 내역은 데이터베이스의 g5_point 테이블에 저장됩니다. 다중 첨부파일 다운로드 시 파일별로 포인트를 개별 차감하도록 수정한 경우, 포인트 내역이 게시물 번호와 파일 번호를 조합하여 기록되는지 확인할 수 있습니다.
포인트 내역 확인 절차
- DB 접속: MySQL 관리 도구(예: phpMyAdmin, HeidiSQL 등)를 사용하여 그누보드 데이터베이스에 접속합니다.
- 테이블 조회:
g5_point테이블을 선택하여 데이터를 조회합니다. - 데이터 구조 확인:
po_rel_id또는po_rel_table컬럼과 함께po_content내용을 확인합니다.- 수정 전에는 게시물 번호(
$wr_id)만 기록되었으나, 수정 후에는insert_point함수의 인자 설정에 따라게시물번호|파일번호형태로 기록됩니다. - 예:
7|0(7번 게시물의 0번 첨부파일),7|1(7번 게시물의 1번 첨부파일)
- 수정 전에는 게시물 번호(
참고 사항
insert_point함수는lib/common.lib.php파일에 정의되어 있으며, 포인트 내역 기록 시po_rel_id인자에 전달된 값이 DB에 저장됩니다.- 포인트 내역은 한 번 기록되면 별도의 DB 백업본 없이는 복구가 불가능하므로, 테스트 시 주의가 필요합니다.
- 만약 포인트가 정상적으로 차감되지 않거나 내역이 기록되지 않는다면,
bbs/download.php파일에서 수정된insert_point함수의 인자값이 올바르게 전달되고 있는지 확인해야 합니다.
다중 첨부파일 다운로드 시 파일별 포인트 개별 차감 설정
그누보드 기본 설정은 게시물당 1회만 포인트가 차감되도록 되어 있습니다. 이를 각 파일마다 개별 차감되도록 수정하려면 bbs/download.php 파일의 세션 체크와 포인트 기록 로직을 수정해야 합니다.
상황별 판단 및 행동
| 내 상황 | 선택 기준 | 다음 행동 |
|---|---|---|
| 코드 수정 시작 전 | 데이터 안전 확보 | bbs/download.php 파일 원본 백업 |
| 다중 파일 개별 차감 적용 | 세션 및 DB 기록 분리 | 세션 이름과 insert_point 인자에 .$no 추가 |
| 수정 후 기능 검증 | 포인트 내역 확인 | g5_point 테이블에서 po_rel_id 필드 값 확인 |
실전 FAQ
Q. 수정 후 포인트가 파일별로 차감되는지 어떻게 확인하나요?
A. DB 관리 도구(phpMyAdmin 등)로 g5_point 테이블을 조회하십시오. po_rel_id 컬럼에 게시물번호|파일번호(예: 7|0) 형태로 기록되어 있다면 정상적으로 개별 차감되고 있는 것입니다.
Q. 수정 후 다운로드가 안 되거나 오류가 발생하면 어떻게 하나요?
A. 즉시 백업해둔 bbs/download.php 원본 파일을 서버에 덮어씌워 복구하십시오. 이후 코드의 문법 오류나 파일 경로가 정확한지 다시 확인해야 합니다.
Q. 특정 게시판에만 이 기능을 적용할 수 있나요?
A. 네, 수정하려는 코드 블록을 if ($bo_table == '게시판아이디') {... } 조건문으로 감싸면 해당 게시판에만 기능을 제한적으로 적용할 수 있습니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글그누보드 입력 폼 필수 입력 표시(별표) 삭제 및 변경 방법 26.10.05
- 다음글PHP에서 소수점 이하 특정 자릿수 버림 함수 구현 방법 26.10.05
댓글목록
등록된 댓글이 없습니다.