그룹관리자 기능강화(수정,삭제,복사,이동권한) > 그누3 팁자료실

그누3 팁자료실

그룹관리자 기능강화(수정,삭제,복사,이동권한) 정보

일반 그룹관리자 기능강화(수정,삭제,복사,이동권한)

본문

박갑성님이 젤 좋아하실것 같네요!
제가 이번에 만드는 홈페이지에서 카페기능이 필요한데 현재 그룹관리자 기능이 적기 때문에 기능을 대폭 늘렸습니다.
거기에 박갑성님이 원하시는 스타일인지는 모르나 비슷하게 맞아 떨어진듯 합니다!
관리자모드에서만 수정,삭제,복사,이동권한을 풀어주는 형식입니다.
위에 그림은 수정전이라 그룹관리자로 로그인한 상태에서 볼수 있게 되어있는데
그룹관리자로 로그인하면 글 수정, 삭제, 복사/이동 권한설정부분이 화면에 출력되지 않습니다.
그룹관리자는 변경이 불가능하고 관리자가 그 권한을 풀어주고 설정할수 있습니다.
수정된 소스전체를 올릴까합니다.
아직 미완성된게 있는데 그룹관리자의 경우 게시판 생성 기능을 부여하는데 제한갯수만큼만 게시판을 생성토록 계획을 잡았는데 아직은 만들지 않은상태입니다.
소스 올라갑니다.
gb_group<---테이블에 필드가 추가되었습니다.
 gr_list_del &nbsp; &nbsp;tinyint(4) &nbsp; defult '0'
 gr_list_edit &nbsp; tinyint(4) &nbsp; defult '0'
 gr_list_copy &nbsp;tinyint(4) &nbsp; defult '0'
 gr_list_total &nbsp; tinyint(4) &nbsp; defult '5' &nbsp;를 추가해주시면 됩니다.
//#######################################################
//## &nbsp; gnu2/manage/groupform.php
//#######################################################
<?
require_once "./lib.inc.php";
require_once "./admincheck.inc.php";

if ($w == '') {

 &nbsp; &nbsp;if ($is_admin == 'group') {
 &nbsp; &nbsp; &nbsp; &nbsp;alert("그룹관리자는 그룹을 생성할 수 없습니다.");
 &nbsp; &nbsp;}

 &nbsp; &nbsp;$gr_id_attr = "required";
 &nbsp; &nbsp;$gr[gr_use_access] = 0;

} else if ($w == "u") {

 &nbsp; &nbsp;$gr_id_attr = "readonly style='background-color:#dddddd'";
 &nbsp; &nbsp;$gr = sql_fetch_array(" select * from $cfg[table_group] where gr_id = '$gr_id' ");

} else {

 &nbsp; &nbsp;alert("제대로 된 값이 넘어오지 않았습니다.");

}

require_once "./head.inc.php";
require_once "./menu.inc.php";
?>

<table width=770 align=center><tr><td>

<table width=100% cellspacing=1 style='table-layout:fixed;' background='./tableborder.gif'>
<form name=groupform method=post action='./groupupdate.php' autocomplete='off'>
<input type=hidden name='w' &nbsp; &nbsp; value='<? echo $w ?>'>
<colgroup width=150 class=csstitle align=center>
<colgroup width='' class=csslist0>
<tr>
 &nbsp; &nbsp;<td class=csstitle align=center>그룹 ID</td>
 &nbsp; &nbsp;<td colspan=3 class=csslist0>
 &nbsp; &nbsp; &nbsp; &nbsp;<input type=text name=gr_id size=6 maxlength=5 <? echo $gr_id_attr ?> itemname='그룹 아이디' value='<? echo $gr[gr_id] ?>'> 영문자, 숫자, _ 만 가능 (공백없이)
 &nbsp; &nbsp;</td>
</tr>
<tr>
 &nbsp; &nbsp;<td class=csstitle align=center>그룹 제목</td>
 &nbsp; &nbsp;<td colspan=3 class=csslist0>
 &nbsp; &nbsp; &nbsp; &nbsp;<input type=text name=gr_subject size=60 required itemname='홈페이지 제목'>
 &nbsp; &nbsp; &nbsp; &nbsp;<? if ($w == 'u') { ?>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<input type=button value='게시판생성' onclick="location.href='./boardform.php?gr_id=<? echo $gr_id ?>';">
 &nbsp; &nbsp; &nbsp; &nbsp;<? } ?>
 &nbsp; &nbsp;</td>
</tr>
<tr>
 &nbsp; &nbsp;<td>그룹 관리자</td>
 &nbsp; &nbsp;<td colspan=3>
 &nbsp; &nbsp; &nbsp; &nbsp;<input type=text name=gr_admin> 회원아이디를 입력하세요.
 &nbsp; &nbsp;</td>
</tr>
<tr>
 &nbsp; &nbsp;<td>접근회원사용</td>
 &nbsp; &nbsp;<td colspan=3>
 &nbsp; &nbsp; &nbsp; &nbsp;<? echo get_yn_select('gr_use_access') ?>
 &nbsp; &nbsp;</td>
</tr>

<? if ($is_admin == 'default') { &nbsp; ?>

<!--###################### ⓒⓒⓒ 그룹관리자 기능추가(수정,삭제,복사기능)를 위해 수정 ###########################-->

<tr>
 &nbsp; &nbsp;<td>글삭제 권한</td>
 &nbsp; &nbsp;<td colspan=3>
 &nbsp; &nbsp; &nbsp; &nbsp;<? echo get_yn_select('gr_list_del') ?>
 &nbsp; &nbsp;</td>
</tr>
<tr>
 &nbsp; &nbsp;<td>글수정 권한</td>
 &nbsp; &nbsp;<td colspan=3>
 &nbsp; &nbsp; &nbsp; &nbsp;<? echo get_yn_select('gr_list_edit') ?>
 &nbsp; &nbsp;</td>
</tr>
<tr>
 &nbsp; &nbsp;<td>글복사/이동 권한</td>
 &nbsp; &nbsp;<td colspan=3>
 &nbsp; &nbsp; &nbsp; &nbsp;<? echo get_yn_select('gr_list_copy') ?>
 &nbsp; &nbsp;</td>
</tr>
<tr>
 &nbsp; &nbsp;<td>게시판생성제한수</td>
 &nbsp; &nbsp;<td colspan=3><input type=text name=gr_list_total> 그룹관리자 게시판생성을 제한한다.</td>
</tr>


<!--###################### ⓒⓒⓒ 그룹관리자 기능추가(수정,삭제,복사기능)를 위해 수정 ###########################-->

<? } else { echo "
 &nbsp; &nbsp;<input type=hidden name=gr_list_del value='<?=$gr[gr_list_del]?>'>
 &nbsp; &nbsp;<input type=hidden name=gr_list_edit value='<?=$gr[gr_list_edit]?>'> &nbsp;
 &nbsp; &nbsp;<input type=hidden name=gr_list_copy value='<?=$gr[gr_list_copy]?>'>
 &nbsp; &nbsp;<input type=hidden name=gr_list_total value='<?=$gr[gr_list_total]?>'> &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp;";
 &nbsp; &nbsp;
} ?>

<tr>
 &nbsp; &nbsp;<td>상단 파일 경로</td>
 &nbsp; &nbsp;<td colspan=3><input type=text name=gr_include_head size=60></td>
</tr>
<tr>
 &nbsp; &nbsp;<td>하단 파일 경로</td>
 &nbsp; &nbsp;<td colspan=3><input type=text name=gr_include_tail size=60></td>
</tr>
<tr>
 &nbsp; &nbsp;<td>상단 내용</td>
 &nbsp; &nbsp;<td colspan=3><textarea name=gr_content_head rows=5 style='width:99%;'><? echo $gr[gr_content_head] ?></textarea></td>
</tr>
<tr>
 &nbsp; &nbsp;<td>하단 내용</td>
 &nbsp; &nbsp;<td colspan=3><textarea name=gr_content_tail rows=5 style='width:99%;'><? echo $gr[gr_content_tail] ?></textarea></td></tr>
</tr>
</table>

<p>
<div align=center><input type=submit value=' &nbsp; 확 &nbsp; 인 &nbsp; '></div>
</form>

</td></tr></table>

<script language='JavaScript'>
 &nbsp; &nbsp;var f = document.groupform;

 &nbsp; &nbsp;if (f.w.value == '') {
 &nbsp; &nbsp; &nbsp; &nbsp;f.gr_id.focus();
 &nbsp; &nbsp;} else {
 &nbsp; &nbsp; &nbsp; &nbsp;f.gr_subject.focus();
 &nbsp; &nbsp;}

 &nbsp; &nbsp;f.gr_subject.value &nbsp; &nbsp; &nbsp;= '<? echo $gr[gr_subject] ?>';
 &nbsp; &nbsp;f.gr_admin.value &nbsp; &nbsp; &nbsp; &nbsp;= '<? echo $gr[gr_admin] ?>';
 &nbsp; &nbsp;f.gr_use_access.value &nbsp; = '<? echo $gr[gr_use_access] ?>';
 &nbsp; &nbsp;f.gr_list_del.value &nbsp; &nbsp; = '<? echo $gr[gr_list_del] ?>';
 &nbsp; &nbsp;f.gr_list_edit.value &nbsp; &nbsp; = '<? echo $gr[gr_list_edit] ?>';
 &nbsp; &nbsp;f.gr_list_copy.value &nbsp; &nbsp; = '<? echo $gr[gr_list_copy] ?>';
 &nbsp; &nbsp;f.gr_list_total.value &nbsp; &nbsp;= '<? echo $gr[gr_list_total] ?>';
 &nbsp; &nbsp;f.gr_include_head.value = '<? echo $gr[gr_include_head] ?>';
 &nbsp; &nbsp;f.gr_include_tail.value = '<? echo $gr[gr_include_tail] ?>';
</script>

<?
require_once "./tail.inc.php";
?>

//#######################################################
//## &nbsp; gnu2/manage/groupupdate.php
//#######################################################
<?
require_once "./lib.inc.php";
require_once "./admincheck.inc.php";

if (!$gr_subject)
 &nbsp; &nbsp;alert("그룹 제목을 입력하세요.");

if ($gr_admin) {
 &nbsp; &nbsp;$mb = get_member($gr_admin);
 &nbsp; &nbsp;if (!$mb[mb_id])
 &nbsp; &nbsp; &nbsp; &nbsp;alert("그룹 관리자 회원아이디가 존재하지 않습니다.");
}

$sql_common = " gr_subject &nbsp; &nbsp; &nbsp;= '$gr_subject',
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gr_admin &nbsp; &nbsp; &nbsp; &nbsp;= '$gr_admin', &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gr_use_access &nbsp; = '$gr_use_access',
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gr_list_del &nbsp; &nbsp; = '$gr_list_del',
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gr_list_edit &nbsp; &nbsp;= '$gr_list_edit',
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gr_list_copy &nbsp; &nbsp;= '$gr_list_copy',
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gr_list_total &nbsp; = '$gr_list_total',
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gr_include_head = '$gr_include_head',
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gr_include_tail = '$gr_include_tail',
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gr_content_head = '$gr_content_head',
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;gr_content_tail = '$gr_content_tail' ";

if ($w == '') {
 &nbsp; &nbsp;
 &nbsp; &nbsp;$sql = " select count(*) from $cfg[table_group] where gr_id = '$gr_id' ";
 &nbsp; &nbsp;$row = sql_fetch_array($sql);
 &nbsp; &nbsp;if ($row[0] > 0)
 &nbsp; &nbsp; &nbsp; &nbsp;alert("이미 존재하는 그룹 ID 입니다.");

 &nbsp; &nbsp;$sql = " insert into $cfg[table_group] set gr_id = '$gr_id', $sql_common ";
 &nbsp; &nbsp;sql_query_error($sql);

 &nbsp; &nbsp;$w = 'u';

} else if ($w == 'u') {

 &nbsp; &nbsp;$sql = " update $cfg[table_group] set $sql_common where gr_id = '$gr_id' ";
 &nbsp; &nbsp;sql_query_error($sql);

} else {

 &nbsp; &nbsp;alert("제대로 된 값이 넘어오지 않았습니다.");

}

header("location:./groupform.php?w=$w&gr_id=$gr_id");
?>

//#######################################################
//## &nbsp; gnu2/gbview.php
//#######################################################
<?
if (!defined("IN_GNUBOARD")) {
 &nbsp; &nbsp;die('Hacking 시도');
}

//@set_time_limit(0);
require_once "./lib.inc.php";

$begin_time = get_microtime();

/*
if (!$bo_table) alert("./gnuboard.php?bo_table=code 와 같은 방식으로 넘겨 주세요.");
if (!is_board($write_table)) alert("$bo_table 게시판이 존재하지 않습니다.");
*/

// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 Hit 수를 증가 시킴
if ("$bo_table|$wr_id" != $HTTP_SESSION_VARS[ss_view]) {
 &nbsp; &nbsp;session_register("ss_view");
 &nbsp; &nbsp;$ss_view = "$bo_table|$wr_id";

 &nbsp; &nbsp;sql_query_error(" update $write_table set wr_hit = wr_hit + 1 where wr_id = '$wr_id' ");
}

$html_subject = cut_str($write[wr_subject], 255);

$sql_search = "";
// 검색이면
if ($stext) {
 &nbsp; &nbsp;// where 문을 얻음
 &nbsp; &nbsp;$sql_search = get_sql_search($sselect, $stext);
 &nbsp; &nbsp;$a_search_list = "<a href='./gnuboard.php?$qstr&page=$page' class=s_a>";
 &nbsp; &nbsp;$a_list = "<a href='./gnuboard.php?bo_table=$bo_table' class=s_a>";
} else {
 &nbsp; &nbsp;$show_search_list_begin = "<!--";
 &nbsp; &nbsp;$show_search_list_end = "-->";
 &nbsp; &nbsp;$a_list = "<a href='./gnuboard.php?bo_table=$bo_table&page=$page' class=s_a>";
}

if (!$board[bo_use_listview]) {
 &nbsp; &nbsp;// 이전 글을 얻음
 &nbsp; &nbsp;$sql = " select wr_id, wr_subject from $write_table where wr_comment = '0' and wr_notice = '$write[wr_notice]' and wr_num = '$write[wr_num]' and wr_reply < '$write[wr_reply]' $sql_search order by wr_notice desc, wr_num desc, wr_reply desc limit 1 ";
 &nbsp; &nbsp;$prev = sql_fetch_array($sql);
 &nbsp; &nbsp;// 위의 쿼리문으로 값을 얻지 못했다면
 &nbsp; &nbsp;if (!$prev[0]) {
 &nbsp; &nbsp; &nbsp; &nbsp;$sql = " select wr_id, wr_subject from $write_table where wr_comment = '0' and wr_notice = '$write[wr_notice]' and wr_num < '$write[wr_num]' $sql_search order by wr_notice desc, wr_num desc, wr_reply desc limit 1 ";
 &nbsp; &nbsp; &nbsp; &nbsp;$prev = sql_fetch_array($sql);
 &nbsp; &nbsp; &nbsp; &nbsp;if (!$prev[0]) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$sql = " select wr_id, wr_subject from $write_table where wr_comment = '0' and wr_notice < '$write[wr_notice]' $sql_search order by wr_notice desc, wr_num desc, wr_reply desc limit 1 ";
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$prev = sql_fetch_array($sql);
 &nbsp; &nbsp; &nbsp; &nbsp;}
 &nbsp; &nbsp;}

 &nbsp; &nbsp;// 다음 글을 얻음
 &nbsp; &nbsp;$sql = " select wr_id, wr_subject from $write_table where wr_comment = '0' and wr_notice = '$write[wr_notice]' and wr_num = '$write[wr_num]' and wr_reply > '$write[wr_reply]' $sql_search order by wr_notice, wr_num, wr_reply limit 1 ";
 &nbsp; &nbsp;$next = sql_fetch_array($sql);
 &nbsp; &nbsp;// 위의 쿼리문으로 값을 얻지 못했다면
 &nbsp; &nbsp;if (!$next[0]) {
 &nbsp; &nbsp; &nbsp; &nbsp;$sql = " select wr_id, wr_subject from $write_table where wr_comment = '0' and wr_notice = '$write[wr_notice]' and wr_num > '$write[wr_num]' $sql_search order by wr_notice, wr_num, wr_reply limit 1 ";
 &nbsp; &nbsp; &nbsp; &nbsp;$next = sql_fetch_array($sql);
 &nbsp; &nbsp; &nbsp; &nbsp;// 위의 쿼리문으로 값을 얻지 못했다면
 &nbsp; &nbsp; &nbsp; &nbsp;if (!$next[0]) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$sql = " select wr_id, wr_subject from $write_table where wr_comment = '0' and wr_notice > '$write[wr_notice]' $sql_search order by wr_notice, wr_num, wr_reply limit 1 ";
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$next = sql_fetch_array($sql);
 &nbsp; &nbsp; &nbsp; &nbsp;}
 &nbsp; &nbsp;}
}

if ($prev[0]) {
 &nbsp; &nbsp;$prev_wr_subject = get_text(cut_str($prev[wr_subject], 255));
 &nbsp; &nbsp;$prev_wr_id = $prev[wr_id];
 &nbsp; &nbsp;$a_prev = "<a href='./gnuboard.php?$qstr&wr_id={$prev_wr_id}&page=$page' class=s_a>";
} else {
 &nbsp; &nbsp;$show_prev_begin = "<!--";
 &nbsp; &nbsp;$show_prev_end = "-->";
}

if ($next[0]) {
 &nbsp; &nbsp;$next_wr_subject = get_text(cut_str($next[wr_subject], 255));
 &nbsp; &nbsp;$next_wr_id = $next[wr_id];
 &nbsp; &nbsp;$a_next = "<a href='./gnuboard.php?$qstr&wr_id={$next_wr_id}&page=$page' class=s_a>";
} else {
 &nbsp; &nbsp;$show_next_begin = "<!--";
 &nbsp; &nbsp;$show_next_end = "-->";
}

if ($member[mb_level] >= $board[bo_write_level]) {
 &nbsp; &nbsp;$a_write = "<a href='./gbform.php?bo_table=$bo_table' class=s_a>";
} else {
 &nbsp; &nbsp;$show_write_begin = "<!--";
 &nbsp; &nbsp;$show_write_end = "-->";
}

if ($write[wr_notice] == 0 && ($member[mb_level] >= $board[bo_reply_level])) {
 &nbsp; &nbsp;$a_reply = "<a href='./gbform.php?w=r&$qstr&wr_id=$wr_id' class=s_a>";
} else {
 &nbsp; &nbsp;$show_reply_begin = "<!--";
 &nbsp; &nbsp;$show_reply_end = "-->";
}

//####################### ⓒⓒⓒ 그룹관리자용 추가 및 수정 처리 #############################

$is_admin = is_admin($member[mb_id]); &nbsp; &nbsp;// 그룹관리자를 인지 확인처리


// 로그인중이고 자신의 글이라면 또는 관리자라면 또는 그룹관리자이면서 삭제권한이 있으면 바로 삭제가능

if (($member[mb_id] && ($member[mb_id] == $write[mb_id])) || is_admin($member[mb_id]) || ($is_admin == 'group') AND ($group[gr_list_del])) {
 &nbsp; &nbsp;$a_delete = "<a href=\"javascript:if (confirm('삭제하시겠습니까?')) {location='./gbdelete.php?w=d&$qstr&page=$page&wr_id=$wr_id';}\" class=s_a>";
} else if (!$write[mb_id]) { // 회원이 쓴 글이 아니라면
 &nbsp; &nbsp;$a_delete = "<a href='./gbpasswd.php?w=d&$qstr&page=$page&wr_id=$wr_id' class=s_a>";
} else {
 &nbsp; &nbsp;$show_delete_begin = "<!--";
 &nbsp; &nbsp;$show_delete_end = "-->";
}

// 로그인중이고 자신의 글이라면 또는 관리자라면 또는 그룹관리자이면서 수정권한이 있으면 바로 수정가능

if (($member[mb_id] && ($member[mb_id] == $write[mb_id])) || is_admin($member[mb_id]) || ($is_admin == 'group') AND ($group[gr_list_edit])) {
 &nbsp; &nbsp;$a_update = "<a href='./gbform.php?w=u&$qstr&page=$page&wr_id=$wr_id' class=s_a>";
} else if (!$write[mb_id]) { // 회원이 쓴 글이 아니라면
 &nbsp; &nbsp;$a_update = "<a href='./gbpasswd.php?w=u&$qstr&page=$page&wr_id=$wr_id' class=s_a>";
} else {
 &nbsp; &nbsp;$show_update_begin = "<!--";
 &nbsp; &nbsp;$show_update_end = "-->";
}


// 관리자라거나 또는 그룹관리자이면서 복사권한이 있으면 글 복사, 이동 가능
if ($write[wr_reply] == '' && is_admin($member[mb_id]) AND ($is_admin == 'group') AND ($group[gr_list_copy])) {
 &nbsp; &nbsp;$a_copy = "<a href='./gbmove.php?w=c&$qstr&wr_id=$wr_id' class=s_a>";
 &nbsp; &nbsp;$a_move = "<a href='./gbmove.php?w=m&$qstr&wr_id=$wr_id' class=s_a>";
} else {
 &nbsp; &nbsp;$show_copymove_begin = "<!--";
 &nbsp; &nbsp;$show_copymove_end = "-->";
}

//####################### ⓒⓒⓒ 그룹관리자용 추가 및 수정 처리 #############################

//$name = get_text(cut_str($write[wr_name], 20));

// 메일 주소가 있다면 @ 대신 @ 캐릭터 엔티티로 변환 (스팸방지)
//if ($write[wr_email]) {
// &nbsp; &nbsp;$wr_name = "<a href='mailto:" . preg_replace("/@/", "@", $write[wr_email]) . "'>$wr_name</a>";
// &nbsp; &nbsp;$wr_email = $write[wr_email];
//}

$name = gblayer($write[mb_id], get_text(cut_str($write[wr_name],20)), $write[wr_email], $write[wr_homepage]);

$datetime = $write[wr_datetime];
$hit = $write[wr_hit];
$good = $write[wr_good];
$nogood = $write[wr_nogood];

// 관리자가 아니라면 중간 IP 주소 두개를 감춘다
$ip = $write[wr_ip];
if (!is_admin($member[mb_id])) {
 &nbsp; &nbsp;$ip = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", "\\1.*.*.\\4", $ip);
}

$show_homepage_begin = "<!--";
$show_homepage_end = "-->";
if ($write[wr_homepage]) {
 &nbsp; &nbsp;$homepage = set_http(get_text(cut_str($write[wr_homepage], 255)));
 &nbsp; &nbsp;$a_homepage = "<a href='$homepage' target='$default[de_link_target]' class=s_a>";
 &nbsp; &nbsp;$show_homepage_begin = "";
 &nbsp; &nbsp;$show_homepage_end = "";
}

$show_link1_begin = "<!--"; $show_link1_end = "-->";
if ($write[wr_link1]) {
 &nbsp; &nbsp;$link1 = set_http(get_text(cut_str($write[wr_link1], 255)));
 &nbsp; &nbsp;$a_link1 = "<a href='./gblink.php?$qstr&wr_id=$wr_id&index=1' target='$default[de_link_target]' class=s_a>";
 &nbsp; &nbsp;$link1_hit = $write[wr_link1_hit];
 &nbsp; &nbsp;$show_link1_begin = "";
 &nbsp; &nbsp;$show_link1_end = "";
}

$show_link2_begin = "<!--"; $show_link2_end = "-->";
if ($write[wr_link2]) {
 &nbsp; &nbsp;$link2 = set_http(get_text(cut_str($write[wr_link2], 255)));
 &nbsp; &nbsp;$a_link2 = "<a href='./gblink.php?$qstr&wr_id=$wr_id&index=2' target='$default[de_link_target]' class=s_a>";
 &nbsp; &nbsp;$link2_hit = $write[wr_link2_hit];
 &nbsp; &nbsp;$show_link2_begin = "";
 &nbsp; &nbsp;$show_link2_end = "";
}

$show_file1_begin = "<!--";
$show_file1_end = "-->";

if ($write[wr_file1]) {
 &nbsp; &nbsp;if (!(preg_match($cfg[image_extension],$write[wr_file1]) ||
 &nbsp; &nbsp; &nbsp; &nbsp;preg_match($cfg[flash_extension],$write[wr_file1]) ||
 &nbsp; &nbsp; &nbsp; &nbsp;preg_match($cfg[movie_extension],$write[wr_file1]))) {
 &nbsp; &nbsp; &nbsp; &nbsp;$a_file1 = "<a href='./gbdownload.php?$qstr&wr_id=$wr_id&index=1' class=s_a>";
 &nbsp; &nbsp; &nbsp; &nbsp;$file1_download = $write[wr_file1_download];
 &nbsp; &nbsp; &nbsp; &nbsp;$file1_size = get_filesize("./$cfg[dir_file]/$write[wr_file1]");
 &nbsp; &nbsp; &nbsp; &nbsp;$file1 = $write[wr_file1_source];
 &nbsp; &nbsp; &nbsp; &nbsp;$show_file1_begin = "";
 &nbsp; &nbsp; &nbsp; &nbsp;$show_file1_end = "";
 &nbsp; &nbsp;}
 &nbsp; &nbsp;$file1_view = view_file_link($write[wr_file1]);
}

$show_file2_begin = "<!--";
$show_file2_end = "-->";
if ($write[wr_file2]) {
 &nbsp; &nbsp;if (!(preg_match($cfg[image_extension],$write[wr_file2]) ||
 &nbsp; &nbsp; &nbsp; &nbsp;preg_match($cfg[flash_extension],$write[wr_file2]) ||
 &nbsp; &nbsp; &nbsp; &nbsp;preg_match($cfg[movie_extension],$write[wr_file2]))) {
 &nbsp; &nbsp; &nbsp; &nbsp;$a_file2 = "<a href='./gbdownload.php?$qstr&wr_id=$wr_id&index=2' class=s_a>";
 &nbsp; &nbsp; &nbsp; &nbsp;$file2_download = $write[wr_file2_download];
 &nbsp; &nbsp; &nbsp; &nbsp;$file2_size = get_filesize("./$cfg[dir_file]/$write[wr_file2]");
 &nbsp; &nbsp; &nbsp; &nbsp;$file2 = $write[wr_file2_source];
 &nbsp; &nbsp; &nbsp; &nbsp;$show_file2_begin = "";
 &nbsp; &nbsp; &nbsp; &nbsp;$show_file2_end = "";
 &nbsp; &nbsp;}
 &nbsp; &nbsp;$file2_view = view_file_link($write[wr_file2]);
}

if ($write[ca_id]) {
 &nbsp; &nbsp;$category_name = get_category_name($write_table, $write[ca_id]);
}

$subject = cut_str($write[wr_subject], 255);
if ($stext && preg_match("/wr_subject/", $sselect)) {
 &nbsp; &nbsp;$subject = set_search_font($stext, $subject);
}
$subject = get_text($subject);
if ($stext && preg_match("/wr_subject/", $sselect)) {
 &nbsp; &nbsp;$subject = get_search_font($subject);
}

$content = $write[wr_content];
// 텍스트이면
if (!$write[wr_html]) {
 &nbsp; &nbsp;if ($stext && preg_match("/wr_content/", $sselect)) {
 &nbsp; &nbsp; &nbsp; &nbsp;$content = set_search_font($stext, $content);
 &nbsp; &nbsp;}
 &nbsp; &nbsp;$content = get_text($content, 1);
 &nbsp; &nbsp;if ($stext && preg_match("/wr_content/", $sselect)) {
 &nbsp; &nbsp; &nbsp; &nbsp;$content = get_search_font($content);
 &nbsp; &nbsp;}
}

if ($write[wr_html]) {
 &nbsp; &nbsp;$source = array ( "/<script/i", "/<\/script/i", "/javascript:/i", "/http-equiv/i" );
 &nbsp; &nbsp;$target = array ( "<x-script", &nbsp;"</x-script", &nbsp; "x-javascript:", &nbsp;"x-http-equiv" &nbsp;);
 &nbsp; &nbsp;/*
 &nbsp; &nbsp;$source[] = "/<script/i";
 &nbsp; &nbsp;$source[] = "/<\/script/i";
 &nbsp; &nbsp;$source[] = "/}/";
 &nbsp; &nbsp;$source[] = "/javascript:/i"; &nbsp; // 자바스크립트 태그 테러 방지
 &nbsp; &nbsp;$source[] = "/http-equiv/i"; &nbsp; &nbsp;// meta tag 이동 방지
 &nbsp; &nbsp;$target[] = "<x-script";
 &nbsp; &nbsp;$target[] = "</x-script";
 &nbsp; &nbsp;$target[] = "}";
 &nbsp; &nbsp;$target[] = "x-javascript:";
 &nbsp; &nbsp;$target[] = "x-http-equiv";
 &nbsp; &nbsp;*/

 &nbsp; &nbsp;if ($write[wr_html] == 2) { // 자동 줄바꿈
 &nbsp; &nbsp; &nbsp; &nbsp;$source[] = "/\n/";
 &nbsp; &nbsp; &nbsp; &nbsp;$target[] = "<br>";
 &nbsp; &nbsp;}

 &nbsp; &nbsp;$content = preg_replace($source, $target, $content);

} else {
 &nbsp; &nbsp;$content = urlautolink($content);
}

for ($i=1; $i<=$cfg[file_count]; $i++) {

 &nbsp; &nbsp;$wr_file = $write["wr_file$i"];

 &nbsp; &nbsp;if (eregi($cfg[image_extension], $wr_file) ||
 &nbsp; &nbsp; &nbsp; &nbsp;eregi($cfg[flash_extension], $wr_file) ||
 &nbsp; &nbsp; &nbsp; &nbsp;eregi($cfg[movie_extension], $wr_file)) {

 &nbsp; &nbsp; &nbsp; &nbsp;$size = getimagesize("./$cfg[dir_file]/$wr_file");
 &nbsp; &nbsp; &nbsp; &nbsp;$file[$i]->source_width &nbsp;= $size[0];
 &nbsp; &nbsp; &nbsp; &nbsp;$file[$i]->source_height = $size[1];

 &nbsp; &nbsp; &nbsp; &nbsp;if ($board[bo_table_width] <= 100) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ($size[0] > $cfg[large_image_size]) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$rate = $size[1] / $size[0];
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$size[0] = $cfg[large_image_size];
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$size[1] = (int)($size[0] * $rate);
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
 &nbsp; &nbsp; &nbsp; &nbsp;} else {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ($size[0] > $board[bo_table_width]) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$rate = $size[1] / $size[0];
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$size[0] = $board[bo_table_width];
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$size[1] = (int)($size[0] * $rate);
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
 &nbsp; &nbsp; &nbsp; &nbsp;}

 &nbsp; &nbsp; &nbsp; &nbsp;$file[$i]->wr_file = $wr_file;
 &nbsp; &nbsp; &nbsp; &nbsp;$file[$i]->width &nbsp; = $size[0];
 &nbsp; &nbsp; &nbsp; &nbsp;$file[$i]->height &nbsp;= $size[1];

 &nbsp; &nbsp; &nbsp; &nbsp;if (eregi($cfg[image_extension], $wr_file)) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$file[$i]->kind = 'image';
 &nbsp; &nbsp; &nbsp; &nbsp;} else if (eregi($cfg[swf_extension], $wr_file)) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$file[$i]->kind = 'flash';
 &nbsp; &nbsp; &nbsp; &nbsp;} else if (eregi($cfg[movie_extension], $wr_file)) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$file[$i]->kind = 'movie';
 &nbsp; &nbsp; &nbsp; &nbsp;}
 &nbsp; &nbsp;}

}

if ($write[mb_id]) {
 &nbsp; &nbsp;$mb = get_member($write[mb_id]);
 &nbsp; &nbsp;if ($mb[mb_icon]) {
 &nbsp; &nbsp; &nbsp; &nbsp;$mb_icon = "<img src='./$cfg[dir_member]/$mb[mb_icon]'>";
 &nbsp; &nbsp;}

 &nbsp; &nbsp;$show_signature_begin = "<!--";
 &nbsp; &nbsp;$show_signature_end = "-->";
 &nbsp; &nbsp;if ($board[bo_use_signature]) {
 &nbsp; &nbsp; &nbsp; &nbsp;$signature = convert_signature($mb[mb_signature]);
 &nbsp; &nbsp; &nbsp; &nbsp;if ($signature) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$signature = "<br><br><br><br>" . $signature;
 &nbsp; &nbsp; &nbsp; &nbsp;}
 &nbsp; &nbsp; &nbsp; &nbsp;$show_signature_begin = "";
 &nbsp; &nbsp; &nbsp; &nbsp;$show_signature_end = "";
 &nbsp; &nbsp;}
}

require_once "$dir/gbview_main.skin.php";

if ($board[bo_use_comment]) {
 &nbsp; &nbsp;// 코멘트 출력
 &nbsp; &nbsp;$sql = " select * from $write_table
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;where wr_parent_id = '$write[wr_id]'
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;and wr_comment > 0
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;order by wr_comment ";
 &nbsp; &nbsp;$result = sql_query_error($sql);
 &nbsp; &nbsp;for ($i=0; $row=mysql_fetch_array($result); $i++) {
 &nbsp; &nbsp; &nbsp; &nbsp;$comment_content = $row[wr_content];

 &nbsp; &nbsp; &nbsp; &nbsp;if ($stext) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$comment_content = set_search_font($stext, $comment_content);
 &nbsp; &nbsp; &nbsp; &nbsp;}

 &nbsp; &nbsp; &nbsp; &nbsp;$comment_content = get_text($comment_content, 1);

 &nbsp; &nbsp; &nbsp; &nbsp;if ($stext) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$comment_content = get_search_font($comment_content);
 &nbsp; &nbsp; &nbsp; &nbsp;}

 &nbsp; &nbsp; &nbsp; &nbsp;$comment_content = urlautolink($comment_content);

 &nbsp; &nbsp; &nbsp; &nbsp;$comment_name = gblayer($row[mb_id], cut_str($row[wr_name], 20, ''), $row[wr_email]);

 &nbsp; &nbsp; &nbsp; &nbsp;$comment_mb_id = $comment_mb_icon = "";
 &nbsp; &nbsp; &nbsp; &nbsp;if ($row[mb_id]) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$mb = get_member($row[mb_id]);
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$comment_mb_id = $mb[mb_id];
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ($mb[mb_icon]) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$comment_mb_icon = "<img src='./$cfg[dir_member]/$mb[mb_icon]' align=absmiddle>";
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
 &nbsp; &nbsp; &nbsp; &nbsp;}

 &nbsp; &nbsp; &nbsp; &nbsp;$comment_email = $row[wr_email];
 &nbsp; &nbsp; &nbsp; &nbsp;$comment_datetime = substr($row[wr_datetime],2,14);
 &nbsp; &nbsp; &nbsp; &nbsp;$comment_wr_id = $row[wr_id];

 &nbsp; &nbsp; &nbsp; &nbsp;// 관리자가 아니라면 중간 IP 주소 두개를 감춘다
 &nbsp; &nbsp; &nbsp; &nbsp;$comment_ip = $row[wr_ip];
 &nbsp; &nbsp; &nbsp; &nbsp;if (!is_admin($member[mb_id])) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$comment_ip = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", "\\1.*.*.\\4", $comment_ip);
 &nbsp; &nbsp; &nbsp; &nbsp;}

 &nbsp; &nbsp; &nbsp; &nbsp;$show_comment_delete_begin = "<!--";
 &nbsp; &nbsp; &nbsp; &nbsp;$show_comment_delete_end = "-->";
 &nbsp; &nbsp; &nbsp; &nbsp;if ($member[mb_id]) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ($row[mb_id] == $member[mb_id] || is_admin($member[mb_id])) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$a_comment_delete = "<a href=\"javascript:if (confirm('삭제하시겠습니까?')) {location='./gbdelete.php?w=x&$qstr&wr_id=$comment_wr_id';}\" class=s_a>";
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$show_comment_delete_begin = "";
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$show_comment_delete_end = "";
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
 &nbsp; &nbsp; &nbsp; &nbsp;} else {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!$row[mb_id]) {
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$a_comment_delete = "<a href='./gbpasswd.php?w=x&$qstr&wr_id=$comment_wr_id' class=s_a>";
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$show_comment_delete_begin = "";
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$show_comment_delete_end = "";
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
 &nbsp; &nbsp; &nbsp; &nbsp;}

 &nbsp; &nbsp; &nbsp; &nbsp;require "$dir/gbview_clist.skin.php";
 &nbsp; &nbsp;}
 &nbsp; &nbsp;mysql_free_result($result);

 &nbsp; &nbsp;if ($default[de_use_cookie]) {
 &nbsp; &nbsp; &nbsp; &nbsp;$tmp_c_name = $HTTP_COOKIE_VARS[ck_wr_name];
 &nbsp; &nbsp;}

 &nbsp; &nbsp;if ($member[mb_id]) {
 &nbsp; &nbsp; &nbsp; &nbsp;$show_c_passwd_begin = "<!--";
 &nbsp; &nbsp; &nbsp; &nbsp;$show_c_passwd_end = "-->";
 &nbsp; &nbsp; &nbsp; &nbsp;$c_name = "<b>$member[mb_name]</b>";
 &nbsp; &nbsp;} else {
 &nbsp; &nbsp; &nbsp; &nbsp;$show_c_passwd_begin = "";
 &nbsp; &nbsp; &nbsp; &nbsp;$show_c_passwd_end = "";
 &nbsp; &nbsp; &nbsp; &nbsp;$c_name = "<input type=text name=wr_name size=10 value='$tmp_c_name' class=s_input required itemname='이름'>";
 &nbsp; &nbsp;}

 &nbsp; &nbsp;if ($member[mb_level] >= $board[bo_comment_level]) {
 &nbsp; &nbsp; &nbsp; &nbsp;require_once "$dir/gbview_cwrite.skin.php";
 &nbsp; &nbsp;}
}

$run_time = get_microtime() - $begin_time;

require_once "$dir/gbview_tail.skin.php";
?>


p.s:기타문의는 이곳게시판 개인적으로 물어보시고 싶으시면
e-mail : http://oldccc.wo.to
추천
49
  • 복사

댓글 전체

음...db랑 플로우차트를 위해서 visio를 받고있는중인데..쩝 잘안받아지네요*^^*
음 구도 2가지로 잡았습니다.
리눅스+아파치환경을 기본으로
(완전한 따로따로 관리 여러개 계정을 둔경우)
계시판만 공유하고 홈페이지권한은 그룹관리자에게 모두 넘긴구조...
어찌보면 다른홈페이지의 게시판만 불러와 쓰는 구조라고 봐야겠네요!
--/home/--/관리자계정/--/public_html/------------/gnu2/
            |                                          + index.htm
            +--/카페계정명/--/public_html/+ index.html

이건 한계정에서 카페를 둔  상태
--/home/+--/계정명/---/public_html/+----/gnu2/
                                                      +----/cage/-+--/카페명/index.html
                                                                        +--/카페명/                   
화면 구상을 완전 스킨화 시켜서 php확장자가 아닌 다른이름으로 다운로드, 업로드만 가능케 하고 그파일을
첨부파일로 첨부시켜서 하는 방안~~~
물론 다 만드는데 시간좀 걸릴듯싶지만서도....*^^*일단 로직부터잡고!
아니면 업로드 형태를 더욱 극대화 한다면 .....
최고 관리자가
+--카페명/index.html
            /head.html
            /foot.html
            /main.html  <====이러한 내용들의 몇가지의 예시를 만들어주고 원하는 카페형태를 다운받아서 직접 파일을 다운 수정할 수 도 있게 하고 그리고 업로드 파일[게시판에서 파일을 업로드할 수 있도록 업로드된 파일이 어디에 저장해야 할 것을 지정해준다면.....]을 이용해서 원하는 곳에 업로드하고 테그를 이용해서 관리할 수 있도록 해도 될 것 같군요..... 더욱 다양한 카페들이 탄생을 할 수 있을 것 같군요.,.....*^^*
제가 생각을 좀 해봤는데...
-/root-+---gnu2 -+
                        |
                        +---cafe +--카페명/index.html
                                      +--카페명/index.html
                                      +--카페명/index.html
이것이 경로부분에서도 잘 되지 않을 까 생각을 해봤습니다.....
그리고 헤더와 풋더 파일들은 각자의 카페명안에 따로 넣어 주어야 될 것 같구요....... 
그리고 자율 관리 색다른 카페가 나오게 할려면 ftp를 열어 줄 순 없으니 상단 파일 하단 파일 태그를 통해서
관리를 하는 것처럼 해더풋더의 이미지 자료를 업로드하면 원하는
부분에 출력할 수 있도록 한다면 더 나을 것 같더군요......
지금 화면관리를 인터넷 상에서 직접 관리하도록 생각을 좀 해보고 있는데 실력이 좀 딸려서뤼 ........ 될 듯 될 듯 하면서도 잘 안되는군요......

 +--카페명/index.html
              /head.html
              /foot.html
              /main.html 
<===  기본 레이아웃을 설정을 해놓고 사용자가 바꿔나아갈 수 있도록
[위에서 말씀드린 태그와 업로드를 이용해서요]
카페명은 그룹의 아이디가 되나요? 자동 생성이 되나요? .......
예를 들면 제로보드를 설치할때 config.php화일이 자동 생성이 되는 것처럼 사용자가 카페를 생성하면 자동 위의 파일들이 생성이 되도록 하면 될 듯도 한데요........

제가 황당무게한 말씀을 드렸는지......
암튼 수고하시는 모습이 보기 좋습니다......
여기 홈피도 많이 달라져가는 것 같죠......
저도 조만간 사용기에 홈피를 공개하도록 할께요.......*^^*  힘내세요....화이팅...
경로부분이 가장 골치가 아프군요.
요새 다른 작업과 병행이 되어서 작업할 시간도 얼마없구요.
조만간에 좋은 방법이 나오리라 생각됩니다.
좋은 주말되세요.
추가 수정에 대한 생각...
완전하게 카페형식으로 운영이 가능토록 수정을 해볼 생각으로 고민을 해본 결과
-/root-+---gnu2
          |
          +---cafe +--카페명/index.html
                      +--카페명/index.html
                      +--카페명/index.html
이런 구도에 게시판은 통합으로 운영을 하면 되는데 문제점이 노프레임 구현시
_head.php (상단 첨부파일)
_tail.php    (하단 첨부파일)
이 두가지가 고정됨으로서 해당 카페만에 해당되는 노프레임 구현시 해당 그룹 상단,하단 첨부파일의 한개로 고정됨으로써  그룹의 페이지당 각기 다른 상단,하단파일 첨부변경이 불가능한문제점 해결
의견 있으신분은 글좀
1. 관리자가 만든 게시판과 그룹관리자가 만든 게시판의 구별은 가능한가요?
    가능하게 할수있는데 약간의 테이블에 필드를 추가해서 소스를 약간 수정하면 가능합니다.
2. 글 삭제 그리고 수정, 이동.... 이부분이 그 그룹에서만 가능하게된는 것인가요?
  관리자가 해당 그룹의 관리자에 대해서 글 삭제, 수정, 복사/이동 권한을 부여하는 겁니다.
  다시 말해 그룹마다 따로 설정된다는 소리죠! 단 아직 복사/이동권한에 미비한점이 있는데 복사/이동시 해당 그룹게시판으로만 복사/이동되어져야하기때문에 게시판이동부분에서 소스수정이 조금 필요할것같네요! 갑자기 생각해보니 다른 그룹게시판으로 복사해넣는 불쌍사는 없애야하니깐요! 어쩌튼 기능을 많이 추가많이 해야하는 관계로 수정버젼은 수정되는대로 계속 올리겠습니다.
음..... 잠시 소스를 보면서 느낀 건데요....
관리자가 만든 게시판과 그룹관리자가 만든 게시판의 구별은 가능한가요?
글 삭제 그리고 수정, 이동.... 이부분이 그 그룹에서만 가능하게된는 것인가요?
음.... 나중에 소스를 테스트를 충분히 한 다음에 궁금한 점 있으면 글 올릴께요.......*^^*

넘 기뻐서 .......=3=3==3
와이야~    *^^*
ⓒⓒⓒ 넘 대단하십니다.......제가 요즘 시험때문에 이 홈페이지를 접속을 못했는데
이렇게 좋은 것을 나누시니 감사할따름입니다.
제가 당장 테스트를 해보고 싶으나 얼척없는 관계로 아쉬운 마음 뒤로 하고 현재 저에게 맞겨진 것 최선을 다한 후에
테스트를 해 보겠습니다......

다시 한번 감사드립니다......*^^*
© SIRSOFT
현재 페이지 제일 처음으로