일정 게시판에 일정 기간 글을 안쓰면 레벨이 내려가게 하는 소스좀 봐주세요ㅠ 정보
일정 게시판에 일정 기간 글을 안쓰면 레벨이 내려가게 하는 소스좀 봐주세요ㅠ본문
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 5;
//if ($is_category) $colspan++;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;
// 제목이 두줄로 표시되는 경우 이 코드를 사용해 보세요.
// <nobr style='display:block; overflow:hidden; width:000px;'>제목</nobr>
if ($member[mb_level]>6 && $member[mb_level]<9) { // 레벨1 이면 더 이상 레벨이 다운될수 없으므로 레벨1 이상만 적용 및 레벨10 이하만 적용
$to_date="1"; // 2일 뒤에 다시 레벨 강등하기
$to_day=$g4[server_time]-($to_date*86400);
if (!$member[mb_10] || $member[mb_10]>$to_day) { // 레벨강등이 한번도 없었거나, 이미 레벨이 강등된 후 $to_date 일수가 지났다면 강등 적용
$limit_date = "1"; //기간설정 1일
$after_level = "5"; // 다운시킬 레벨
$row = sql_fetch(" select wr_datetime from $write_table where mb_id = '$member[mb_id]' order by wr_datetime desc ");
$d_y=substr($row[wr_datetime], 0, 4);
$d_m=substr($row[wr_datetime], 5, 2);
$d_d=substr($row[wr_datetime], 8, 2);
$limit_day = mktime(0,0,0,$d_m,$d_d,$d_y);
$last_day=$limit_day+($limit_date*86400);
if ($last_day < $g4[server_time]) {
$to_level=$member[mb_level]-$after_level;
sql_query(" update g4_member set mb_level = '$to_level', mb_10='$g4[server_time]' where mb_id = '$member[mb_id]' ");
alert("{$limit_date}일동안 게시글을 남기지 않아 레벨 {$to_level}로 강등되셨습니다.");
}
}
}
?>
// 기존의 레벨 값은 7레벨입니다..
// 하루동안 글을 쓰지 않으면 5랩으로 떨어 뜨리는 소스입니다..
list.skin.php에 담겨 있는 소스 입니다..
어떤 분이 글을 남겨 주셨는데.. 테스트로 하루짜리를 해봤는데 되지는 않네요--;
어이쿠..
어디에서 어떻게 잘 못 되었는지..
그리고.. 어떤 노력을 더 기울여야 하는지를 모르겠네요;;
아이고ㅠ 답변 달아 주시는 분들 제가 정말 감사하겠습니다ㅠ
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 5;
//if ($is_category) $colspan++;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;
// 제목이 두줄로 표시되는 경우 이 코드를 사용해 보세요.
// <nobr style='display:block; overflow:hidden; width:000px;'>제목</nobr>
if ($member[mb_level]>6 && $member[mb_level]<9) { // 레벨1 이면 더 이상 레벨이 다운될수 없으므로 레벨1 이상만 적용 및 레벨10 이하만 적용
$to_date="1"; // 2일 뒤에 다시 레벨 강등하기
$to_day=$g4[server_time]-($to_date*86400);
if (!$member[mb_10] || $member[mb_10]>$to_day) { // 레벨강등이 한번도 없었거나, 이미 레벨이 강등된 후 $to_date 일수가 지났다면 강등 적용
$limit_date = "1"; //기간설정 1일
$after_level = "5"; // 다운시킬 레벨
$row = sql_fetch(" select wr_datetime from $write_table where mb_id = '$member[mb_id]' order by wr_datetime desc ");
$d_y=substr($row[wr_datetime], 0, 4);
$d_m=substr($row[wr_datetime], 5, 2);
$d_d=substr($row[wr_datetime], 8, 2);
$limit_day = mktime(0,0,0,$d_m,$d_d,$d_y);
$last_day=$limit_day+($limit_date*86400);
if ($last_day < $g4[server_time]) {
$to_level=$member[mb_level]-$after_level;
sql_query(" update g4_member set mb_level = '$to_level', mb_10='$g4[server_time]' where mb_id = '$member[mb_id]' ");
alert("{$limit_date}일동안 게시글을 남기지 않아 레벨 {$to_level}로 강등되셨습니다.");
}
}
}
?>
// 기존의 레벨 값은 7레벨입니다..
// 하루동안 글을 쓰지 않으면 5랩으로 떨어 뜨리는 소스입니다..
list.skin.php에 담겨 있는 소스 입니다..
어떤 분이 글을 남겨 주셨는데.. 테스트로 하루짜리를 해봤는데 되지는 않네요--;
어이쿠..
어디에서 어떻게 잘 못 되었는지..
그리고.. 어떤 노력을 더 기울여야 하는지를 모르겠네요;;
아이고ㅠ 답변 달아 주시는 분들 제가 정말 감사하겠습니다ㅠ
댓글 전체

글을 쓸 경우, 회원이 몇월몇일에 글을 썼다~ 하는 내용을 저장하고..
특정 게시판 리스트에서 저장된 날짜를 불러서, 오늘 날짜와 비교하여 강등 혹은 현재 레벨을 보여 주는것 같네요.
위 소스는 그중 리스트 소스만 보여주고 있습니다.
언제 글을 썼다~ 하구 날짜나 시간을 삽입하는 소스는 제대로 구동하는지요??
로그인 후 글을 쓰고, 해당 회원 테이블의 mb_10 에 시간이 잘 저장 되었는지부터 확인 해 보세요~
특정 게시판 리스트에서 저장된 날짜를 불러서, 오늘 날짜와 비교하여 강등 혹은 현재 레벨을 보여 주는것 같네요.
위 소스는 그중 리스트 소스만 보여주고 있습니다.
언제 글을 썼다~ 하구 날짜나 시간을 삽입하는 소스는 제대로 구동하는지요??
로그인 후 글을 쓰고, 해당 회원 테이블의 mb_10 에 시간이 잘 저장 되었는지부터 확인 해 보세요~
저에게 쪽지로 질문을 주셔서 쪽지로 답을 드렸는데 못보셨나봅니다.
쪽지로 보내드린 답변을 다시 드립니다.
제가 전에 드린 답변 소스중에 두가지를 건드려서 안되는 것입니다.
인메모리님께서 수정한 부분 중
if ($member[mb_level]>6 && $member[mb_level]<9)
이부분은 레벨 7이상(6보다 큰수만 해당) 8이하(9부다 작은수만 해당)만 적용되도록 되어 있습니다.
$after_level = "5"; // 다운시킬 레벨
이것은 한 번에 레벨5를 강등시켜 버립니다.
즉
만약 위와 같이 해 놓으면 레벨 8일경우 8-5=3 이니까 레벨이 바로 3로 강등되어 버립니다.
그렇다면 다음날 위에 설정된 레벨 7이상 8이하에 해당이 안되니까 적용이 당연히 안되는 것입니다.
$after_level = "1"; // 다운시킬 레벨
이렇게 1로 해 놓아야 한번에 레벨1씩만 다운됩니다.
레벨1로 해 놓았다 하더라도 설정된 레벨 7이상 8이하인 회원만 적용되도록 소스를 수정해 놓으셨기 때문에 레벨 7로 오늘 실험했을경우 레벨 6으로 내려가게 되니 내일 적용 안됩니다.
실험해 보시려면
if ($member[mb_level]>1 && $member[mb_level]<9)
적용 레벨의 폭을 넓게 하시고,
$after_level = "1";
한번에 강등될 레벨의 숫자를 적게 해 보십시요.
-------------------
참고:
$after_level 을 1로 해 놓으면 레벨 8 회원이 오늘 접속하면 레벨 7
$limit_date일이 지난후에 접속하면 레벨 6
등으로 순차적으로 강등됩니다.
$after_level 을 2로 해 놓으면 레벨8회원이 오늘 접속하면 레벨 6
$limit_date일 지난후에 접속하면 레벨 4
입니다.
쪽지로 보내드린 답변을 다시 드립니다.
제가 전에 드린 답변 소스중에 두가지를 건드려서 안되는 것입니다.
인메모리님께서 수정한 부분 중
if ($member[mb_level]>6 && $member[mb_level]<9)
이부분은 레벨 7이상(6보다 큰수만 해당) 8이하(9부다 작은수만 해당)만 적용되도록 되어 있습니다.
$after_level = "5"; // 다운시킬 레벨
이것은 한 번에 레벨5를 강등시켜 버립니다.
즉
만약 위와 같이 해 놓으면 레벨 8일경우 8-5=3 이니까 레벨이 바로 3로 강등되어 버립니다.
그렇다면 다음날 위에 설정된 레벨 7이상 8이하에 해당이 안되니까 적용이 당연히 안되는 것입니다.
$after_level = "1"; // 다운시킬 레벨
이렇게 1로 해 놓아야 한번에 레벨1씩만 다운됩니다.
레벨1로 해 놓았다 하더라도 설정된 레벨 7이상 8이하인 회원만 적용되도록 소스를 수정해 놓으셨기 때문에 레벨 7로 오늘 실험했을경우 레벨 6으로 내려가게 되니 내일 적용 안됩니다.
실험해 보시려면
if ($member[mb_level]>1 && $member[mb_level]<9)
적용 레벨의 폭을 넓게 하시고,
$after_level = "1";
한번에 강등될 레벨의 숫자를 적게 해 보십시요.
-------------------
참고:
$after_level 을 1로 해 놓으면 레벨 8 회원이 오늘 접속하면 레벨 7
$limit_date일이 지난후에 접속하면 레벨 6
등으로 순차적으로 강등됩니다.
$after_level 을 2로 해 놓으면 레벨8회원이 오늘 접속하면 레벨 6
$limit_date일 지난후에 접속하면 레벨 4
입니다.