아쵸오님의 포인트 삭감처리 팁 질문좀 드릴게요 .. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

아쵸오님의 포인트 삭감처리 팁 질문좀 드릴게요 .. 정보

아쵸오님의 포인트 삭감처리 팁 질문좀 드릴게요 ..

본문

포인트 삭각 처리 소스가 밑에 꺼 인데요...
이 소스가  회원가입 하고 바로 적용이 되어서
회원가입하고 3일이 지나야 작동이 되어야 하는데 ..
바로 작동이 되어서  회원가입 한 분들의  포인트 까지 삭감처리 되어버리는데 ..
요걸  어떻게 고칠수 없을까요?ㅜ.ㅜ
<?
if (!defined("_GNUBOARD_")) exit; // 개별페이지 접근불가

//마지막 글쓴날을 계산하여 포인트 감소처리 - 회원전용
//사용위치는 login_check.php
//예) nowrite_minus_point($mb[mb_id]);
function nowrite_minus_point($mb_id) {
global $g4;
global $is_admin;
    if ($mb_id) {
        $mb = get_member($mb_id);
        if (!$is_admin && $mb[mb_level] < 10) {
            //최신글DB에서 정보를 가져온다.
            $sql_my = " select bo_table from $g4[board_table] ";
            $result = sql_query($sql_my);
           
            for ($i=0; $row=sql_fetch_array($result); $i++)
            {
                $tmp_write_table = $g4[write_prefix] . $row[bo_table];
                //회원의 마지막 등록글 날짜가져오기
                $row2 = sql_fetch_array(sql_query(" select wr_datetime from $tmp_write_table where mb_id = '$mb[mb_id]' order by wr_datetime desc limit 1"));
                if ($row2[wr_datetime]) {
                    //회원 최종 글쓴지 몇일 지났는지.. (-1은 당일 안포함한다는 뜻.)
                    $sql_my2 = " select (TO_DAYS('$g4[time_ymdhis]') - TO_DAYS('$row2[wr_datetime]') - 1) as days ";
                    $row3 = sql_fetch($sql_my2);
                    $mb_write_after = $row3[days];
                   
                    $arr[] = $mb_write_after; //기록
                } else {
                  $arr[] = 999999; //한번도 글작성 안한 경우 기록
                }
            }
            asort($arr); //가장 작은 값을 찾기 위해 올림차순 정열
            array_splice($arr, 1); //제일 첫번째 값만 남기고 나머지 배열값들은 잘라버린다.
            $mb_write_after_result = $arr[0]; //가장 마지막으로 글작성 후 지난 날 수
            //======
            //$dp = 500; //★1일당 감소할 포인트값(단위)
            $dp = number_format($mb[mb_point] / 100,'','',''); //★1일당 감소할 포인트값(단위) - 소수점이하 반올림후 제거 콤마(,) 없이
            $reset_point = 300; //초기화 포인트값 (지원금)
            $minus_point = $mb_write_after_result * $dp * (-1); //1일당 -$dp씩 감소
           
            // 잔고가 마이너스 될 경우 포인트 초기화 지원금
            if (($mb[mb_point] + $minus_point) <= 0) {
                $minus_point = ($mb[mb_point] * (-1)) + $reset_point; //초기화를 위한 지원금 적용
            }
            $limit_day = 3; //★몇일 글 안쓰면 적용할지..
            if ($mb_write_after_result >= $limit_day && $minus_point) {
                insert_point($mb[mb_id], $minus_point, "{$limit_day}일 이상 글작성을 안 해 포인트감소", '', '', ''); //포인트감소
                $ment = "{$limit_day}일 이상 글작성을 안 해 {$minus_point} 포인트가 감소되었습니다.\\n\\n1) {$limit_day}일 이상일때만 적용하며, 1일당 {$dp}포인트씩 감소됩니다.\\n2) 전체포인트가 0보다 작아지면 {$reset_point}으로 자동초기화 됩니다.";
                echo "<script language='JavaScript'>alert(\"{$ment}\");</script>";
            }
        }
    }
    return;
 }
?>

댓글 전체

$mb = get_member($mb_id); 이부분이 회원 정보를 가지고 오는데 이부분의 쿼리문을 가입일이 3일 안된 회원은

가지고 오지 않도록 바꾸어 주시면 되겠네요.....

아니면 3일이 안되면 패스시키시던지요......
login_check.php 에서 이파일을 불러오는 곳을 아래의 코드로 감싸 주세요.

//회원 가입후 3일후부터 적용함
$wtime = date("Y-m-d", $g4[server_time] - (3 * 86400));
$jtime = $member[mb_datetime];
if ($jtime >= $wtime ) {
include_once("$g4[path]/lib/login_check_lib.php");
include_once("$g4[path]/lib/loginchik_check_point.php");
nologin_minus_point($mb[mb_id]); //로그인 안한 날들 계산하여 포인트 삭감처리
nowrite_minus_point($mb[mb_id]); //글 안쓴 날들 계산하여 포인트 삭감처리
}
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT