포인트값으로 레벨 (업/다운) 자동 변경하기 (수정2) > 그누4 팁자료실

그누4 팁자료실

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

포인트값으로 레벨 (업/다운) 자동 변경하기 (수정2) 정보

포인트값으로 레벨 (업/다운) 자동 변경하기 (수정2)

본문

=========================================================
■■ (1) 포인트값으로 레벨 (업/다운)  자동 변경하기 ■■■
=========================================================
등록일 : 2005.01.07
수정1 : 2005.01.08
수정2 : 2005.02.02 (설명보강, 기능적 내용엔 변경사항 없음)

※ 설명 :
로그인 할때 관리자가 정해 놓은 포인트에 따라, 레벨이 자동으로 변경됩니다.
현재 1~6사이의 레벨만 포인트에 따라 자동으로 레벨이 변경되게 되어 있습니다.
7이상의 레벨은 기존대로 관리자가 직접 변경해야 됩니다.
(이와 관련해서 다르게 수정하시려면 아래쪽 저의 코멘트 글을 참조하세요.)


↓작업시작
=========================================================
1.
extend 방에 xxx.php라는 임의의 화일을 만드셔서 아래 전체소스를 복사해 넣으셔도 되고,
기존에 있는 화일를 이용 하시려면, 아래 "★소스 삽입 시작~ ★소스 삽입 끝" 부분만 옮기셔도 됩니다.
아래는 전체소스입니다. ( <? 와 ?> 사이의 내용이 전체소스 )
- 화일이름은 어떤 것이든 상관없습니다.

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

//== ★소스 삽입 시작 ==

//포인트기준 자동레벨업
function levelup_auto($mb_id,$mb_level,$mb_point) {

global $config;
global $g4;

  if ($config[cf_use_point] && $mb_id && $mb_level < 7 && $mb_point) {
            if($mb_point <= 10000)
                      {$new_level = 2;}
        else if($mb_point <= 50000)
                      {$new_level = 3;}
        else if($mb_point <= 100000)
                      {$new_level = 4;}
        else if($mb_point <= 300000)
                      {$new_level = 5;}
        else if($mb_point >= 300001)
                      {$new_level = 6;}
       
        if ($new_level && $mb_level != $new_level) {
       
            // 레벨변경
            mysql_query(" update $g4[member_table] set mb_level='$new_level' where mb_id='$mb_id' ");
           
            // 포인트변경 (필요없으면 주석처리 하세요)
            if ($mb_level > $new_level) {
            $dw_ment = "레벨감소로 인한 위로금 100포인트를 지급했습니다.";
            insert_point($mb_id, 100, "레벨감소로 인한 포인트 위로금", '', '', '');
            }
       
            // 쪽지발송 (필요없으면 주석처리 하세요)
            $content ="포인트 {$mb_point}점으로 레벨이 {$mb_level}에서 {$new_level}로 변경되었습니다. $dw_ment";
            $tmp_row = mysql_fetch_array(mysql_query("select max(me_id) as max_me_id from $g4[memo_table]"));
            $me_ids = $tmp_row[max_me_id] + 1;
            mysql_query("insert into $g4[memo_table] (me_id,me_recv_mb_id,me_send_mb_id,me_send_datetime,me_read_datetime,me_memo) values ('$me_ids','$mb_id','$mb_id','$g4[time_ymdhis]','','$content')");
            mysql_query("update $g4[member_table] set mb_memo_call='$mb_id' where mb_id='$mb_id'");
        }
  }
}

//== ★소스 삽입 끝 ==
?>

※ 정해 놓은 포인트에 따라 레벨을 자동으로 변경시켜주는 함수입니다.
레벨변경과 함께 쪽지로 변경 사항을 본인에게 알려줍니다.
=========================================================
=========================================================
2.
bbs/login_check.php 의 제일 아래쪽 goto_url($link); 위에
levelup_auto($mb[mb_id],$mb[mb_level],$mb[mb_point]); //★포인트기준자동레벨업
삽입하시면 됩니다. 아래 예제를 참조하세요.

예제1)
levelup_auto($mb[mb_id],$mb[mb_level],$mb[mb_point]); //★포인트기준자동레벨업
goto_url($link);



로그인 채크할때, 작동하게 되며 로그인 채크가 끝난 뒤 적용 됩니다.
=========================================================
↑작업 끝


=========================================================
■■■ (2) 레벨 업 또는 다운 알림표시 ■■■
=========================================================
등록일 : 2005.01.08
수정1 : 2005.02.02 (설명보강, 기능적 내용엔 변경사항 없음)

※ 설명 :
포인트값으로 레벨 (업/다운)  자동 변경하기와 함께 사용하는 겁니다.
이 작업은 안하셔도 "포인트값으로 레벨 (업/다운)  자동 변경하기"의 기능에
아무런 지장이 없습니다. 선택사항입니다.

다음 로그인 할때 레벨 업 또는 다운될 꺼라는 걸 미리 알려주는 겁니다. 알려만 주는 겁니다.
따라서, 다시 로그인 해서 레벨이 변경되기 전에 스스로 먼가 조치를 취할 기회를 갖을 수 있겠습니다.
다시 로그인 할때 비로소 변경 된 레벨이 적용됩니다.. (첨부이미지 참조요)


↓작업시작
=========================================================
1.
extend 방에 xxx2.php라는 임의의 화일을 만드셔서 아래 전체소스를 복사해 넣으셔도 되고,
기존에 있는 화일를 이용 하시려면, 아래 "★소스 삽입 시작~ ★소스 삽입 끝" 부분만 옮기셔도 됩니다.
아래는 전체소스입니다. ( <? 와 ?> 사이의 내용이 전체소스 )
- 화일이름은 어떤 것이든 상관없습니다.

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

//== ★소스 삽입 시작 ==

//포인트기준 자동레벨업- 레벨 업 또는 다운 알림표시
//변수값으로 리턴되므로 echo로 출력하면 됩니다.
function levelup_auto_preview($mb_level,$mb_point) {

global $config;
global $g4;

  if ($config[cf_use_point] && $mb_level < 7 && $mb_point) {
      //포인트에 맞는 레벨찾기
                if($mb_point <= 10000)
                        {$new_level = 2;}
          else if($mb_point <= 50000)
                        {$new_level = 3;}
          else if($mb_point <= 100000)
                        {$new_level = 4;}
          else if($mb_point <= 300000)
                        {$new_level = 5;}
          else if($mb_point >= 300001)
                        {$new_level = 6;}
     
      //현재 포인트의 레벨미리보기
                if ($mb_level < $new_level)
                        {return "<img src='$g4[path]/img/my_img/ico_up.gif' border=0 align=absmiddle><sup>{$new_level}</sup>";}
          else if ($mb_level > $new_level)
                      {return "<img src='$g4[path]/img/my_img/ico_down.gif' border=0 align=absmiddle><sup>{$new_level}</sup>";}
  }
}

//== ★소스 삽입 끝 ==

?>
=========================================================
=========================================================
2.
스킨폴더/outlogin.skin.2.php 의 적당한 위치에..

echo levelup_auto_preview($member[mb_level],$member[mb_point]); 또는
<?=levelup_auto_preview($member[mb_level],$member[mb_point])?> 이런 식으로
삽입해 주시면 됩니다. 아래 예제를 참조하세요.


예제1)
<b><?=$nick?></b></a><?=levelup_auto_preview($member[mb_level],$member[mb_point])?>

예제2)
<?=$member[mb_level]?><?echo levelup_auto_preview($member[mb_level],$member[mb_point]);?>


(sample1 첨부이미지 : 현재 6레벨인데 다음 로그인시 레벨 5로 다운(↓) 될꺼라는 표시죠)
(sample2 첨부이미지 : 현재 3레벨인데 다음 로그인시 레벨 5로 상승(↑) 될꺼라는 표시죠)
- 화살표 이미지화일로 첨부했습니다.
=========================================================
↑작업 끝
추천
5

댓글 42개

outlogin.skin.2.php 에 levelup_auto()를 어떻게 넣는 가요.....

그냥 levelup_auto() 라고 입력하면 안되던데....

영 초보라.................죄송합니다......
감사합니다...  그런데 레벨을 더 올리고 싶은데 어떻게 하죠 ?
7을9로 고치고 해봐도 안돼던데요...?
방법좀 부탁드립니다. ^^;;
★ 자동 레벨 업,다운이 적용되는 레벨범위 수정에 관하여..

만약 1~8사이의 레벨만 자동으로 변경되게 한다면요..

1.
if 문 안에 있는 $mb_level < 7 이 부분을 $mb_level < 9 이렇게 고치시구요
- 9 아래 레벨까지만 자동으로 한다는 의미겠구요.

2.

          else if($mb_point >= 300001)
                        {$new_level = 6;}

위 부분을 제거하시고 그 자리에 아래처럼 추가 해 주셔야 겠죠.

          else if($mb_point <= 500000)
                        {$new_level = 6;}
          else if($mb_point <= 800000)
                        {$new_level = 7;}
          else if($mb_point >= 800001)
                        {$new_level = 8;}

그럼 될꺼에요..
Fatal error: Call to undefined function: levelup_auto() in /home2/도메인/www/gnu/bbs/login_check.php on line 76

로그인 하면 에러 메세지가 뜹니다.

또 스킨폴더/outlogin.skin.2.php 의 적당한 위치에
echo levelup_auto_preview($member[mb_level],$member[mb_point]);
처럼 삽입해 주시면 됩니다.   
.................................... 라고 하셨는데 정말 초보라 어디부분에다가 넣어야 하는지 전혀 감이 안잡힙니다.
본문 내용을 제 나름대로; 이해하기 쉽도록(?) 다시 작성해서 올렸습니다. 한번 다시 살펴보시고, 따라해 보세요. 건투를 빕니다. 꾸벅
최고관리자이름 으로부터 쪽지가 도착하였습니다. 로 바꾸려면
('$me_ids','$mb_id','$config[cf_admin]','$g4[time_ymdhis]','','$content')");
            mysql_query("update $g4[member_table] set mb_memo_call='$config[cf_admin]' where mb_id='$mb_id'");
일케 하시면되요^^ 0.1원짜리팁
자동레벨업하는게 에러만 뜨고 값은 출력이 안되는데.. 아이고야..

extend.php 에[ 작업시작 1번 소스]를 넣으면 ..


----------------------------------------------------------------------------------------------------
Warning: Cannot modify header information - headers already sent by (output started at /루트/bbs/extend/extend.php:82) in /hosting/cosmos51com/bbs/head.sub.php on line 32

Warning: Cannot modify header information - headers already sent by (output started at /루트/bbs/extend/extend.php:82) in /hosting/cosmos51com/bbs/head.sub.php on line 34

Warning: Cannot modify header information - headers already sent by (output started at /루트/bbs/extend/extend.php:82) in /hosting/cosmos51com/bbs/head.sub.php on line 35

Warning: Cannot modify header information - headers already sent by (output started at /루트/bbs/extend/extend.php:82) in /hosting/cosmos51com/bbs/head.sub.php on line 36

Warning: Cannot modify header information - headers already sent by (output started at /루트/bbs/extend/extend.php:82) in /hosting/cosmos51com/bbs/head.sub.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /루트/bbs/extend/extend.php:82) in /hosting/cosmos51com/bbs/head.sub.php on line 38

----------------------------------------------------------------------------------------------------
이런 식의 에러가 매 페이지마다 생기구요...


levelup_auto_preview($member[mb_level],$member[mb_point]);  부분은 아무런 값도 출력디지 안거든요..

누구 이유를 아시는 분...
감사합니다. 잘 되네요. 다만 아이콘 업 다운이 표시가 되지 않는군요.
예를 들어서 1000 점이면 3으로 업될때 현재 990 점 일경우 다음번 로그인시 업될것 같으면
나타나야 하는데 현재레벨 2만 표시되고 위에처럼 아이콘들이 나타나지 않아서......
아쉽긴 하지만... 그래도 잘됩니다. 업다운 잘되고 쪽지도 잘 오고요 ^^
이거 저도 에러뜹니다...
그리고 치명적인 코드의 충돌이 있는 듯 합니다...
이거 때문에 원인 모를 회원가입에러가 생기고
자동등록글방지 이미지도 엑박으로 뜨고...
홈페이지 다 말아먹을 뻔 했습니다...
3일밤낮으로 고생한 끝에 결국 원인이 이거 때문인것으로 깨달았습니다...
사용하지 않길 권고합니다... ;;;
감사합니다. ^^ 오류없이 잘 작동되네요. 하지만 자동레벨에 오류가 있는지 일부 유저분들은 자동레벨업이 안된다네요.
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

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