회원가입후 2주(14일) 지나면 자동승급하는 code... 몇가지만 봐주세요 > 그누4 질문답변

그누4 질문답변

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

회원가입후 2주(14일) 지나면 자동승급하는 code... 몇가지만 봐주세요 정보

회원가입후 2주(14일) 지나면 자동승급하는 code... 몇가지만 봐주세요

본문

아래의 코드를 개발해서 member/basic/login_check.skin.php에 넣었습니다.
 
동작은 잘 하는데... 궁금한 것은... 왜... login_check.skin.php에서 $mb_id 변수는
값이 잘 나오는데 $mb_datetime 같은 것은 안나올까요??? 그래서 mb_get 함수를
두번이나 돌렸는데... 조언 부탁드립니다.
 
 
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
 
//날짜 기준 자동레벨업
function levelup_auto($mb_id) {
global $config;
global $g4;
global $is_admin;

// 회원가입 14일 이후에 회원등급을 상향조정함
$mb = get_member($mb_id);
$tmp_date = 14;
$wtime = date("Y-m-d", $g4[server_time] - ($tmp_date * 86400));
$jtime = $mb[mb_datetime];
$jtime_send = substr($jtime, 0, 10);
 
if ($wtime >= $jtime)
{
            // 레벨변경
            $new_level = 3;
            mysql_query(" update $g4[member_table] set mb_level='$new_level' where mb_id='$mb_id' ");
           
            // 쪽지발송 (필요없으면 주석처리 하세요)
            $content ="{$jtime_send}일 회원가입후 {$tmp_date}일이 경과하여 회원등급이 {$mb[mb_level]}에서 {$new_level}으로 변경되었습니다.";
            $tmp_row = mysql_fetch_array(mysql_query("select max(me_id) as max_me_id from $g4[memo_table]"));
            $memosub = "회원님의 회원등급이 변경되었습니다";
            $me_ids = $tmp_row[max_me_id] + 1;
            $mb_send_id = "admin";
            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,memosub) values ('$me_ids','$mb_id','$mb_send_id','$g4[time_ymdhis]','','$content','$memosub')");
            mysql_query("update $g4[member_table] set mb_memo_call='$mb_id' where mb_id='$mb_id'");
  }
}
 
$mb = get_member($mb_id);
if( $mb_id == 'test' && $mb[mb_level] == 2) {
  levelup_auto($mb_id);
}
?>

댓글 전체

function 내부 보다는 외부에서 ... 값이 나와야 하는데... global로 해도 안되네요.

아래처럼 했더니... 레벨값이 안나와서 pass 해버리네요.

if( $mb_id == 'test' && $member[mb_level] == 2) {
  levelup_auto($mb_id);
}

사이트에 사고팔기 게시판이 있는데 처음 가입자들이 자꾸 문제를 일으켜서 숙려
기간을 주려고 만든 기능 입니다... ㅎㅎ
function 안과 밖은 다르기에 get_member 를 두번 쓴게 맞습니다.

$mb_id 는 딱 정해져 있는 구분 이라고 하면
$member[mb_level] 는 로그인 한 자신? 정도가 되겠네요.

그럼 특정 회원을 지정 하려면

$mb = get_member($mb_id);
$mb[알려는 구분]

하시면 됩니다.
if( $mb_id == 'test' && $member[mb_level] == 2) {
  levelup_auto($mb_id);
}

이부분은 아이디가 test 이고 레벨이 2일 경우에만 동작하는게 아닐런지요?
별도로 처릴를 해 보았습니다.

로그인시 outlogin.lib.php를 기본으로 사용하기에.....

outlogin.lib.php 수정(필요시 해당부분만 extend폴더에 저장해서 사용할 수도)

<?
if (!defined('_GNUBOARD_')) exit;

// 외부로그인
function outlogin($skin_dir="basic")
{
    global $config, $member, $g4, $urlencode, $is_admin;

    $nick  = cut_str($member['mb_nick'], $config['cf_cut_name']);
    $point = number_format($member['mb_point']);

    // 읽지 않은 쪽지가 있다면
    $sql = " select count(*) as cnt
              from {$g4['memo_table']}
              where me_recv_mb_id = '{$member['mb_id']}'
                and me_read_datetime = '0000-00-00 00:00:00' ";
    $row = sql_fetch($sql);
    $memo_not_read = $row['cnt'];

    $outlogin_skin_path = "$g4[path]/skin/outlogin/$skin_dir";

    $is_auth = false;
    $sql = " select count(*) as cnt from $g4[auth_table] where mb_id = '$member[mb_id]' ";
    $row = sql_fetch($sql);
    if ($row['cnt'])
        $is_auth = true;

    ob_start();
    if ($member['mb_id'])
        include_once ("$outlogin_skin_path/outlogin.skin.2.php");
    else // 로그인 전이라면
        include_once ("$outlogin_skin_path/outlogin.skin.1.php");
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}

//날짜 기준 자동레벨업
function levelup_auto($mb_id) {

global $config, $member, $g4, $is_admin;

// 회원가입 14일 이후에 회원등급을 상향조정함
$mb = get_member($mb_id);
$tmp_date = 14;
$wtime = date("Y-m-d", $g4[server_time] - ($tmp_date * 86400));
$jtime = $mb[mb_datetime];
$jtime_send = substr($jtime, 0, 10);
 
if ($wtime >= $jtime_send)
{
            // 레벨변경
            $new_level = 3;
            mysql_query(" update $g4[member_table] set mb_level='$new_level' where mb_id='$mb_id' ");
           
ob_start();
            include_once ("$g4[path]/level_auto_up.php");
            $content = ob_get_contents();
            ob_end_clean();
           
  }
}
?>

그누보드 폴더에 새로운 화일 하나 맹글고(위에서 부르는 화일이기에)...

level_auto_up.php

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

// 쪽지발송 (필요없으면 주석처리 하세요)
            $content ="{$jtime_send}일 회원가입후 {$tmp_date}일이 경과하여 회원등급이 {$mb[mb_level]}에서 {$new_level}으로 변경되었습니다.";
            $tmp_row = @sql_fetch_array(mysql_query("select max(me_id) as max_me_id from $g4[memo_table]"));
            $memosub = "회원님의 회원등급이 변경되었습니다";
            $me_ids = $tmp_row[max_me_id] + 1;
            $mb_send_id = "admin"; //관리자 아이디를 넣으면 되겄네요....^^
            @sql_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_send_id','$g4[time_ymdhis]','','$content')");
            @sql_query("update $g4[member_table] set mb_memo_call='$mb_send_id' where mb_id='$mb_id'");
?>

outlogin.skin.2.php 상단에

<? if($member[mb_level] =='2' || $member[mb_id]=='test') {
levelup_auto($member[mb_id]);

}?>

로 해 보았습니다. 렙업에 쪽지는 가는데 그다음은....^^
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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