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

포인트 삭각 처리 소스가 밑에 꺼 인데요...
이 소스가  회원가입 하고 바로 적용이 되어서
회원가입하고 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;
 }
?>
|

댓글 5개

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

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

아니면 3일이 안되면 패스시키시던지요......
3일이 안되면 패스 시키는걸 어떻게 바꿔 줘야 하나요...
제가 php는 전혀 모르지라 ㅜ.ㅜ
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]); //글 안쓴 날들 계산하여 포인트 삭감처리
}
이제보니 코드가 꺼꾸로 된듯 합니다..

if ($jtime >= $wtime ) {

if ($jtime <= $wtime ) {
로 해보세요.
아뇨 포인트를 -시켜 주어야 하는데 게속 + 시켜 주는데요 ㅜ.ㅜ
댓글을 작성하시려면 로그인이 필요합니다. 로그인

그누4 질문답변

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

+
제목 글쓴이 날짜 조회
19년 전 조회 1,516
19년 전 조회 1,507
19년 전 조회 1,811
19년 전 조회 1,735
19년 전 조회 1,527
19년 전 조회 1,558
19년 전 조회 1,524
19년 전 조회 1,554
19년 전 조회 1,600
19년 전 조회 1,512
19년 전 조회 1,444
19년 전 조회 1,689
19년 전 조회 1,533
19년 전 조회 1,763
19년 전 조회 1,552
19년 전 조회 1,816
19년 전 조회 1,507
19년 전 조회 1,534
19년 전 조회 1,901
19년 전 조회 1,384
🐛 버그신고