채택완료

포인트 설정문제

게시물열람시 포인트가 100개 빠지도록 설정햇습니다
그런데 게시물이 오늘날짜가 아닌 지난게시물 열람시에는 포인트가 빠지지 않도록 할려고하는데요

이렇게 수정하는방법있을까요?
그러니까 오늘날짜로 작성한 신규게시물만 포인트가 빠지게 하고자합니다
|

답변 4개

채택된 답변
+20 포인트
해당 게시판의 view.skin.php
=============================
<?php
if (!defined("_GNUBOARD_")) exit;

// 1. 관리자, 본인, 포인트 설정이 0인 경우 제외
if (!$is_admin && $write['mb_id'] != $member['mb_id'] && $board['bo_read_point'] != 0) {
    
    $is_today_post = (substr($write['wr_datetime'], 0, 10) == G5_TIME_YMD);

    // 2. 오늘 글이 아닐 때만 환급 로직 가동
    if (!$is_today_post) {
        $refund_point = abs($board['bo_read_point']); 
        $rel_action = '과거글환급'; // 중복 환급 방지용 키워드

        // 오늘 이 글에서 환급받은 내역이 있는지 확인
        $sql = " select count(*) as cnt from {$g5['point_table']} 
                  where mb_id = '{$member['mb_id']}' 
                    and po_rel_table = '{$bo_table}' 
                    and po_rel_id = '{$wr_id}' 
                    and po_rel_action = '{$rel_action}' ";
        $row = sql_fetch($sql);

        if (!$row['cnt']) {
            // 포인트 즉시 복구
            insert_point($member['mb_id'], $refund_point, "{$board['bo_subject']} {$wr_id} 과거글 무료 읽기", $bo_table, $wr_id, $rel_action);
            
            // 실시간 포인트 반영을 위해 현재 페이지 새로고침 (선택 사항)
            // goto_url($_SERVER['REQUEST_URI']); 
        }
    }
}
?>

참고 삼아 보세요.
최신 버전 으로 /bbs/board.php 114번 라인 부터 보시면  

Copy
// 한번 읽은글은 브라우저를 닫기전까지는 카운트를 증가시키지 않음
    $ss_name = 'ss_view_'.$bo_table.'_'.$wr_id;
    if (!get_session($ss_name))
    {
        sql_query(" update {$write_table} set wr_hit = wr_hit + 1 where wr_id = '{$wr_id}' ");

        // 자신의 글이면 통과
        if ($write['mb_id'] && $write['mb_id'] === $member['mb_id']) {
            ;
        } else if ($is_guest && $board['bo_read_level'] == 1 && $write['wr_ip'] == $_SERVER['REMOTE_ADDR']) {
            // 비회원이면서 읽기레벨이 1이고 등록된 아이피가 같다면 자신의 글이므로 통과
            ;
        } else {
            // 글읽기 포인트가 설정되어 있다면
            if ($config['cf_use_point'] && $board['bo_read_point'] && $member['mb_point'] + $board['bo_read_point'] < 0)
                alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글읽기('.number_format($board['bo_read_point']).')가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.');

            insert_point($member['mb_id'], $board['bo_read_point'], ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$wr_id.' 글읽기', $bo_table, $wr_id, '읽기');
        }

        set_session($ss_name, TRUE);
    }


위 소스에  "// 글읽기 포인트가 설정되어 있다면" 부분 아래에 
Copy
$write_day = substr($write['wr_datetime'],0,10);  // 글 작성일, 날짜만
$today = date("Y-m-d"); // 오늘 날짜 
if($write_day == $today&&$bo_table == "사용하는 게시판 CODE") { 날짜 비교 포인트 차감용
            if ($config['cf_use_point'] && $board['bo_read_point'] && $member['mb_point'] + $board['bo_read_point'] < 0)
                alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글읽기('.number_format($board['bo_read_point']).')가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.');

            insert_point($member['mb_id'], $board['bo_read_point'], ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$wr_id.' 글읽기', $bo_table, $wr_id, '읽기');
}
if ($bo_table != "사용하는 게시판 CODE") { // 그 외 게시판 포인트 차감 기능 유지용
            if ($config['cf_use_point'] && $board['bo_read_point'] && $member['mb_point'] + $board['bo_read_point'] < 0)
                alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글읽기('.number_format($board['bo_read_point']).')가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.');

            insert_point($member['mb_id'], $board['bo_read_point'], ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$wr_id.' 글읽기', $bo_table, $wr_id, '읽기');
}


위에서 날짜별 포인트 기능을 다수의 게시판에 적용 할때 $bo_table 대신 $write['wr_1'] 등 여분 필드 값을 입력하여 비교  활용도 가능 합니다.

Copy
$write_day = substr($write['wr_datetime'],0,10);  // 글 작성일, 날짜만
$today = date("Y-m-d"); // 오늘 날짜 
if($write_day == $today&&$write['wr_1']!="") { 날짜 비교 포인트 차감용, 여분 필드에 값이 있는 게시판
            if ($config['cf_use_point'] && $board['bo_read_point'] && $member['mb_point'] + $board['bo_read_point'] < 0)
                alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글읽기('.number_format($board['bo_read_point']).')가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.');

            insert_point($member['mb_id'], $board['bo_read_point'], ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$wr_id.' 글읽기', $bo_table, $wr_id, '읽기');
}
if ($write['wr_1']=="") { // 타 게시판 포인트 차감 기능 유지용, 여분 필드 값이 없는 게시판
            if ($config['cf_use_point'] && $board['bo_read_point'] && $member['mb_point'] + $board['bo_read_point'] < 0)
                alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글읽기('.number_format($board['bo_read_point']).')가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.');

            insert_point($member['mb_id'], $board['bo_read_point'], ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$wr_id.' 글읽기', $bo_table, $wr_id, '읽기');
}
먼저 '오늘' today를 정의하고,
sql 쿼리에 '오늘' 조건을 추가해보세요.
순정 일때 
bbs/board.php

                alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글읽기('.number_format($board['bo_read_point']).')가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.');
//2026-02-13
                      $sql = " select wr_datetime from {$write_table} where  wr_id=".$wr_id;
                      $chl_dat = sql_fetch($sql);
                              $chl_db= date("Y-m-d" , strtotime($chl_dat[wr_datetime]));
                              $chl_td=date("Y-m-d");
                              $if_chl= (strtotime($chl_td) - strtotime($chl_db)) / 86400;

                                    if($if_chl==0){
                                    //echo "오늘";
                                    insert_point($member['mb_id'], $board['bo_read_point'], ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$wr_id.' 글읽기', $bo_table, $wr_id, '읽기');
                                    }
//2026-02-13
//            insert_point($member['mb_id'], $board['bo_read_point'], ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$wr_id.' 글읽기', $bo_table, $wr_id, '읽기');
        }

        set_session($ss_name, TRUE);
    }

이러게 하면 됩니다 .
참고 하세요

 

답변을 작성하려면 로그인이 필요합니다.