테스트 사이트 - 개발 중인 베타 버전입니다

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

· 19년 전 · 4508 · 14
s1.jpg
s2.jpg
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 생성하여 넣으셔도 문제 없을 듯 합니다.

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

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 14개

<!--소스삽입시작-->
<!--소스삽입끝-->
이 부분이 들어가면 소스가 작동안하네요.. 주석인데 왜그러죠?

좋은 팁 갑사합니다 추천!!
17년 전
맘에드네요 감사합니다^^
15년 전
----
12년 전
대단히 감사합니다..

alert 창에서 한글이 깨지는 이유는 무얼까요? ㅠㅠ

게시글 목록

번호 제목
2356
2355
2350
2332
2322
2299
2296
2295
2290
2261
2238
2226
2216
2198
2176
2167
2149
2136
2133
2125