일정 게시판에 일정 기간 글을 안쓰면 레벨이 내려가게 하는 소스좀 봐주세요ㅠ > 그누4 질문답변

그누4 질문답변

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

일정 게시판에 일정 기간 글을 안쓰면 레벨이 내려가게 하는 소스좀 봐주세요ㅠ 정보

일정 게시판에 일정 기간 글을 안쓰면 레벨이 내려가게 하는 소스좀 봐주세요ㅠ

본문

<?
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 에 시간이 잘 저장 되었는지부터 확인 해 보세요~
저에게 쪽지로 질문을 주셔서 쪽지로 답을 드렸는데 못보셨나봅니다.
쪽지로 보내드린 답변을 다시 드립니다.

제가 전에 드린 답변 소스중에  두가지를 건드려서 안되는 것입니다.

인메모리님께서 수정한 부분 중
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
입니다.
© SIRSOFT
현재 페이지 제일 처음으로