[G5/Amina] 경험치 레벨 변경하기 > 기술자료 | 해피정닷컴

[G5/Amina] 경험치 레벨 변경하기 > 기술자료

본문 바로가기

사이트 내 전체검색

[G5/Amina] 경험치 레벨 변경하기 > 기술자료

그누보드 [G5/Amina] 경험치 레벨 변경하기

페이지 정보


본문

경험치를 바탕으로 레벨 아이콘을 보여주는 기능을 쉽게 변경하는 방법입니다.


1. 파일구조
아미나빌더
   ├  bbs
   │   ├  level_change.php
   │   ├  level_change_updage.php
   │   └  level_change_updage_all.php
   ├  js
   │   └ apms.js
   └  lib
         └ comon.lib.php



2-1. 회원 로그인후 실행화면



2-2. 관리자 로그인후 실행화면 ( 적용전 )



2-3. 관리자 로그인후 실행화면 ( 적용후 )



2-4. 회원등급변경 화면




3. 아미나빌더 / bbs / level_change.php 파일을 만들어서 아래 내용을 저장합니다.

<?php
include_once('./_common.php');

$g5['title'] = "회원등급변경";

include_once('./_head.php');

if(!$opt) {
    if(!$xp_point) $xp_point = $xp['xp_point'];
    if(!$xp_max) $xp_max = $xp['xp_max'];
    if(!$xp_rate) $xp_rate = $xp['xp_rate'];
}

$sql = "select as_exp, as_level from `{$g5['member_table']}` where mb_id='{$mb_id}' ";
$qry = sql_query($sql);
$row = sql_fetch_array($qry);
?>
<style>
    .exp-title { padding:12px; font:bold 18px dotum; letter-spacing:-1px; color:#fff; background:#000; }
    .exp-desc { margin:10px 0px; background:#fafafa; border:1px solid #ddd; line-height:1.6; padding-right:10px; }
    .exp-tbl{width:100%; border-collapse:collapse;border:0;padding:0;} 
    .exp-tbl td, .exp-tbl th{ padding:5px;border:1px solid #ddd; line-height:1.6; text-align:center;}
    .exp-tbl td.head { background:#f5f5f5; font-weight:bold;}
    .exp-tbl .exp-btn {cursor:pointer; width:100px; padding:30px 0; background:red; font-weight:bold; color:#ffffff; border:0px; cursor:pointer;}
    .exp-tbl .ok-btn {cursor:pointer; width:100px; padding:30px 0; background:#1f7bc2; font-weight:bold; color:#ffffff; border:0px; cursor:pointer;}
</style>

<div class="at-title">
    <div class="at-container">
        <div class="page-title en">
            <strong class="cursor">회원레벨변경</strong>
        </div>
        <div class="page-desc hidden-xs">
            <i class="fa fa-home"></i> 홈 &gt; 회원레벨변경
        </div>
        <div class="clearfix"></div>
    </div>
</div>

<br>

<form name="expform" method="post" action="level_change_update.php">
    <table border=0 class="exp-tbl">
        <input type="hidden" name="mb_id" value="<?php echo $mb_id; ?>">
        <input type="hidden" name="as_exp" value="<?php echo $row['as_exp']; ?>">
        <input type="hidden" name="as_level" value="<?php echo $row['as_level']; ?>">
        <input type="hidden" name="bo_table" value="<?php echo $bo_table; ?>">
        
        <col width=100>
        <col width=110>
        <col width=110>
        <col width=130>
        <col />
        <tr>
            <td class=head>경험치</td>
            <td class=head>현재레벨</td>
            <td class=head>변경레벨</td>
            <td rowspan="2"><input type="submit" value=" 변경하기 " class="btn_submit"></td>
        </tr>
        <tr>
            <td><?php echo $row['as_exp']; ?></td>
            <td><?php echo $row['as_level']; ?></td>
            <td>
                <select name="change_level">
                <?php
                $min_xp = $xp_point;
                for ($i = 2; $i <= $xp_max; $i++) {
                    ?>
                    <option value="<?php echo $i; ?>"<?php if ($row['as_level']==$i) { echo " selected"; } ?>><?php echo $i; ?></option>
                    <?php
                    $min_xp = $max_xp; 
                }
                ?>
                </select>
            </td>
        </tr>
    </table>
</form>

<br>

<table class="exp-tbl">
    <col width=20%>
    <col width=20%>
    <col width=20%>
    <col width=20%>
    <col />
    <tr>
        <td class=head>비고</td>
        <td class=head>레벨</td>
        <td class=head>최소 경험치</td>
        <td class=head>최대 경험치</td>
        <td class=head>레벨업 경험치</td>
    </tr>
    <tr>
        <td><img src="<?php echo G5_IMG_URL; ?>/level/<?php echo $xp['xp_icon_skin']; ?>/guest.gif"></td>
        <td>1</td>
        <td>0</td>
        <td><?php echo number_format($xp_point); ?></td>
        <td><?php echo number_format($xp_point); ?></td>
    </tr>
    <?php
    $min_xp = $xp_point;
    for ($i = 2; $i <= $xp_max; $i++) {
        $xp_plus = $xp_point + $xp_point * ($i - 1) * $xp_rate;
        $max_xp  = $min_xp + $xp_plus;
        ?>
        <tr>
            <td><img src="<?php echo G5_IMG_URL; ?>/level/<?php echo $xp['xp_icon_skin']; ?>/<?php echo $i; ?>.gif"></td>
            <td><?php echo $i; ?></td>
            <td><?php echo number_format($min_xp); ?></td>
            <td><?php echo number_format($max_xp); ?></td>
            <td><?php echo number_format($xp_plus); ?></td>
        </tr>
        <?php
        $min_xp = $max_xp; 
    }
    ?>
</table>

<?php
include_once('./_tail.php');



4. 아미나빌더 / bbs / level_change_update.php  파일을 생성해서 아래 내용을 저장합니다.

<?php
include_once('./_common.php');

if($member['mb_level'] >= 8) {

    if(!$opt) {
        if(!$xp_point) $xp_point = $xp['xp_point'];
        if(!$xp_max) $xp_max = $xp['xp_max'];
        if(!$xp_rate) $xp_rate = $xp['xp_rate'];
    }
    
    $sql = "select as_exp, as_level, mb_point from `{$g5['member_table']}` where mb_id = '{$mb_id}' ";
    $qry = sql_query($sql);
    $row = sql_fetch_array($qry);
    
    $as_exp   = $row['as_exp'];
    $as_level = $row['as_level'];
    $mb_point = $row['mb_point'];
    
    $min_xp = $xp_point;
    for ($i = 2 ; $i <= $xp_max; $i++) {
        $xp_plus = $xp_point + $xp_point * ($i - 1) * $xp_rate;
        $max_xp  = $min_xp + $xp_plus;
        
        if ($row['as_level'] == $i) {
            $default_exp = $min_xp + 1; 
        }
        if ($change_level == $i) {
            $change_exp = $min_xp + 1; 
        }
        $min_xp = $max_xp; 
    }
    
    /*
    echo "변경전 = ".$as_exp ."<br>";
    echo "지금꺼 = ".$row['as_exp'] ."<br>";
    echo "포인트 = ".$row['mb_point'] ."<br>";
    echo "변경후 = ".$change_exp ."<br>";
    echo "변경전lv= ".$row['as_level'] ."<br><br>";
    echo "변경후lv= ".$change_level ."<br><br>";
    */
    
    // 레별 변동 없을때
    if ($change_level == $as_level) {
    
        //echo " 레별 변화 없음<br>";
    
    } else {
        
        echo " 레별 변화 있음<br>";
        
        // 레벨 업
        if ($change_level > $as_level) {
            //echo " 레별 업<br>";
            $po_point     = $change_exp - $mb_point;
            $point_update = $mb_point + $po_point;
            
            sql_query("
                insert into `{$g5['point_table']}` set 
                mb_id          = '{$mb_id}' , 
                po_datetime    = '". G5_TIME_YMDHIS ."' , 
                po_content     = '{$member['mb_id']} 레벨업 포인트 제공' , 
                po_point       = '{$po_point}' , 
                po_use_point   = '{$po_use_point}' , 
                po_expired     = '9999-12-31' , 
                po_expire_date = '9999-12-31' , 
                po_mb_point    = '{$po_point}' , 
                po_rel_table   = '@exp' , 
                po_rel_id      = '{$member['mb_id']}' , 
                po_rel_action  = '{$member['mb_id']}-". uniqid() ."'
            ");
            
            sql_query("update `{$g5['member_table']}` set mb_point = '{$point_update}' where mb_id = '{$mb_id}' ");
        
        // 레벨 다운
        } else {
            //echo " 레별 다운<br>";
            $po_point     = $change_exp - $mb_point;
            $point_update = $mb_point + $po_point;
            
            sql_query("
                insert into `{$g5['point_table']}` set 
                mb_id          = '{$mb_id}' , 
                po_datetime    = '". G5_TIME_YMDHIS ."' , 
                po_content     = '{$member['mb_id']} 레벨다운 포인트 차감' , 
                po_point       = '{$po_point}' , 
                po_use_point   = '{$po_use_point}' , 
                po_expired     = '1' , 
                po_expire_date = '".G5_TIME_YMD."' , 
                po_mb_point    = '{$po_point}' , 
                po_rel_table   = '@exp' , 
                po_rel_id      = '{$member['mb_id']}' , 
                po_rel_action  = '{$member['mb_id']}-". uniqid() ."'
            ");
            
            sql_query("update `{$g5['member_table']}` set mb_point = '{$point_update}' where mb_id = '{$mb_id}' ");
        }
        
        sql_query("update `{$g5['member_table']}` set as_exp = '{$change_exp}', as_level = '{$change_level}' where mb_id = '{$mb_id}' ");
        
        // 보드에도 as_level 업데이트하기
        $sql = sql_query("select * from `{$g5['board_table']}` ");
        while($row = sql_fetch_array($sql)){
            sql_query("update `{$g5['write_prefix']}{$row['bo_table']}` set as_level = '{$change_level}' where mb_id = '{$mb_id}' ");
        }
    }
}

//exit;

if ($bo_table) {
    goto_url("./board.php?bo_table={$bo_table}");
} else {
    goto_url(G5_URL);
}



5. 아미나빌더 / bbs / level_change_update_all.php
이 파일은 회원레벨과 작성된 게시글의 레벨 아이콘이 다르게 표시될때 사용합니다.
회원이 많고, 게시글이 많은 경우에는 서버에 무리가 될 수 있으므로 사용에 주의가 필요합니다.

<?php
include_once('./_common.php');
exit;  // 사용후 꼭 주석을 제거해서 실수로 작동하지 않도록 합니다.

$sql = "select * from `{$g5['member_table']}` where as_level>'0' ";
$qry = sql_query($sql);
while($row = sql_fetch_array($qry)){
    echo "변경전 = {$row['as_level']}<br>";
    
    // 보드에도 as_level 업데이트하기
    $qry2 = sql_query("select * from `{$g5['board_table']}` ");
    while($row2 = sql_fetch_array($qry2)){
        sql_query("update `{$g5['write_prefix']}{$row2['bo_table']}` set as_level='{$row['as_level']}' where mb_id='{$row['mb_id']}' ");
        //echo "update `{$g5['write_prefix']}{$row2['bo_table']}` set as_level='{$row['as_level']}' where mb_id='{$row['mb_id']}' <br><br>";
    }
}



6. 아미나빌더 / js / apms.js 내용에서

        // 최고관리자일 경우
        if (g5_is_admin == "super") {
            // 포인트내역과 1:1문의
            if (mb_id) {
                this.insertTail("qna", "<a href=\""+g5_bbs_url+"/qalist.php?qmb="+mb_id+"\" rel=\"nofollow\">"+aslang[40]+"</a>");
                this.insertTail("point", "<a href=\""+g5_admin_url+"/point_list.php?sfl=mb_id&stx="+mb_id+"\" target=\"_blank\" rel=\"nofollow\">"+aslang[9]+"</a>");
                this.insertTail("modify", "<a href=\""+g5_admin_url+"/member_form.php?w=u&mb_id="+mb_id+"\" target=\"_blank\" rel=\"nofollow\">"+aslang[10]+"</a>");
            }
        }

를 아래와 같이 변경합니다.

        // 최고관리자일 경우
        if (g5_is_admin == "super") {
            // 포인트내역과 1:1문의
            if (mb_id) {
                this.insertTail("qna", "<a href=\""+g5_bbs_url+"/qalist.php?qmb="+mb_id+"\" rel=\"nofollow\">"+aslang[40]+"</a>");
                this.insertTail("point", "<a href=\""+g5_admin_url+"/point_list.php?sfl=mb_id&stx="+mb_id+"\" target=\"_blank\" rel=\"nofollow\">"+aslang[9]+"</a>");
                this.insertTail("modify", "<a href=\""+g5_admin_url+"/member_form.php?w=u&mb_id="+mb_id+"\" target=\"_blank\" rel=\"nofollow\">"+aslang[10]+"</a>");
                this.insertTail("level_change", "<a href=\""+g5_bbs_url+"/level_change.php?bo_table="+g5_bo_table+"&mb_id="+mb_id+"\">회원등급변경</a>");
            }
        }



7. 아미나빌더 / lib / common.lib.php

    if ($is_admin == "super" && $mb_id) {
        $str2 .= "<a href=\"".G5_ADMIN_URL."/member_form.php?w=u&amp;mb_id={$mb_id}\" target=\"_blank\">회원정보변경</a>\n";
        $str2 .= "<a href=\"".G5_ADMIN_URL."/point_list.php?sfl=mb_id&amp;stx={$mb_id}\" target=\"_blank\">포인트내역</a>\n";
    }

를 아래와 같이 변경

    if ($is_admin == "super" && $mb_id) {
        $str2 .= "<a href=\"".G5_ADMIN_URL."/member_form.php?w=u&amp;mb_id={$mb_id}\" target=\"_blank\">회원정보변경</a>\n";
        $str2 .= "<a href=\"".G5_ADMIN_URL."/point_list.php?sfl=mb_id&amp;stx={$mb_id}\" target=\"_blank\">포인트내역</a>\n";
        $str2 .= "<a href=\"".G5_BBS_URL."/level_change.php?mb_id={$mb_id}\" target=\"_blank\">회원등급변경</a>\n";
    }
 

댓글목록

등록된 댓글이 없습니다.


Total 2,641건 18 페이지
  • RSS
기술자료 목록
2301
Editor   8693  2018-12-16 23:11 ~ 2021-06-03 14:44  
2300
PHP   18538  2018-12-12 03:04 ~ 2020-08-06 11:38  
2299
MySQL   8959  2018-12-11 14:36 ~ 2018-12-11 14:52  
2298
그누보드   7634  2018-12-09 12:19 ~ 2020-04-02 02:00  
2297
테크노트   6449  2018-12-05 19:37 ~ 2018-12-06 15:43  
2296
킴스큐   5962  2018-12-04 13:47  
2295
PHP   8698  2018-12-03 17:34 ~ 2019-04-19 05:02  
2294
영카트   12217  2018-11-28 10:37 ~ 2022-04-21 02:58  
2293
그누보드   8446  2018-11-22 12:13  
2292
MySQL   27847  2018-11-22 05:24 ~ 2018-11-22 05:27  
2291
HTML   6471  2018-11-16 12:11 ~ 2018-11-16 12:17  
2290
Linux   7181  2018-11-13 00:15 ~ 2018-11-15 05:37  
열람
그누보드   12561  2018-11-09 06:32 ~ 2023-01-13 08:44  
2288
그누보드   7609  2018-11-01 18:50 ~ 2019-08-18 16:14  
2287
영카트   8385  2018-10-31 05:44 ~ 2018-10-31 05:47  
2286
그누보드   8581  2018-10-30 15:47  
2285
그누보드   7895  2018-10-22 09:58 ~ 2019-01-18 14:42  
2284
HTML   7141  2018-10-14 01:19 ~ 2018-10-14 02:09  
2283
킴스큐   7197  2018-10-04 23:04  
2282
MySQL   8743  2018-10-03 02:29  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.