로그인 안한 날들 계산하여 포인트 감소기능 - (로그인시)수정1 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

로그인 안한 날들 계산하여 포인트 감소기능 - (로그인시)수정1 정보

로그인 안한 날들 계산하여 포인트 감소기능 - (로그인시)수정1

본문

2006.4.4 수정

설명..
==========================
최종로그인을 한 뒤 3일 동안 로그인을 안했다면, 1일당 1000점씩 총 3000포인트를
회원의 현재 포인트에서 삭감합니다. 최종로그인을 했던 날과 현재 로그인을 하고 있는
당일은 제외하고 그 사이의 날들을 로그인 안 한 날들로 처리했습니다.

3일이 지났을때에만 기능이 작동합니다. $limit_day = 3 이 부분을 수정하면 몇일이 지난
경우부터 적용시킬지 정할 수가 있습니다.

현재는 1일당 1000으로 되어 있는데요. 아래 소스의 $dp = 1000; 부분을 적절히 수정하시면
1일당 삭감될 포인트값을 정의 하실 수 있습니다. 적절히 수정하시면 되겠습니다.
$dp = 100; 요렇게 바꾸시면 로그인 하루 안할때마다 포인트 100점씩 깍이겠지요.

로그인 안한 날이 너무 길어서, 삭감 처리 후 포인트 잔고가 마이너스가 되는 경우엔
포인트 초기화 지원금을 주도록 하였습니다. 현재 100포인트로 초기화 되도록 셋팅되어
있습니다. 이 부분은 $reset_point = 100; 를 적절히 수정하시면 됩니다.

현재 관리자가 아니고 랩이 7 아래일때만 적용되도록 해놓았습니다. 수정하시려면,
if (!$is_admin && $mb[mb_level] < 7 ) 이 부분을 수정하시면 됩니다.

포인트 처리사항은 포인트 내역에 기록됩니다.

※포인트가 활동에 중요한 역활을 하는 경우라면..
1.적절히 조정하지 않으면 너무 심한 압박이 될 수도 있으므로 주의해야 합니다.
2.로그인 활동이 거의 없는 회원들의 포인트가 고스란히 쌓여 있는 것에 제제를 가합니다.
-로그인 잘하는 회원보다 간혹 포인트가 더 많은 경우가 생기는 불균형.


↓작업시작
==========================
1.
extend/xxx.php라는 파일이 있다고 가정하고, 그 안에 아래 소스를 삽입하시면 되겠습니다.
아래 내용은 전체소스입니다. 필요한 부분만 취하셔도 되겠습니다.

<?
if (!defined("_GNUBOARD_")) exit; // 개별페이지 접근불가


<!--소스삽입시작-->

//로그인 안한 날들 계산하여 포인트 감소처리 - 회원전용
//사용위치는 login_check.php
//예) nologin_minus_point($mb[mb_id]);
function nologin_minus_point($mb_id) {

global $g4;
global $is_admin;

    if ($mb_id) {
        $mb = get_member($mb_id);
        if (!$is_admin && $mb[mb_level] < 7 ) {
            // 회원 최종로그인 후 몇일째인지? + 1 은 당일을 포함한다는 뜻
            $sql = " select (TO_DAYS('$g4[time_ymdhis]') - TO_DAYS('$mb[mb_today_login]') + 1) as days ";
            $row = sql_fetch($sql);
            $mb_login_after = $row[days];
            if ($mb_login_after > 1) {
                // 회원 최종로그인 한 날과 당일을 제외하고 로그인 안한 날수
                $not_login_days = $mb_login_after - 2;
                $dp = 1000; //★1일당 감소할 포인트값(단위)
                $reset_point = 100; //초기화 포인트값 (지원금)
                $minus_point = $not_login_days * $dp * (-1); //1일당 -$dp씩 감소
               
                // 잔고가 마이너스 될 경우 포인트 초기화 지원금
                if (($mb[mb_point] + $minus_point) <= 0) {
                    $minus_point = ($mb[mb_point] * (-1)) + $reset_point; //초기화를 위한 지원금 적용
                }
            }
            $limit_day = 3; //★몇일 로그인 안하면 적용할지 정함
            if ($not_login_days >= $limit_day && $minus_point) { //
                insert_point($mb[mb_id], $minus_point, "{$not_login_days}일 동안 로그인 안 해 포인트감소", '', '', ''); //포인트감소
                $ment = "{$not_login_days}일 동안 로그인 활동이 없었으므로 {$minus_point}점의 포인트가 감소되었습니다.\\n\\n1) {$limit_day}일 이상일때만 적용하며, 1일당 {$dp}포인트씩 감소됩니다.\\n2) 전체포인트가 0보다 작아지면 {$reset_point}으로 자동초기화 됩니다.";
                echo "<script language='JavaScript'>alert(\"{$ment}\");</script>";
            }
        }
    }
    return;
}

<!--소스삽입끝-->

?>
==========================
2.
bbs/login_check.php 화일을 여시고
제일 마지막 줄의 goto_url($link); 윗 줄즘에..


nologin_minus_point($mb[mb_id]); //★로그인 안한 날들 계산하여 포인트 삭감처리
goto_url($link);

위와 같이 삽입하시면 되겠습니다.


원본 소스를 건드리고 싶지 않으시다면,
멤버스킨/login_check.skin.php 생성하여 넣으셔도 문제 없을 듯 합니다.

※로그인 채크시 한번만 적용될 것입니다.
==========================
↑작업끝
추천
4

댓글 14개

좋은 팁 감사합니다.
그런데
extend/xxx.php라는 파일이 있다고 가정하고, 그 안에 아래 소스를 삽입하시면 되겠습니다.
아래 내용은 전체소스입니다. 필요한 부분만 취하셔도 되겠습니다.
이 말은 extend폴더에 있는 파일중 아무 파일에 추가를 해도 상관이 없다는 말씀이신가요?

아무파일에 추가해도 상관이 없다면.. 새파일을 만들어서 집어넣기만 해도 되는건가요?
넵.. extend안의 기존 파일에 소스삽입부분만 삽입하셔도 되고, 독립파일로 넣으셔도 됩니다. 파일이름은 상관없습니다. 1.번 작업은 자동차 엔진 부분이구요. 2.번 작업은 그 엔진을 작동시키는 스위치 같은 부분입니다.
무서븐 팁이군요... ^^;; 협박같은...
안들어오면 짤리는거야 그런거야?
농담했다고 짤리는거야 그런거야? (농담이 심한거였나요?)
좀 수정된 소스를 적어 봅니다.
크게 다를껀 없지만, 소스 좀 수정됐구요. 감소되는 포인트가 (현재 포인트/5)로 현재 셋팅해놨습니다.
포인트가 많건 적건간에.. 1일당 1/5의 양만큼 감소되게 했으므로, 실제적으로 줄어드는 양은 같다고
볼 수 있습니다. 비율은 적절히 조정하시면 되겠습니다.

<?
if (!defined("_GNUBOARD_")) exit; // 개별페이지 접근불가


<!--소스삽입시작-->

//로그인 안한 날들 계산하여 포인트 감소처리 - 회원전용
//사용위치는 login_check.php
//예) nologin_minus_point($mb[mb_id]);
function nologin_minus_point($mb_id) {

global $g4;
global $is_admin;

    if ($mb_id) {
        $mb = get_member($mb_id);
        if (!$is_admin && $mb[mb_level] < 7 ) {
            // 회원 최종로그인 후 몇일째인지? + 1 은 당일을 포함한다는 뜻
            $sql = " select (TO_DAYS('$g4[time_ymdhis]') - TO_DAYS('$mb[mb_today_login]') + 1) as days ";
            $row = sql_fetch($sql);
            $mb_login_after = $row[days];
            if ($mb_login_after > 1) {
                // 회원 최종로그인 한 날과 당일을 제외하고 로그인 안한 날수
                $not_login_days = $mb_login_after - 2;
                //$dp = 1000; //★1일당 감소할 포인트값(단위)
                $dp = number_format($mb[mb_point] / 5,'','',''); //★1일당 감소할 포인트값(단위) - 소수점이하 반올림후 제거 콤마(,) 없이
                $reset_point = 100; //초기화 포인트값 (지원금)
                $minus_point = $not_login_days * $dp * (-1); //1일당 -$dp씩 감소
               
                // 잔고가 마이너스 될 경우 포인트 초기화 지원금
                if (($mb[mb_point] + $minus_point) <= 0) {
                    $minus_point = ($mb[mb_point] * (-1)) + $reset_point; //초기화를 위한 지원금 적용
                }
            }
            $limit_day = 3; //★몇일 로그인 안하면 적용할지 정함
            if ($not_login_days >= $limit_day && $minus_point) { //
                insert_point($mb[mb_id], $minus_point, "{$not_login_days}일 동안 로그인 안 해 포인트감소", '', '', ''); //포인트감소
                $ment = "{$not_login_days}일 동안 로그인 활동이 없었으므로 {$minus_point}점의 포인트가 감소되었습니다.\\n\\n1) {$limit_day}일 이상일때만 적용하며, 1일당 {$dp}포인트씩 감소됩니다.\\n2) 전체포인트가 0보다 작아지면 {$reset_point}으로 자동초기화 됩니다.";
                echo "<script language='JavaScript'>alert(\"{$ment}\");</script>";
            }
        }
    }
    return;
}

<!--소스삽입끝-->

?>
전체 14 |RSS
그누4 팁자료실 내용 검색

회원로그인

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