회원가입후 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; // 개별 페이지 접근 불가
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//날짜 기준 자동레벨업
function levelup_auto($mb_id) {
function levelup_auto($mb_id) {
global $config;
global $g4;
global $is_admin;
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);
$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'");
}
}
{
// 레벨변경
$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);
}
levelup_auto($mb_id);
}
?>
댓글 전체

global $member; 를 하나 넣어 보시지요...
function 내부 보다는 외부에서 ... 값이 나와야 하는데... global로 해도 안되네요.
아래처럼 했더니... 레벨값이 안나와서 pass 해버리네요.
if( $mb_id == 'test' && $member[mb_level] == 2) {
levelup_auto($mb_id);
}
사이트에 사고팔기 게시판이 있는데 처음 가입자들이 자꾸 문제를 일으켜서 숙려
기간을 주려고 만든 기능 입니다... ㅎㅎ
아래처럼 했더니... 레벨값이 안나와서 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[알려는 구분]
하시면 됩니다.
$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일 경우에만 동작하는게 아닐런지요?
levelup_auto($mb_id);
}
이부분은 아이디가 test 이고 레벨이 2일 경우에만 동작하는게 아닐런지요?
지금 동시접속자가 100명 정도 되어서... test 라는 아뒤로만 작동하게 해둔 것이랍니다

별도로 처릴를 해 보았습니다.
로그인시 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]);
}?>
로 해 보았습니다. 렙업에 쪽지는 가는데 그다음은....^^
로그인시 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]);
}?>
로 해 보았습니다. 렙업에 쪽지는 가는데 그다음은....^^
그냥 1개 파일만 고치는 코드 쓸래요... 감솨...