비표준 그누보드4 첫커밋

This commit is contained in:
whitedot
2012-10-05 15:12:27 +09:00
parent 8751c57ffc
commit a4b2e70e4d
899 changed files with 89562 additions and 0 deletions

5
adm/_common.php Normal file
View File

@ -0,0 +1,5 @@
<?
$g4_path = ".."; // common.php 의 상대 경로
include_once ("$g4_path/common.php");
include_once("$g4[admin_path]/admin.lib.php");
?>

237
adm/admin.head.php Normal file
View File

@ -0,0 +1,237 @@
<?
if (!defined("_GNUBOARD_")) exit;
$begin_time = get_microtime();
include_once("$g4[path]/head.sub.php");
function print_menu1($key, $no)
{
global $menu;
$str = "<table width=130 cellpadding=1 cellspacing=0 id='menu_{$key}' style='position:absolute; display:none; z-index:1;' onpropertychange=\"selectBoxHidden('menu_{$key}')\"><colgroup><colgroup><colgroup width=10><tr><td rowspan=2 colspan=2 bgcolor=#EFCA95><table width=127 cellpadding=0 cellspacing=0 bgcolor=#FEF8F0><colgroup style='padding-left:10px'>";
$str .= print_menu2($key, $no);
$str .= "</table></td><td></td></tr><tr><td bgcolor=#DDDAD5 height=40></td></tr><tr><td width=4></td><td height=3 width=127 bgcolor=#DDDAD5></td><td bgcolor=#DDDAD5></td></tr></table>\n";
return $str;
}
function print_menu2($key, $no)
{
global $menu, $auth_menu, $is_admin, $auth, $g4;
$str = "";
for($i=1; $i<count($menu[$key]); $i++)
{
if ($is_admin != "super" && (!array_key_exists($menu[$key][$i][0],$auth) || !strstr($auth[$menu[$key][$i][0]], "r")))
continue;
if ($menu[$key][$i][0] == "-")
$str .= "<tr><td class=bg_line{$no}></td></tr>";
else
{
$span1 = $span2 = "";
if (isset($menu[$key][$i][3]))
{
$span1 = "<span style='{$menu[$key][$i][3]}'>";
$span2 = "</span>";
}
$str .= "<tr><td class=bg_menu{$no}>";
if ($no == 2)
$str .= "&nbsp;&nbsp;<img src='{$g4[admin_path]}/img/icon.gif' align=absmiddle> ";
$str .= "<a href='{$menu[$key][$i][2]}' style='color:#555500;'>{$span1}{$menu[$key][$i][1]}{$span2}</a></td></tr>";
$auth_menu[$menu[$key][$i][0]] = $menu[$key][$i][1];
}
}
return $str;
}
?>
<script type="text/javascript">
if (!g4_is_ie) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var tempX = 0;
var tempY = 0;
var prevdiv = null;
var timerID = null;
function getMouseXY(e)
{
if (g4_is_ie) { // grab the x-y pos.s if browser is IE
tempX = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
} else { // grab the x-y pos.s if browser is NS
tempX = e.pageX;
tempY = e.pageY;
}
if (tempX < 0) {tempX = 0;}
if (tempY < 0) {tempY = 0;}
return true;
}
function imageview(id, w, h)
{
menu(id);
var el_id = document.getElementById(id);
//submenu = eval(name+".style");
submenu = el_id.style;
submenu.left = tempX - ( w + 11 );
submenu.top = tempY - ( h / 2 );
selectBoxVisible();
if (el_id.style.display != 'none')
selectBoxHidden(id);
}
function help(id, left, top)
{
menu(id);
var el_id = document.getElementById(id);
//submenu = eval(name+".style");
submenu = el_id.style;
submenu.left = tempX - 50 + left;
submenu.top = tempY + 15 + top;
selectBoxVisible();
if (el_id.style.display != 'none')
selectBoxHidden(id);
}
// TEXTAREA 사이즈 변경
function textarea_size(fld, size)
{
var rows = parseInt(fld.rows);
rows += parseInt(size);
if (rows > 0) {
fld.rows = rows;
}
}
</script>
<script type="text/javascript" src="<?=$g4['path']?>/js/common.js"></script>
<script type="text/javascript" src="<?=$g4['path']?>/js/sideview.js"></script>
<script type="text/javascript">
var save_layer = null;
function layer_view(link_id, menu_id, opt, x, y)
{
var link = document.getElementById(link_id);
var menu = document.getElementById(menu_id);
//for (i in link) { document.write(i + '<br/>'); } return;
if (save_layer != null)
{
save_layer.style.display = "none";
selectBoxVisible();
}
if (link_id == '')
return;
if (opt == 'hide')
{
menu.style.display = 'none';
selectBoxVisible();
}
else
{
x = parseInt(x);
y = parseInt(y);
menu.style.left = get_left_pos(link) + x;
menu.style.top = get_top_pos(link) + link.offsetHeight + y;
menu.style.display = 'block';
}
save_layer = menu;
}
</script>
<link rel="stylesheet" href="<?=$g4['admin_path']?>/admin.style.css" type="text/css">
<style>
.bg_menu1 { height:22px;
padding-left:15px;
padding-right:15px; }
.bg_line1 { height:1px; background-color:#EFCA95; }
.bg_menu2 { height:22px;
padding-left:25px; }
.bg_line2 { background-image:url('<?=$g4['admin_path']?>/img/dot.gif'); height:3px; }
.dot {color:#D6D0C8;border-style:dotted;}
#csshelp1 { border:0px; background:#FFFFFF; padding:6px; }
#csshelp2 { border:2px solid #BDBEC6; padding:0px; }
#csshelp3 { background:#F9F9F9; padding:6px; width:200px; color:#222222; line-height:120%; text-align:left; }
</style>
<body leftmargin=0 topmargin=0>
<a name='gnuboard4_admin_head'></a>
<table width=1004 cellpadding=0 cellspacing=0 border=0>
<colgroup width=180>
<colgroup>
<tr bgcolor=#E3DCD2 height=70>
<td colspan=2 onmouseover="layer_view('','','','','')"><a href='<?=$g4['admin_path']?>/'><img src='<?=$g4['admin_path']?>/img/logo.gif' border=0></a></td>
<td>
<?
foreach($amenu as $key=>$value)
{
$href1 = $href2 = "";
if ($menu["menu{$key}"][0][2])
{
$href1 = "<a href='".$menu["menu{$key}"][0][2]."'>";
$href2 = "</a>";
}
echo "{$href1}<img src='$g4[admin_path]/img/menu{$key}.gif' border=0 id='id_menu{$key}' onmouseover=\"layer_view('id_menu{$key}', 'menu_menu{$key}', 'view', -2, 5);\">{$href2}&nbsp; ";
echo print_menu1("menu{$key}", 1);
}
?>
</td>
</tr>
<tr><td colspan=3 bgcolor=#C3BBB1 height=1></td></tr>
<tr><td colspan=3 bgcolor=#E5E5E5 height=2></td></tr>
<tr onmouseover="layer_view('','','','','')">
<td><a href='<?=$g4['path']?>/'><img src='<?=$g4['admin_path']?>/img/home.gif' border=0></a><a href='<?=$g4['bbs_path']?>/logout.php'><img src='<?=$g4['admin_path']?>/img/logout.gif' border=0></a></td>
<td rowspan=2 width=1 bgcolor=#DBDBDB></td>
<td bgcolor=#F8F8F8 align=right>
<img src='<?=$g4['admin_path']?>/img/navi_icon.gif' align=absmiddle>
&nbsp;<a href='<?=$g4['admin_path']?>/'>Admin</a> >
<?
$tmp_menu = "";
if (isset($sub_menu))
$tmp_menu = substr($sub_menu, 0, 3);
if (isset($menu["menu{$tmp_menu}"][0][1]))
{
if ($menu["menu{$tmp_menu}"][0][2])
{
echo "<a href='".$menu["menu{$tmp_menu}"][0][2]."'>";
echo $menu["menu{$tmp_menu}"][0][1];
echo "</a> > ";
}
else
echo $menu["menu{$tmp_menu}"][0][1]." > ";
}
?>
<?=$g4['title']?> <span class=small>: <?=$member['mb_id']?>님</span>&nbsp;&nbsp;</td>
</tr>
<tr onmouseover="layer_view('','','','','')">
<td valign=top>
<table width=180 cellpadding=0 cellspacing=0>
<?
echo "<tr><td><img src='$g4[admin_path]/img/title_menu{$tmp_menu}.gif'></td></tr>";
echo print_menu2("menu{$tmp_menu}", 2);
?>
</table><br>
</td>
<td valign=top style='padding:10px;'>

46
adm/admin.js Normal file
View File

@ -0,0 +1,46 @@
function check_all(f)
{
var chk = document.getElementsByName("chk[]");
for (i=0; i<chk.length; i++)
chk[i].checked = f.chkall.checked;
}
function btn_check(f, act)
{
if (act == "update") // 선택수정
{
f.action = list_update_php;
str = "수정";
}
else if (act == "delete") // 선택삭제
{
f.action = list_delete_php;
str = "삭제";
}
else
return;
var chk = document.getElementsByName("chk[]");
var bchk = false;
for (i=0; i<chk.length; i++)
{
if (chk[i].checked)
bchk = true;
}
if (!bchk)
{
alert(str + "할 자료를 하나 이상 선택하세요.");
return;
}
if (act == "delete")
{
if (!confirm("선택한 자료를 정말 삭제 하시겠습니까?"))
return;
}
f.submit();
}

334
adm/admin.lib.php Normal file
View File

@ -0,0 +1,334 @@
<?
if (!defined("_GNUBOARD_")) exit;
/*
// 081022 : CSRF 방지를 위해 코드를 작성했으나 효과가 없어 주석처리 함
if (!get_session("ss_admin")) {
set_session("ss_admin", true);
goto_url(".");
}
*/
// 스킨경로를 얻는다
function get_skin_dir($skin, $len='')
{
global $g4;
$result_array = array();
$dirname = "$g4[path]/skin/$skin/";
$handle = opendir($dirname);
while ($file = readdir($handle))
{
if($file == "."||$file == "..") continue;
if (is_dir($dirname.$file)) $result_array[] = $file;
}
closedir($handle);
sort($result_array);
return $result_array;
}
// 회원 삭제
function member_delete($mb_id)
{
global $config;
global $g4;
$sql = " select mb_name, mb_nick, mb_ip, mb_recommend, mb_memo, mb_level from $g4[member_table] where mb_id= '$mb_id' ";
$mb = sql_fetch($sql);
if ($mb[mb_recommend]) {
$row = sql_fetch(" select count(*) as cnt from $g4[member_table] where mb_id = '".addslashes($mb[mb_recommend])."' ");
if ($row[cnt])
insert_point($mb[mb_recommend], $config[cf_recommend_point] * (-1), "{$mb_id}님의 회원자료 삭제로 인한 추천인 포인트 반환", '@member', $mb[mb_recommend], "{$mb_id} 추천인 삭제");
}
// 회원자료는 정보만 없앤 후 아이디는 보관하여 다른 사람이 사용하지 못하도록 함 : 061025
if ($mb[mb_level] > 1) {
$sql = " update $g4[member_table]
set mb_jumin = '',
mb_password = '',
mb_level = '1',
mb_email = '',
mb_homepage = '',
mb_password_q = '',
mb_password_a = '',
mb_tel = '',
mb_hp = '',
mb_zip1 = '',
mb_zip2 = '',
mb_addr1 = '',
mb_addr2 = '',
mb_birth = '',
mb_sex = '',
mb_signature = '',
mb_memo = '".date("Ymd",$g4['server_time'])." 삭제함\n\n$mb[mb_memo]',
mb_leave_date = '".date("Ymd",$g4['server_time'])."'
where mb_id = '$mb_id' ";
//echo $sql; exit;
sql_query($sql);
}
/*
// 회원 자료 삭제
sql_query(" delete from $g4[member_table] where mb_id = '$mb_id' ");
// 삭제된 자료를 또 삭제하면 완전 삭제함
if ($mb[mb_nick] != '[삭제됨]')
{
// 다른 사람이 이 회원아이디를 사용하지 못하도록 아이디만 생성해 놓습니다.
// 게시판에서 회원아이디는 삭제하지 않기 때문입니다.
sql_query(" insert into $g4[member_table] set mb_id = '$mb_id', mb_name='$mb[mb_name]', mb_nick='[삭제됨]', mb_ip='$mb[mb_ip]', mb_datetime = '$g4[time_ymdhis]' ");
}
// 포인트 테이블에서 삭제
sql_query(" delete from $g4[point_table] where mb_id = '$mb_id' ");
// 그룹접근가능 삭제
sql_query(" delete from $g4[group_member_table] where mb_id = '$mb_id' ");
// 쪽지 삭제
sql_query(" delete from $g4[memo_table] where me_recv_mb_id = '$mb_id' or me_send_mb_id = '$mb_id' ");
// 스크랩 삭제
sql_query(" delete from $g4[scrap_table] where mb_id = '$mb_id' ");
// 관리권한 삭제
sql_query(" delete from $g4[auth_table] where mb_id = '$mb_id' ");
// 그룹관리자인 경우 그룹관리자를 공백으로
sql_query(" update $g4[group_table] set gr_admin = '' where gr_admin = '$mb_id' ");
// 게시판관리자인 경우 게시판관리자를 공백으로
sql_query(" update $g4[board_table] set bo_admin = '' where bo_admin = '$mb_id' ");
// 아이콘 삭제
@unlink("$g4[path]/data/member/".substr($mb_id,0,2)."/$mb_id.gif");
*/
}
// 회원권한을 SELECT 형식으로 얻음
function get_member_level_select($name, $start_id=0, $end_id=10, $selected='', $event='')
{
global $g4;
$str = "<select name='$name' $event>";
for ($i=$start_id; $i<=$end_id; $i++)
{
$str .= "<option value='$i'";
if ($i == $selected)
$str .= " selected";
$str .= ">$i</option>";
}
$str .= "</select>";
return $str;
}
// 회원아이디을 SELECT 형식으로 얻음
function get_member_id_select($name, $level, $selected='', $event='')
{
global $g4;
$sql = " select mb_id from $g4[member_table] where mb_level >= '$level' ";
$result = sql_query($sql);
$str = "<select name='$name' $event><option value=''>선택안함";
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$str .= "<option value='$row[mb_id]'";
if ($row[mb_id] == $selected) $str .= " selected";
$str .= ">$row[mb_id]</option>";
}
$str .= "</select>";
return $str;
}
// 권한 검사
function auth_check($auth, $attr)
{
global $is_admin;
if ($is_admin == "super") return;
if (!trim($auth))
alert("이 메뉴에는 접근 권한이 없습니다.\\n\\n접근 권한은 최고관리자만 부여할 수 있습니다.");
$attr = strtolower($attr);
if (!strstr($auth, $attr)) {
if ($attr == "r")
alert("읽을 권한이 없습니다.");
else if ($attr == "w")
alert("입력, 추가, 생성, 수정 권한이 없습니다.");
else if ($attr == "d")
alert("삭제 권한이 없습니다.");
else
alert("속성이 잘못 되었습니다.");
}
}
// 텍스트에리어 늘리기, 줄이기
function textarea_size($fld)
{
global $g4;
$size = 10;
$s = "<table cellpadding=2 cellspacing=0 border=0 width=100%><tr><td align=right>";
$s .= "<span onclick=\"javascript:textarea_size(document.getElementById('$fld'), {$size})\"><img src='$g4[admin_path]/img/btn_up.gif' border=0 align=absmiddle></span> ";
$s .= "<span onclick=\"javascript:textarea_size(document.getElementById('$fld'), ".$size*(-1).")\"><img src='$g4[admin_path]/img/btn_down.gif' border=0 align=absmiddle></span>";
$s .= "&nbsp;&nbsp;</td></tr></table>";
return $s;
}
// 작업아이콘 출력
function icon($act, $link="", $target="_parent")
{
global $g4;
$img = array("입력"=>"insert", "추가"=>"insert", "생성"=>"insert", "수정"=>"modify", "삭제"=>"delete", "이동"=>"move", "그룹"=>"move", "보기"=>"view", "미리보기"=>"view", "복사"=>"copy");
$icon = "<img src='{$g4[admin_path]}/img/icon_{$img[$act]}.gif' border=0 align=absmiddle title='$act' width=22 height=21>";
if ($link)
//$s = "<a href=\"$link\" target=\"$target\">$icon</a>";
$s = "<a href=\"$link\">$icon</a>";
else
$s = $icon;
return $s;
}
// rm -rf 옵션 : exec(), system() 함수를 사용할 수 없는 서버 또는 win32용 대체
// www.php.net 참고 : pal at degerstrom dot com
function rm_rf($file)
{
if (file_exists($file)) {
@chmod($file,0777);
if (is_dir($file)) {
$handle = opendir($file);
while($filename = readdir($handle)) {
if ($filename != "." && $filename != "..")
rm_rf("$file/$filename");
}
closedir($handle);
rmdir($file);
} else
unlink($file);
}
}
function help($help="", $left=0, $top=0)
{
global $g4;
static $idx = 0;
$idx++;
$help = preg_replace("/\n/", "<br>", $help);
$str = "<img src='$g4[admin_path]/img/icon_help.gif' border=0 width=15 height=15 align=absmiddle onclick=\"help('help$idx', $left, $top);\" style='cursor:hand;'>";
$str .= "<div id='help$idx' style='position:absolute; display:none; z-index:9999;'>";
$str .= "<div id='csshelp1'><div id='csshelp2'><div id='csshelp3'>$help</div></div></div>";
$str .= "</div>";
return $str;
}
function subtitle($title, $more="")
{
global $g4;
$s = "<table width=100% cellpadding=0 cellspacing=0><tr><td width=80% align=left><table border='0' cellpadding='0' cellspacing='1'><tr><td height='24'><img src='$g4[admin_path]/img/icon_title.gif' width=20 height=9> <font color='#525252'><b>$title</b></font> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr></table><table width=100% cellpadding=0 cellspacing=0><tr><td height=1></td></tr></table></td><td width=20% align=right>";
if ($more)
$s .= "<a href='$more'><img src='$g4[admin_path]/img/icon_more.gif' width='43' height='11' border=0 align=absmiddle></a>";
$s .= "</td></tr></table>\n";
return $s;
}
// 출력순서
function order_select($fld, $sel="")
{
$s = "<select name='$fld'>";
for ($i=1; $i<=100; $i++) {
$s .= "<option value='$i' ";
if ($sel) {
if ($i == $sel) {
$s .= "selected";
}
} else {
if ($i == 50) {
$s .= "selected";
}
}
$s .= ">$i</option>";
}
$s .= "</select>\n";
return $s;
}
// 접근 권한 검사
if (!$member['mb_id'])
{
//alert("로그인 하십시오.", "$g4[bbs_path]/login.php?url=" . urlencode("$_SERVER[PHP_SELF]?w=$w&mb_id=$mb_id"));
alert("로그인 하십시오.", "$g4[bbs_path]/login.php?url=" . urlencode("$_SERVER[PHP_SELF]?$_SERVER[QUERY_STRING]"));
}
else if ($is_admin != "super")
{
$auth = array();
$sql = " select au_menu, au_auth from $g4[auth_table] where mb_id = '$member[mb_id]' ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++)
{
$auth[$row[au_menu]] = $row[au_auth];
}
if (!$i)
{
alert("최고관리자 또는 관리권한이 있는 회원만 접근 가능합니다.", $g4[path]);
}
}
// 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.
$admin_key = md5($member[mb_datetime] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
if (get_session("ss_mb_key") !== $admin_key) {
session_destroy();
include_once("$g4[path]/lib/mailer.lib.php");
// 메일 알림
mailer($member['mb_nick'], $member['mb_email'], $member['mb_email'], "XSS 공격 알림", "{$_SERVER['REMOTE_ADDR']} 아이피로 XSS 공격이 있었습니다.\n\n관리자 권한을 탈취하려는 접근이므로 주의하시기 바랍니다.\n\n해당 아이피는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.\n\n$g4[url]", 0);
alert_close("정상적으로 로그인하여 접근하시기 바랍니다.");
}
@ksort($auth);
// 가변 메뉴
unset($auth_menu);
unset($menu);
unset($amenu);
$tmp = dir($g4['admin_path']);
while ($entry = $tmp->read())
{
//if (!preg_match("/^admin.menu([0-9]{3}).php/", $entry, $m))
//if (!preg_match("/^admin.menu([0-9]{3}).*\.php/", $entry, $m))
if (!preg_match("/^admin.menu([0-9]{3}).*\.php$/", $entry, $m))
continue; // 파일명이 menu 으로 시작하지 않으면 무시한다.
$amenu[$m[1]] = $entry;
include_once($g4['admin_path']."/".$entry);
}
@ksort($amenu);
$qstr = "";
if (isset($sst)) $qstr .= "&sst=$sst";
if (isset($sod)) $qstr .= "&sod=$sod";
if (isset($sfl)) $qstr .= "&sfl=$sfl";
if (isset($stx)) $qstr .= "&stx=$stx";
if (isset($page)) $qstr .= "&page=$page";
//$qstr = "sst=$sst&sod=$sod&sfl=$sfl&stx=$stx&page=$page";
?>

17
adm/admin.menu100.php Normal file
View File

@ -0,0 +1,17 @@
<?
$menu["menu100"] = array (
array("100000", "환경설정", ""),
array("", "기본환경설정", "$g4[admin_path]/config_form.php"),
array("", "관리권한설정", "$g4[admin_path]/auth_list.php"),
array("100300", "메일 테스트", "$g4[admin_path]/sendmail_test.php"),
array("-"),
array("100400", "버전정보", "$g4[admin_path]/version.php"),
array("100500", "phpinfo()", "$g4[admin_path]/phpinfo.php"),
array("-"),
array("100600", "업그레이드", "$g4[admin_path]/upgrade.php"),
array("100700", "복구/최적화", "$g4[admin_path]/repair.php"),
array("100800", "세션 삭제", "$g4[admin_path]/session_delete.php"),
array("-"),
array("", "phpMyAdmin", "$g4[path]/$g4[phpmyadmin_dir]")
);
?>

12
adm/admin.menu200.php Normal file
View File

@ -0,0 +1,12 @@
<?
$menu["menu200"] = array (
array("200000", "회원관리", ""),
array("200100", "회원관리", "$g4[admin_path]/member_list.php"),
array("200200", "포인트관리", "$g4[admin_path]/point_list.php"),
array("200300", "회원메일발송", "$g4[admin_path]/mail_list.php"),
array("-"),
array("200800", "접속자현황", "$g4[admin_path]/visit_list.php"),
array("-"),
array("200900", "투표관리", "$g4[admin_path]/poll_list.php")
);
?>

10
adm/admin.menu300.php Normal file
View File

@ -0,0 +1,10 @@
<?
$menu["menu300"] = array (
array("300000", "게시판관리", ""),
array("300100", "게시판관리", "$g4[admin_path]/board_list.php"),
array("300200", "게시판그룹관리", "$g4[admin_path]/boardgroup_list.php"),
array("-"),
array("300300", "인기검색어관리", "$g4[admin_path]/popular_list.php"),
array("300400", "인기검색어순위", "$g4[admin_path]/popular_rank.php"),
);
?>

28
adm/admin.style.css Normal file
View File

@ -0,0 +1,28 @@
a:link, a:visited, a:active { text-decoration:none; color:#CD7444; }
a:hover { text-decoration:underline; color:#C15B27; }
.title { font-size:9pt; font-family:; font-weight:bold; color:#616161; }
.btn1 { background-color:#FBF8EE; }
.col1 { color:#616161; }
.col2 { color:#868686; }
.pad1 { padding:5px 10px 5px 10px; }
.pad2 { padding:5px 0px 5px 0px; }
.bgcol1 { background-color:#FBF8EE; padding:5px; }
.bgcol2 { background-color:#F5F5F5; padding:5px; }
.line1 { background-color:#CCCCCC; height:2px; }
.line2 { background-color:#CCCCCC; height:1px; }
.list0 { background-color:#FFFFFF; }
.list1 { background-color:#F8F8F8; }
.bold { font-weight:bold; }
.center { text-align:center; }
.right { text-align:right; }
.w99 { width:99%; }
.ht { height:30px; }

15
adm/admin.tail.php Normal file
View File

@ -0,0 +1,15 @@
<?
if (!defined("_GNUBOARD_")) exit;
?>
</td>
</tr>
<tr><td colspan=3 height=22 bgcolor=#F2F2F2 align=right><a href='#gnuboard4_admin_head'><img src='<?=$g4['admin_path']?>/img/top.gif' border=0></a>&nbsp;</td></tr>
</table><br><br>
<!-- <p>실행시간 : <?=get_microtime() - $begin_time;?> -->
<script type='text/javascript' src='<?=$g4['admin_path']?>/admin.js'></script>
<?
include_once("$g4[path]/tail.sub.php");
?>

222
adm/auth_list.php Normal file
View File

@ -0,0 +1,222 @@
<?
$sub_menu = "100200";
include_once("./_common.php");
if ($is_admin != "super")
alert("최고관리자만 접근 가능합니다.");
$token = get_token();
$sql_common = " from $g4[auth_table] a left join $g4[member_table] b on (a.mb_id=b.mb_id) ";
$sql_search = " where (1) ";
if ($stx) {
$sql_search .= " and ( ";
switch ($sfl) {
default :
$sql_search .= " ($sfl like '%$stx%') ";
break;
}
$sql_search .= " ) ";
}
if (!$sst) {
$sst = "a.mb_id, au_menu";
$sod = "";
}
$sql_order = " order by $sst $sod ";
$sql = " select count(*) as cnt
$sql_common
$sql_search
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select *
$sql_common
$sql_search
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
$listall = "<a href='$_SERVER[PHP_SELF]' class=tt>처음</a>";
$g4[title] = "관리권한설정";
include_once("./admin.head.php");
$colspan = 5;
?>
<script type="text/javascript" src="<?=$g4[path]?>/js/sideview.js"></script>
<script type="text/javascript">
var list_update_php = "";
var list_delete_php = "auth_list_delete.php";
</script>
<table width=100%>
<form name=fsearch method=get>
<tr>
<td width=50% align=left>
<?=$listall?> (건수 : <?=number_format($total_count)?>)
</td>
<td width=50% align=right>
<select name=sfl class=cssfl>
<option value='a.mb_id'>회원아이디</option>
</select>
<input type=text name=stx class=ed required itemname='검색어' value='<?=$stx?>'>
<input type=image src='<?=$g4[admin_path]?>/img/btn_search.gif' align=absmiddle></td>
</tr>
</form>
</table>
<form name=fauthlist method=post>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=page value='<?=$page?>'>
<input type=hidden name=token value='<?=$token?>'>
<table width=100% cellpadding=0 cellspacing=0>
<colgroup width=30>
<colgroup width=120>
<colgroup width=150>
<colgroup width=''>
<colgroup width=100>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td><input type=checkbox name=chkall value='1' onclick='check_all(this.form)'></td>
<td><?=subject_sort_link('a.mb_id')?>회원아이디</a></td>
<td><?=subject_sort_link('mb_nick')?>별명</a></td>
<td>메뉴</td>
<td>권한</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$mb_nick = get_sideview($row[mb_id], $row[mb_nick], $row[mb_email], $row[mb_homepage]);
// 메뉴번호가 바뀌는 경우에 현재 없는 저장된 메뉴는 삭제함
if (!isset($auth_menu[$row[au_menu]]))
{
sql_query(" delete from $g4[auth_table] where au_menu = '$row[au_menu]' ");
continue;
}
$list = $i%2;
echo "
<input type=hidden name=mb_id[$i] value='$row[mb_id]'>
<input type=hidden name=au_menu[$i] value='$row[au_menu]'>
<tr class='list$list col1 ht center'>
<td><input type=checkbox name=chk[] value='$i'></td>
<td><a href='?sfl=a.mb_id&stx=$row[mb_id]'>$row[mb_id]</a></td>
<td>$mb_nick</td>
<td align=left>&nbsp; [$row[au_menu]] {$auth_menu[$row[au_menu]]}</td>
<td>$row[au_auth]</td>
</tr>";
}
if ($i==0)
echo "<tr><td colspan='$colspan' height=100 align=center bgcolor='#FFFFFF'>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
$pagelist = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&page=");
echo "<table width=100% cellpadding=3 cellspacing=1>";
echo "<tr><td width=50%>";
echo "<input type=button class='btn1' value='선택삭제' onclick=\"btn_check(this.form, 'delete')\">";
echo "</td>";
echo "<td width=50% align=right>$pagelist</td></tr></table>\n";
if ($stx)
echo "<script type='text/javascript'>document.fsearch.sfl.value = '$sfl';</script>\n";
if (strstr($sfl, "mb_id"))
$mb_id = $stx;
else
$mb_id = "";
?>
</form>
<script type='text/javascript'> document.fsearch.stx.focus(); </script>
<?$colspan=5?>
<p>
<form name=fauthlist2 method=post onsubmit="return fauthlist2_submit(this);" autocomplete="off">
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=page value='<?=$page?>'>
<input type=hidden name=token value='<?=$token?>'>
<table width='100%' cellpadding=0 cellspacing=0>
<colgroup width=150>
<colgroup width=''>
<colgroup width=150>
<colgroup width=120>
<colgroup width=100>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>회원아이디</td>
<td>접근가능메뉴</td>
<td>권한</td>
<td>관리자패스워드</td>
<td>입력</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<tr class='ht center'>
<td><input type=text class=ed name=mb_id required itemname='회원아이디' value='<?=$mb_id?>'></td>
<td>
<select name=au_menu required itemname='접근가능메뉴'>
<option value=''>-- 선택하세요
<?
foreach($auth_menu as $key=>$value)
{
if (!(substr($key, -3) == "000" || $key == "-" || !$key))
echo "<option value='$key'>[$key] $value";
}
?>
</select>
</td>
<td>
<table width=210 align=center>
<tr align=center>
<td width=33%><input type=checkbox name='r' value='r' checked></td>
<td width=33%><input type=checkbox name='w' value='w'></td>
<td width=33%><input type=checkbox name='d' value='d'></td>
</tr>
<tr align=center>
<td>r<br>(읽기)</td>
<td>w<br>(입력,수정)</td>
<td>d<br>(삭제)</td>
</tr>
</table></td>
<td><input type=password class=ed name=admin_password required itemname='관리자 패스워드'></td>
<td><input type=submit class=btn1 value=' 확 인 '></td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
</table>
</form>
<script type="text/javascript">
function fauthlist2_submit(f)
{
f.action = "./auth_update.php";
return true;
}
</script>
<?
include_once ("./admin.tail.php");
?>

22
adm/auth_list_delete.php Normal file
View File

@ -0,0 +1,22 @@
<?
$sub_menu = "100200";
include_once("./_common.php");
check_demo();
if ($is_admin != "super")
alert("최고관리자만 접근 가능합니다.");
check_token();
for ($i=0; $i<count($chk); $i++)
{
// 실제 번호를 넘김
$k = $chk[$i];
$sql = " delete from $g4[auth_table] where mb_id = '{$_POST['mb_id'][$k]}' and au_menu = '{$_POST['au_menu'][$k]}' ";
sql_query($sql);
}
goto_url("./auth_list.php?$qstr");
?>

34
adm/auth_update.php Normal file
View File

@ -0,0 +1,34 @@
<?
$sub_menu = "100200";
include_once("./_common.php");
if ($is_admin != "super")
alert("최고관리자만 접근 가능합니다.");
$mb = get_member($mb_id);
if (!$mb[mb_id])
alert("존재하는 회원아이디가 아닙니다.");
check_token();
if ($member[mb_password] != sql_password($_POST['admin_password'])) {
alert("패스워드가 다릅니다.");
}
$sql = " insert into $g4[auth_table]
set mb_id = '$_POST[mb_id]',
au_menu = '$_POST[au_menu]',
au_auth = '$_POST[r],$_POST[$w],$_POST[$d]' ";
$result = sql_query($sql, FALSE);
if (!$result) {
$sql = " update $g4[auth_table]
set au_auth = '$_POST[r],$_POST[$w],_POST[$d]'
where mb_id = '$_POST[mb_id]'
and au_menu = '$_POST[au_menu]' ";
sql_query($sql);
}
//sql_query(" OPTIMIZE TABLE `$g4[auth_table]` ");
goto_url("./auth_list.php?$qstr");
?>

66
adm/board_copy.php Normal file
View File

@ -0,0 +1,66 @@
<?
$sub_menu = "300100";
include_once("./_common.php");
auth_check($auth[$sub_menu], "w");
$token = get_token();
$g4[title] = "게시판 복사";
include_once("$g4[path]/head.sub.php");
?>
<link rel="stylesheet" href="./admin.style.css" type="text/css">
<form name="fboardcopy" method='post' onsubmit="return fboardcopy_check(this);" autocomplete="off">
<input type="hidden" name="bo_table" value="<?=$bo_table?>">
<input type="hidden" name="token" value="<?=$token?>">
<table width=100% cellpadding=0 cellspacing=0>
<colgroup width=30% class='col1 pad1 bold right'>
<colgroup width=70% class='col2 pad2'>
<tr><td colspan=2 height=5></td></tr>
<tr>
<td colspan=2 class=title align=left><img src='<?=$g4[admin_path]?>/img/icon_title.gif'> <?=$g4[title]?></td>
</tr>
<tr><td colspan=2 class='line1'></td></tr>
<tr class='ht'>
<td>원본 테이블</td>
<td><?=$bo_table?></td>
</tr>
<tr class='ht'>
<td>복사할 TABLE</td>
<td><input type=text class=ed name="target_table" size="20" maxlength="20" required alphanumericunderline itemname="TABLE"> 영문자, 숫자, _ 만 가능 (공백없이)</td>
</tr>
<tr class='ht'>
<td>게시판 제목</td>
<td><input type=text class=ed name='target_subject' size=60 maxlength=120 required itemname='게시판 제목' value='[복사본] <?=$board[bo_subject]?>'></td>
</tr>
<tr class='ht'>
<td>복사 유형</td>
<td>
<input type="radio" name="copy_case" value="schema_only" checked>구조만
<input type="radio" name="copy_case" value="schema_data_both">구조와 데이터
</td>
</tr>
<tr height=40>
<td></td>
<td>
<input type="submit" value=" 복 사 " class=btn1>&nbsp;
<input type="button" value="창닫기" onclick="window.close();" class=btn1>
</td>
</tr>
</table>
</form>
<script type='text/javascript'>
function fboardcopy_check(f)
{
f.action = "./board_copy_update.php";
return true;
}
</script>
<?
include_once("$g4[path]/tail.sub.php");
?>

209
adm/board_copy_update.php Normal file
View File

@ -0,0 +1,209 @@
<?
$sub_menu = "300100";
include_once("./_common.php");
auth_check($auth[$sub_menu], "w");
$target_table = mysql_real_escape_string(trim($_POST['target_table']));
$target_subject = mysql_real_escape_string(trim($_POST['target_subject']));
if (!preg_match("/[A-Za-z0-9_]{1,20}/", $target_table))
{
alert("게시판 TABLE명은 공백없이 영문자, 숫자, _ 만 사용 가능합니다. (20자 이내)");
}
$row = sql_fetch(" select count(*) as cnt from $g4[board_table] where bo_table = '$target_table' ");
if ($row[cnt])
alert("{$target_table}은(는) 이미 존재하는 게시판 TABLE 입니다.\\n\\n복사할 TABLE로 사용할 수 없습니다.");
check_token();
// 게시판 테이블 생성
$sql = get_table_define($g4[write_prefix] . $bo_table);
$sql = str_replace($g4[write_prefix] . $bo_table, $g4[write_prefix] . $target_table, $sql);
sql_query($sql);
$file_copy = array();
// 게시판 정보
$sql = " insert into $g4[board_table]
set bo_table = '$target_table',
bo_subject = '$target_subject',
gr_id = '$board[gr_id]',
bo_admin = '$board[bo_admin]',
bo_list_level = '$board[bo_list_level]',
bo_read_level = '$board[bo_read_level]',
bo_write_level = '$board[bo_write_level]',
bo_reply_level = '$board[bo_reply_level]',
bo_comment_level = '$board[bo_comment_level]',
bo_upload_level = '$board[bo_upload_level]',
bo_download_level = '$board[bo_download_level]',
bo_html_level = '$board[bo_html_level]',
bo_link_level = '$board[bo_link_level]',
bo_trackback_level = '$board[bo_trackback_level]',
bo_count_modify = '$board[bo_count_modify]',
bo_count_delete = '$board[bo_count_delete]',
bo_read_point = '$board[bo_read_point]',
bo_write_point = '$board[bo_write_point]',
bo_comment_point = '$board[bo_comment_point]',
bo_download_point = '$board[bo_download_point]',
bo_use_category = '$board[bo_use_category]',
bo_category_list = '$board[bo_category_list]',
bo_disable_tags = '$board[bo_disable_tags]',
bo_use_secret = '$board[bo_use_secret]',
bo_use_dhtml_editor = '$board[bo_use_dhtml_editor]',
bo_use_sideview = '$board[bo_use_sideview]',
bo_use_comment = '$board[bo_use_comment]',
bo_use_good = '$board[bo_use_good]',
bo_use_nogood = '$board[bo_use_nogood]',
bo_use_signature = '$board[bo_use_signature]',
bo_use_ip_view = '$board[bo_use_ip_view]',
bo_use_trackback = '$board[bo_use_trackback]',
bo_use_list_view = '$board[bo_use_list_view]',
bo_use_list_content = '$board[bo_use_list_content]',
bo_table_width = '$board[bo_table_width]',
bo_subject_len = '$board[bo_subject_len]',
bo_page_rows = '$board[bo_page_rows]',
bo_new = '$board[bo_new]',
bo_hot = '$board[bo_hot]',
bo_image_width = '$board[bo_image_width]',
bo_skin = '$board[bo_skin]',
bo_include_head = '$board[bo_include_head]',
bo_include_tail = '$board[bo_include_tail]',
bo_content_head = '".addslashes($board['bo_content_head'])."',
bo_content_tail = '".addslashes($board['bo_content_tail'])."',
bo_insert_content = '".addslashes($board['bo_insert_content'])."',
bo_gallery_cols = '$board[bo_gallery_cols]',
bo_upload_size = '$board[bo_upload_size]',
bo_reply_order = '$board[bo_reply_order]',
bo_use_search = '$board[bo_use_search]',
bo_order_search = '$board[bo_order_search]',
bo_notice = '$board[bo_notice]',
bo_upload_count = '$board[bo_upload_count]',
bo_use_email = '$board[bo_use_email]',
bo_sort_field = '$board[bo_sort_field]',
bo_1_subj = '$board[bo_1_subj]',
bo_2_subj = '$board[bo_2_subj]',
bo_3_subj = '$board[bo_3_subj]',
bo_4_subj = '$board[bo_4_subj]',
bo_5_subj = '$board[bo_5_subj]',
bo_6_subj = '$board[bo_6_subj]',
bo_7_subj = '$board[bo_7_subj]',
bo_8_subj = '$board[bo_8_subj]',
bo_9_subj = '$board[bo_9_subj]',
bo_10_subj = '$board[bo_10_subj]',
bo_1 = '$board[bo_1]',
bo_2 = '$board[bo_2]',
bo_3 = '$board[bo_3]',
bo_4 = '$board[bo_4]',
bo_5 = '$board[bo_5]',
bo_6 = '$board[bo_6]',
bo_7 = '$board[bo_7]',
bo_8 = '$board[bo_8]',
bo_9 = '$board[bo_9]',
bo_10 = '$board[bo_10]' ";
sql_query($sql);
// 게시판 폴더 생성
@mkdir("$g4[path]/data/file/$target_table", 0707);
@chmod("$g4[path]/data/file/$target_table", 0707);
// 디렉토리에 있는 파일의 목록을 보이지 않게 한다.
$board_path = "$g4[path]/data/file/$target_table";
$file = $board_path . "/index.php";
$f = @fopen($file, "w");
@fwrite($f, "");
@fclose($f);
@chmod($file, 0606);
$copy_file = 0;
if ($copy_case == "schema_data_both")
{
$d = dir("$g4[path]/data/file/$bo_table");
while ($entry = $d->read())
{
if ($entry == "." || $entry == "..") continue;
/*
@copy("$g4[path]/data/file/$bo_table/$entry", "$g4[path]/data/file/$target_table/$entry");
@chmod("$g4[path]/data/file/$target_table/$entry", 0707);
$copy_file++;
*/
// 김선용 201007 :
if(is_dir("$g4[path]/data/file/$bo_table/$entry")){
$dd = dir("$g4[path]/data/file/$bo_table/$entry");
@mkdir("$g4[path]/data/file/$target_table/$entry", 0707);
@chmod("$g4[path]/data/file/$target_table/$entry", 0707);
while ($entry2 = $dd->read()) {
if ($entry2 == "." || $entry2 == "..") continue;
@copy("$g4[path]/data/file/$bo_table/$entry/$entry2", "$g4[path]/data/file/$target_table/$entry/$entry2");
@chmod("$g4[path]/data/file/$target_table/$entry/$entry2", 0707);
$copy_file++;
}
$dd->close();
}
else {
@copy("$g4[path]/data/file/$bo_table/$entry", "$g4[path]/data/file/$target_table/$entry");
@chmod("$g4[path]/data/file/$target_table/$entry", 0707);
$copy_file++;
}
}
$d->close();
// 글복사
$sql = " insert into $g4[write_prefix]$target_table select * from $g4[write_prefix]$bo_table ";
sql_query($sql);
// 게시글수 저장
$sql = " select bo_count_write, bo_count_comment from $g4[board_table] where bo_table = '$bo_table' ";
$row = sql_fetch($sql);
$sql = " update $g4[board_table] set bo_count_write = '$row[bo_count_write]', bo_count_comment = '$row[bo_count_comment]' where bo_table = '$target_table' ";
sql_query($sql);
// 05.05.24
// 파일테이블 복사
//$sql = " insert into $g4[board_file_table] select '$target_table', wr_id, bf_no, bf_source, bf_file, bf_download, bf_content from $g4[board_file_table] where bo_table = '$bo_table' ";
//sql_query($sql);
// 4.00.01
// 위의 코드는 같은 테이블명을 사용하였다는 오류가 발생함. (희한하네 ㅡㅡ;)
$sql = " select * from $g4[board_file_table] where bo_table = '$bo_table' ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
$file_copy[$i] = $row;
}
if (count($file_copy))
{
for ($i=0; $i<count($file_copy); $i++)
{
$sql = " insert into $g4[board_file_table]
set bo_table = '$target_table',
wr_id = '{$file_copy[$i][wr_id]}',
bf_no = '{$file_copy[$i][bf_no]}',
bf_source = '{$file_copy[$i][bf_source]}',
bf_file = '{$file_copy[$i][bf_file]}',
bf_download = '{$file_copy[$i][bf_download]}',
bf_content = '{$file_copy[$i][bf_content]}',
bf_filesize = '{$file_copy[$i][bf_filesize]}',
bf_width = '{$file_copy[$i][bf_width]}',
bf_height = '{$file_copy[$i][bf_height]}',
bf_type = '{$file_copy[$i][bf_type]}',
bf_datetime = '{$file_copy[$i][bf_datetime]}' ";
sql_query($sql, FALSE);
}
}
echo "<meta http-equiv='content-type' content='text/html; charset={$g4['charset']}'>";
echo "<script type='text/javascript'>";
echo "alert(\"게시판 복사 : {$bo_table} -> {$target_table}";
if ($copy_file)
echo "\\n\\n복사한 파일 : 총 {$copy_file}";
echo "\");";
echo "opener.document.location.reload();";
echo "</script>";
goto_url("./board_copy.php?bo_table=$bo_table&$qstr");
?>

31
adm/board_delete.inc.php Normal file
View File

@ -0,0 +1,31 @@
<?
// board_delete.php , boardgroup_delete.php 에서 include 하는 파일
if (!defined("_GNUBOARD_")) exit;
if (!defined("_BOARD_DELETE_")) exit; // 개별 페이지 접근 불가
// $tmp_bo_table 에는 $bo_table 값을 넘겨주어야 함
if (!$tmp_bo_table) { return; }
// 게시판 1개는 삭제 불가 (게시판 복사를 위해서)
//$row = sql_fetch(" select count(*) as cnt from $g4[board_table] ");
//if ($row[cnt] <= 1) { return; }
// 게시판 설정 삭제
sql_query(" delete from $g4[board_table] where bo_table = '$tmp_bo_table' ");
// 최신글 삭제
sql_query(" delete from $g4[board_new_table] where bo_table = '$tmp_bo_table' ");
// 스크랩 삭제
sql_query(" delete from $g4[scrap_table] where bo_table = '$tmp_bo_table' ");
// 파일 삭제
sql_query(" delete from $g4[board_file_table] where bo_table = '$tmp_bo_table' ");
// 게시판 테이블 DROP
sql_query(" drop table $g4[write_prefix]$tmp_bo_table ", FALSE);
// 게시판 폴더 전체 삭제
rm_rf("$g4[path]/data/file/$tmp_bo_table");
?>

28
adm/board_delete.php Normal file
View File

@ -0,0 +1,28 @@
<?
$sub_menu = "300100";
include_once("./_common.php");
check_demo();
if ($is_admin != "super")
alert("게시판 삭제는 최고관리자만 가능합니다.");
auth_check($auth[$sub_menu], "d");
check_token();
// _BOARD_DELETE_ 상수를 선언해야 board_delete.inc.php 가 정상 작동함
define("_BOARD_DELETE_", TRUE);
// include 전에 $bo_table 값을 반드시 넘겨야 함
$tmp_bo_table = mysql_real_escape_string(trim($_POST['bo_table']));
$sql = " select * from $g4[board_table] where bo_table = '$tmp_bo_table' ";
$row = sql_fetch($sql);
if (!$row) {
alert("게시판을 삭제할 수 없습니다.");
}
include_once ("./board_delete.inc.php");
goto_url("./board_list.php?$qstr&page=$page");
?>

645
adm/board_form.php Normal file
View File

@ -0,0 +1,645 @@
<?
$sub_menu = "300100";
include_once("./_common.php");
include_once ("$g4[path]/lib/cheditor4.lib.php");
auth_check($auth[$sub_menu], "w");
$token = get_token();
function b_draw($pos, $color='red') {
return "border-{$pos}-width:1px; border-{$pos}-color:{$color}; border-{$pos}-style:solid; ";
}
$sql = " select count(*) as cnt from $g4[group_table] ";
$row = sql_fetch($sql);
if (!$row[cnt])
alert("게시판그룹이 한개 이상 생성되어야 합니다.", "./boardgroup_form.php");
$html_title = "게시판";
if ($w == "") {
$html_title .= " 생성";
$bo_table_attr = "required alphanumericunderline";
$board[bo_count_delete] = '1';
$board[bo_count_modify] = '1';
$board[bo_read_point] = $config[cf_read_point];
$board[bo_write_point] = $config[cf_write_point];
$board[bo_comment_point] = $config[cf_comment_point];
$board[bo_download_point] = $config[cf_download_point];
$board[bo_gallery_cols] = '4';
$board[bo_table_width] = '97';
$board[bo_page_rows] = $config[cf_page_rows];
$board[bo_subject_len] = '60';
$board[bo_new] = '24';
$board[bo_hot] = '100';
$board[bo_image_width] = '600';
$board[bo_upload_count] = '2';
$board[bo_upload_size] = '1048576';
$board[bo_reply_order] = '1';
$board[bo_use_search] = '1';
$board[bo_skin] = 'basic';
$board[gr_id] = $gr_id;
$board[bo_disable_tags] = "script|iframe";
$board[bo_use_secret] = 0;
} else if ($w == "u") {
$html_title .= " 수정";
if (!$board[bo_table])
alert("존재하지 않은 게시판 입니다.");
if ($is_admin == "group") {
if ($member[mb_id] != $group[gr_admin])
alert("그룹이 틀립니다.");
}
$bo_table_attr = "readonly style='background-color:#dddddd'";
}
if ($is_admin != "super") {
$group = get_group($board[gr_id]);
$is_admin = is_admin($member[mb_id]);
}
$g4[title] = $html_title;
include_once ("./admin.head.php");
?>
<script src="<?=$g4[cheditor4_path]?>/cheditor.js"></script>
<?=cheditor1('bo_content_head', '100%', '200');?>
<?=cheditor1('bo_content_tail', '100%', '200');?>
<form name=fboardform method=post onsubmit="return fboardform_submit(this)" enctype="multipart/form-data">
<input type=hidden name="w" value="<?=$w?>">
<input type=hidden name="sfl" value="<?=$sfl?>">
<input type=hidden name="stx" value="<?=$stx?>">
<input type=hidden name="sst" value="<?=$sst?>">
<input type=hidden name="sod" value="<?=$sod?>">
<input type=hidden name="page" value="<?=$page?>">
<input type=hidden name="token" value="<?=$token?>">
<table width=100% cellpadding=0 cellspacing=0 border=0>
<colgroup width=5% class='left'>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=75% class='col2 pad2'>
<tr>
<td colspan=3 class=title align=left><img src='<?=$g4[admin_path]?>/img/icon_title.gif'> <?=$html_title?></td>
</tr>
<tr><td colspan=3 class='line1'></td></tr>
<tr class='ht'>
<td></td>
<td>TABLE</td>
<td><input type=text class=ed name=bo_table size=30 maxlength=20 <?=$bo_table_attr?> itemname='TABLE' value='<?=$board[bo_table] ?>'>
<?
if ($w == "")
echo "영문자, 숫자, _ 만 가능 (공백없이 20자 이내)";
else
echo "<a href='$g4[bbs_path]/board.php?bo_table=$board[bo_table]'><img src='$g4[admin_path]/img/icon_view.gif' border=0 align=absmiddle></a>";
?>
</td>
</tr>
<tr class='ht'>
<td></td>
<td>그룹</td>
<td>
<?=get_group_select('gr_id', $board[gr_id], "required itemname='그룹'");?>
<? if ($w=='u') { ?><a href="javascript:location.href='./board_list.php?sfl=a.gr_id&stx='+document.fboardform.gr_id.value;">동일그룹게시판목록</a><?}?></td>
</tr>
<tr class='ht'>
<td></td>
<td>게시판 제목</td>
<td>
<input type=text class=ed name=bo_subject size=60 maxlength=120 required itemname='게시판 제목' value='<?=get_text($board[bo_subject])?>'>
</td>
</tr>
<tr class='ht'>
<td></td>
<td>상단 이미지</td>
<td>
<input type=file name=bo_image_head class=ed size=60>
<?
if ($board[bo_image_head])
echo "<br><a href='$g4[path]/data/file/{$board['bo_table']}/$board[bo_image_head]' target='_blank'>$board[bo_image_head]</a> <input type=checkbox name='bo_image_head_del' value='$board[bo_image_head]'> 삭제";
?>
</td>
</tr>
<tr class='ht'>
<td></td>
<td>하단 이미지</td>
<td>
<input type=file name=bo_image_tail class=ed size=60>
<?
if ($board[bo_image_tail])
echo "<br><a href='$g4[path]/data/file/{$board['bo_table']}/$board[bo_image_tail]' target='_blank'>$board[bo_image_tail]</a> <input type=checkbox name='bo_image_tail_del' value='$board[bo_image_tail]'> 삭제";
?>
</td>
</tr>
<? if ($w == "u") { ?>
<tr class='ht'>
<td></td>
<td>카운트 조정</td>
<td>
<input type=checkbox name=proc_count value=1> 카운트를 조정합니다.
(현재 원글수 : <?=number_format($board[bo_count_write])?> , 현재 코멘트수 : <?=number_format($board[bo_count_comment])?>)
<?=help("게시판 목록에서 글의 번호가 맞지 않을 경우에 체크하십시오.")?>
</td>
</tr>
<? } ?>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td>
<input type=checkbox name=chk_admin value=1>
<?=help("같은 그룹에 속한 게시판의 설정을 동일하게 변경할 경우에 체크합니다.");?>
</td>
<td>게시판 관리자</td>
<td><input type=text class=ed name=bo_admin maxlength=20 value='<?=$board[bo_admin]?>'></td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td><input type=checkbox name=chk_list_level value=1></td>
<td>목록보기 권한</td>
<td>
<?=get_member_level_select('bo_list_level', 1, 10, $board[bo_list_level]) ?>
<?=help("권한 1은 비회원, 2 이상 회원입니다.\n권한은 10 이 가장 높습니다.", 50)?>
</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_read_level value=1></td>
<td>글읽기 권한</td>
<td><?=get_member_level_select('bo_read_level', 1, 10, $board[bo_read_level]) ?></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_write_level value=1></td>
<td>글쓰기 권한</td>
<td><?=get_member_level_select('bo_write_level', 1, 10, $board[bo_write_level]) ?></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_reply_level value=1></td>
<td>글답변 권한</td>
<td><?=get_member_level_select('bo_reply_level', 1, 10, $board[bo_reply_level]) ?></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_comment_level value=1></td>
<td>코멘트쓰기 권한</td>
<td><?=get_member_level_select('bo_comment_level', 1, 10, $board[bo_comment_level]) ?></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_link_level value=1></td>
<td>링크 권한</td>
<td><?=get_member_level_select('bo_link_level', 1, 10, $board[bo_link_level]) ?></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_upload_level value=1></td>
<td>업로드 권한</td>
<td><?=get_member_level_select('bo_upload_level', 1, 10, $board[bo_upload_level]) ?></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_download_level value=1></td>
<td>다운로드 권한</td>
<td><?=get_member_level_select('bo_download_level', 1, 10, $board[bo_download_level]) ?></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_html_level value=1></td>
<td>HTML 쓰기 권한</td>
<td><?=get_member_level_select('bo_html_level', 1, 10, $board[bo_html_level]) ?></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_trackback_level value=1></td>
<td>트랙백쓰기 권한</td>
<td>
<?=get_member_level_select('bo_trackback_level', 1, 10, $board[bo_trackback_level]) ?>
<?=help("트랙백이란? 쉽게 설명하여 '내가 작성하는 글을 다른사람에게 알리는 기능' 입니다.\n\n자세한 내용은 검색엔진에서 '트랙백'으로 검색을 해보시기 바랍니다.", 50, -70)?>
</td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td><input type=checkbox name=chk_count_modify value=1></td>
<td>원글 수정 불가</td>
<td>코멘트 <input type=text class=ed name=bo_count_modify size=3 required numeric itemname='원글 수정 불가 코멘트수' value='<?=$board[bo_count_modify]?>'>개 이상 달리면 수정불가</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_count_delete value=1></td>
<td>원글 삭제 불가</td>
<td>코멘트 <input type=text class=ed name=bo_count_delete size=3 required numeric itemname='원글 삭제 불가 코멘트수' value='<?=$board[bo_count_delete]?>'>개 이상 달리면 삭제불가</td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td></td>
<td>포인트 설정</td>
<td><input type=checkbox name="chk_point" onclick="set_point(this.form)"> 환경설정에 입력된 포인트로 설정</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_read_point value=1></td>
<td>글읽기 포인트</td>
<td><input type=text class=ed name=bo_read_point size=10 required itemname='글읽기 포인트' value='<?=$board[bo_read_point]?>'></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_write_point value=1></td>
<td>글쓰기 포인트</td>
<td><input type=text class=ed name=bo_write_point size=10 required itemname='글쓰기 포인트' value='<?=$board[bo_write_point]?>'></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_comment_point value=1></td>
<td>코멘트쓰기 포인트</td>
<td><input type=text class=ed name=bo_comment_point size=10 required itemname='답변, 코멘트쓰기 포인트' value='<?=$board[bo_comment_point]?>'></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_download_point value=1></td>
<td>다운로드 포인트</td>
<td><input type=text class=ed name=bo_download_point size=10 required itemname='다운로드 포인트' value='<?=$board[bo_download_point]?>'></td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td><input type=checkbox name=chk_category_list value=1></td>
<td>분류 </td>
<td><input type=text class=ed name=bo_category_list style='width:80%;' value='<?=get_text($board[bo_category_list])?>'>
<input type=checkbox name=bo_use_category value='1' <?=$board[bo_use_category]?'checked':'';?>><b>사용</b>
<?=help("분류와 분류 사이는 | 로 구분하세요. (예: 질문|답변) 첫자로 #은 입력하지 마세요. (예: #질문|#답변 [X])", -120)?>
</td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_sideview value=1></td>
<td>글쓴이 사이드뷰</td>
<td><input type=checkbox name=bo_use_sideview value='1' <?=$board[bo_use_sideview]?'checked':'';?>>사용 (글쓴이 클릭시 나오는 레이어 메뉴)</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_file_content value=1></td>
<td>파일 설명 사용</td>
<td><input type=checkbox name=bo_use_file_content value='1' <?=$board[bo_use_file_content]?'checked':'';?>>사용</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_comment value=1></td>
<td>코멘트 새창 사용</td>
<td><input type=checkbox name=bo_use_comment value='1' <?=$board[bo_use_comment]?'checked':'';?>>사용 (코멘트수 클릭시 새창으로 보임)</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_secret value=1></td>
<td>비밀글 사용</td>
<td>
<select name=bo_use_secret id='bo_use_secret'>
<option value='0'>사용하지 않음
<option value='1'>체크박스
<option value='2'>무조건
</select>
&nbsp;<?=help("'체크박스'는 글작성시 비밀글 체크가 가능합니다.\n\n'무조건'은 작성되는 모든글을 비밀글로 작성합니다. (관리자는 체크박스로 출력합니다.)\n\n스킨에 따라 적용되지 않을 수 있습니다.")?>
<script type='text/javascript'>document.getElementById('bo_use_secret').value='<?=$board[bo_use_secret]?>';</script>
</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_dhtml_editor value=1></td>
<td>DHTML 에디터 사용</td>
<td>
<input type=checkbox name=bo_use_dhtml_editor value='1' <?=$board[bo_use_dhtml_editor]?'checked':'';?>>사용
&nbsp;<?=help("글작성시 내용을 DHTML 에디터 기능으로 사용할 것인지 설정합니다.\n\n스킨에 따라 적용되지 않을 수 있습니다.")?>
</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_rss_view value=1></td>
<td>RSS 보이기 사용</td>
<td>
<input type=checkbox name=bo_use_rss_view value='1' <?=$board[bo_use_rss_view]?'checked':'';?>>사용
&nbsp;<?=help("비회원 글읽기가 가능하고 RSS 보이기 사용에 체크가 되어야만 RSS 지원을 합니다.")?>
</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_good value=1></td>
<td>추천 사용</td>
<td><input type=checkbox name=bo_use_good value='1' <?=$board[bo_use_good]?'checked':'';?>>사용</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_nogood value=1></td>
<td>비추천 사용</td>
<td><input type=checkbox name=bo_use_nogood value='1' <?=$board[bo_use_nogood]?'checked':'';?>>사용</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_name value=1></td>
<td>이름(실명) 사용</td>
<td><input type=checkbox name=bo_use_name value='1' <?=$board[bo_use_name]?'checked':'';?>>사용</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_signature value=1></td>
<td>서명보이기 사용</td>
<td><input type=checkbox name=bo_use_signature value='1' <?=$board[bo_use_signature]?'checked':'';?>>사용</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_ip_view value=1></td>
<td>IP 보이기 사용</td>
<td><input type=checkbox name=bo_use_ip_view value='1' <?=$board[bo_use_ip_view]?'checked':'';?>>사용</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_trackback value=1></td>
<td>트랙백 사용</td>
<td><input type=checkbox name=bo_use_trackback value='1' <?=$board[bo_use_trackback]?'checked':'';?>>사용 (트랙백쓰기 권한 보다 우선함)</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_list_content value=1></td>
<td>목록에서 내용 사용</td>
<td><input type=checkbox name=bo_use_list_content value='1' <?=$board[bo_use_list_content]?'checked':'';?>>사용 (사용시 속도 느려짐)</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_list_view value=1></td>
<td>전체목록보이기 사용</td>
<td><input type=checkbox name=bo_use_list_view value='1' <?=$board[bo_use_list_view]?'checked':'';?>>사용</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_email value=1></td>
<td>메일발송 사용</td>
<td><input type=checkbox name=bo_use_email value='1' <?=$board[bo_use_email]?'checked':'';?>>사용</td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td><input type=checkbox name=chk_skin value=1></td>
<td>스킨 디렉토리</td>
<td><select name=bo_skin required itemname="스킨 디렉토리">
<?
$arr = get_skin_dir("board");
for ($i=0; $i<count($arr); $i++) {
echo "<option value='$arr[$i]'>$arr[$i]</option>\n";
}
?></select>
<script type="text/javascript">document.fboardform.bo_skin.value="<?=$board[bo_skin]?>";</script>
</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_gallery_cols value=1></td>
<td>가로 이미지수</td>
<td><input type=text class=ed name=bo_gallery_cols size=10 required itemname='가로 이미지수' value='<?=$board[bo_gallery_cols]?>'>
<?=help("갤러리 형식의 게시판 목록에서 이미지를 한줄에 몇장씩 보여줄것인지를 설정하는 값")?></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_table_width value=1></td>
<td>게시판 테이블 폭</td>
<td><input type=text class=ed name=bo_table_width size=10 required itemname='게시판 테이블 폭' value='<?=$board[bo_table_width]?>'> 100 이하는 %</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_page_rows value=1></td>
<td>페이지당 목록 수</td>
<td><input type=text class=ed name=bo_page_rows size=10 required itemname='페이지당 목록 수' value='<?=$board[bo_page_rows]?>'></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_subject_len value=1></td>
<td>제목 길이</td>
<td><input type=text class=ed name=bo_subject_len size=10 required itemname='제목 길이' value='<?=$board[bo_subject_len]?>'> 목록에서의 제목 글자수. 잘리는 글은 … 로 표시</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_new value=1></td>
<td>new 이미지</td>
<td><input type=text class=ed name=bo_new size=10 required itemname='new 이미지' value='<?=$board[bo_new]?>'> 글 입력후 new 이미지를 출력하는 시간</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_hot value=1></td>
<td>hot 이미지</td>
<td><input type=text class=ed name=bo_hot size=10 required itemname='hot 이미지' value='<?=$board[bo_hot]?>'> 조회수가 설정값 이상이면 hot 이미지 출력</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_image_width value=1></td>
<td>이미지 폭 크기</td>
<td><input type=text class=ed name=bo_image_width size=10 required itemname='이미지 폭 크기' value='<?=$board[bo_image_width]?>'> 픽셀 (게시판에서 출력되는 이미지의 폭 크기)</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_reply_order value=1></td>
<td>답변 달기</td>
<td>
<select name=bo_reply_order>
<option value='1'>나중에 쓴 답변 아래로 달기 (기본)
<option value='0'>나중에 쓴 답변 위로 달기
</select>
<script type='text/javascript'> document.fboardform.bo_reply_order.value = '<?=$board[bo_reply_order]?>'; </script>
</td>
</tr>
<?/*?>
<tr class='ht'>
<td><input type=checkbox name=chk_disable_tags value=1></td>
<td>사용금지 태그</td>
<td><input type=text class=ed name=bo_disable_tags style='width:80%;' value='<?=get_text($board[bo_disable_tags])?>'>
<?=help("태그와 태그 사이는 | 로 구분하세요. (예: <b>script</b>|<b>iframe</b>)\n\nHTML 사용시 금지할 태그를 입력하는곳 입니다.", -50)?></td>
</tr>
<?*/?>
<tr class='ht'>
<td><input type=checkbox name=chk_sort_field value=1></td>
<td>리스트 정렬 필드</td>
<td>
<select name=bo_sort_field>
<option value=''>wr_num, wr_reply : 기본
<option value='wr_datetime asc'>wr_datetime asc : 날짜 이전것 부터
<option value='wr_datetime desc'>wr_datetime desc : 날짜 최근것 부터
<option value='wr_hit asc, wr_num, wr_reply'>wr_hit asc : 조회수 낮은것 부터
<option value='wr_hit desc, wr_num, wr_reply'>wr_hit desc : 조회수 높은것 부터
<option value='wr_last asc'>wr_last asc : 최근글 이전것 부터
<option value='wr_last desc'>wr_last desc : 최근글 최근것 부터
<option value='wr_comment asc, wr_num, wr_reply'>wr_comment asc : 코멘트수 낮은것 부터
<option value='wr_comment desc, wr_num, wr_reply'>wr_comment desc : 코멘트수 높은것 부터
<option value='wr_good asc, wr_num, wr_reply'>wr_good asc : 추천수 낮은것 부터
<option value='wr_good desc, wr_num, wr_reply'>wr_good desc : 추천수 높은것 부터
<option value='wr_nogood asc, wr_num, wr_reply'>wr_nogood asc : 비추천수 낮은것 부터
<option value='wr_nogood desc, wr_num, wr_reply'>wr_nogood desc : 비추천수 높은것 부터
<option value='wr_subject asc, wr_num, wr_reply'>wr_subject asc : 제목 내림차순
<option value='wr_subject desc, wr_num, wr_reply'>wr_subject desc : 제목 오름차순
<option value='wr_name asc, wr_num, wr_reply'>wr_name asc : 글쓴이 내림차순
<option value='wr_name desc, wr_num, wr_reply'>wr_name desc : 글쓴이 오름차순
<option value='ca_name asc, wr_num, wr_reply'>ca_name asc : 분류명 내림차순
<option value='ca_name desc, wr_num, wr_reply'>ca_name desc : 분류명 오름차순
</select>
<script type='text/javascript'> document.fboardform.bo_sort_field.value = '<?=$board[bo_sort_field]?>'; </script>
<?=help("리스트에서 기본으로 정렬에 사용할 필드를 선택합니다.\n\n'기본'으로 사용하지 않으시는 경우 속도가 느려질 수 있습니다.", -50)?>
</td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td><input type=checkbox name=chk_write_min value=1></td>
<td>최소 글수 제한</td>
<td><input type=text class=ed name=bo_write_min size=5 numeric value='<?=$board[bo_write_min]?>'>
(글 입력시 최소 글자수를 설정. 0을 입력하면 검사하지 않음)</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_write_max value=1></td>
<td>최대 글수 제한</td>
<td><input type=text class=ed name=bo_write_max size=5 numeric value='<?=$board[bo_write_max]?>'>
(글 입력시 최대 글자수를 설정. 0을 입력하면 검사하지 않음)</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_comment_min value=1></td>
<td>최소 코멘트수 제한</td>
<td><input type=text class=ed name=bo_comment_min size=5 numeric value='<?=$board[bo_comment_min]?>'>
(코멘트 입력시 최소 글자수, 최대 글자수를 설정. 0을 입력하면 검사하지 않음)</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_comment_max value=1></td>
<td>최대 코멘트수 제한</td>
<td><input type=text class=ed name=bo_comment_max size=5 numeric value='<?=$board[bo_comment_max]?>'>
(코멘트 입력시 최소 글자수, 최대 글자수를 설정. 0을 입력하면 검사하지 않음)</td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td><input type=checkbox name=chk_upload_count value=1></td>
<td>파일 업로드 갯수</td>
<td><input type=text class=ed name=bo_upload_count size=10 required itemname='파일 업로드 갯수' value='<?=$board[bo_upload_count]?>'> 게시물 한건당 업로드 할 수 있는 파일의 최대 개수 (0 이면 제한 없음)</td>
</tr>
<?
$upload_max_filesize = ini_get("upload_max_filesize");
if (!preg_match("/([m|M])$/", $upload_max_filesize)) {
$upload_max_filesize = (int)($upload_max_filesize / 1048576);
}
?>
<tr class='ht'>
<td><input type=checkbox name=chk_upload_size value=1></td>
<td>파일 업로드 용량</td>
<td>업로드 파일 한개당 <input type=text class=ed name=bo_upload_size size=10 required itemname='파일 업로드 용량' value='<?=$board[bo_upload_size]?>'> bytes 이하 (최대 <?=ini_get("upload_max_filesize")?> 이하) <?=help("1 MB = 1,024,768 bytes")?></td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td><input type=checkbox name=chk_include_head value=1></td>
<td>상단 파일 경로</td>
<td><input type=text class=ed name=bo_include_head style='width:80%;' value='<?=$board[bo_include_head]?>'></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_include_tail value=1></td>
<td>하단 파일 경로</td>
<td><input type=text class=ed name=bo_include_tail style='width:80%;' value='<?=$board[bo_include_tail]?>'></td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td><input type=checkbox name=chk_content_head value=1></td>
<td>상단 내용</td>
<!-- <td><textarea class=ed name=bo_content_head rows=5 style='width:80%;'><?=$board[bo_content_head] ?></textarea></td> -->
<td style='padding-top:7px; padding-bottom:7px;'><?=cheditor2('bo_content_head', $board[bo_content_head]);?></td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_content_tail value=1></td>
<td>하단 내용</td>
<!-- <td><textarea class=ed name=bo_content_tail rows=5 style='width:80%;'><?=$board[bo_content_tail] ?></textarea></td> -->
<td style='padding-top:7px; padding-bottom:7px;'><?=cheditor2('bo_content_tail', $board[bo_content_tail]);?></td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td><input type=checkbox name=chk_insert_content value=1></td>
<td>글쓰기 기본 내용</td>
<td><textarea class=ed name=bo_insert_content rows=5 style='width:80%;'><?=$board[bo_insert_content] ?></textarea></td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td><input type=checkbox name=chk_use_search value=1></td>
<td>전체 검색 사용</td>
<td><input type=checkbox name=bo_use_search value='1' <?=$board[bo_use_search]?'checked':'';?>>사용</td>
</tr>
<tr class='ht'>
<td><input type=checkbox name=chk_order_search value=1></td>
<td>전체 검색 순서</td>
<td><input type=text class=ed name=bo_order_search size=5 value='<?=$board[bo_order_search]?>'> 숫자가 낮은 게시판 부터 검색</td>
</tr>
<tr><td colspan=3 class='line2'></td></tr>
<? for ($i=1; $i<=10; $i++) { ?>
<tr class='ht'>
<td><input type=checkbox name=chk_<?=$i?> value=1></td>
<td><input type=text class=ed name='bo_<?=$i?>_subj' value='<?=get_text($board["bo_{$i}_subj"])?>' title='여분필드 <?=$i?> 제목' style='text-align:right;font-weight:bold;'></td>
<td><input type=text class=ed style='width:80%;' name='bo_<?=$i?>' value='<?=get_text($board["bo_$i"])?>' title='여분필드 <?=$i?> 설정값'></td>
</tr>
<? } ?>
<tr><td colspan=3 class='line2'></td></tr>
<tr class='ht'>
<td colspan=3 align=left>
<?=subtitle("XSS / CSRF 방지")?>
</td>
</tr>
<tr><td colspan=3 class='line1'></td></tr>
<tr class='ht'>
<td colspan='2'>
관리자 패스워드
</td>
<td>
<input class='ed' type='password' name='admin_password' itemname="관리자 패스워드" required>
<?=help("관리자 권한을 빼앗길 것에 대비하여 로그인한 관리자의 패스워드를 한번 더 묻는것 입니다.");?>
</td>
</tr>
<tr><td colspan=3 class='line1'></td></tr>
</table>
<p align=center>
<input type=submit class=btn1 accesskey='s' value=' 확 인 '>&nbsp;
<input type=button class=btn1 value=' 목 록 ' onclick="document.location.href='./board_list.php?<?=$qstr?>';">&nbsp;
<? if ($w == 'u') { ?><input type=button class=btn1 value=' 복 사 ' onclick="board_copy('<?=$bo_table?>');"><?}?>
</form>
<script type="text/javascript">
function board_copy(bo_table) {
window.open("./board_copy.php?bo_table="+bo_table, "BoardCopy", "left=10,top=10,width=500,height=200");
}
function set_point(f) {
if (f.chk_point.checked) {
f.bo_read_point.value = "<?=$config[cf_read_point]?>";
f.bo_write_point.value = "<?=$config[cf_write_point]?>";
f.bo_comment_point.value = "<?=$config[cf_comment_point]?>";
f.bo_download_point.value = "<?=$config[cf_download_point]?>";
} else {
f.bo_read_point.value = f.bo_read_point.defaultValue;
f.bo_write_point.value = f.bo_write_point.defaultValue;
f.bo_comment_point.value = f.bo_comment_point.defaultValue;
f.bo_download_point.value = f.bo_download_point.defaultValue;
}
}
function fboardform_submit(f) {
var tmp_title;
var tmp_image;
tmp_title = "상단";
tmp_image = f.bo_image_head;
if (tmp_image.value) {
if (!tmp_image.value.toLowerCase().match(/.(gif|jpg|png)$/i)) {
alert(tmp_title + "이미지가 gif, jpg, png 파일이 아닙니다.");
return false;
}
}
tmp_title = "하단";
tmp_image = f.bo_image_tail;
if (tmp_image.value) {
if (!tmp_image.value.toLowerCase().match(/.(gif|jpg|png)$/i)) {
alert(tmp_title + "이미지가 gif, jpg, png 파일이 아닙니다.");
return false;
}
}
if (parseInt(f.bo_count_modify.value) < 1) {
alert("원글 수정 불가 코멘트수는 1 이상 입력하셔야 합니다.");
f.bo_count_modify.focus();
return false;
}
if (parseInt(f.bo_count_delete.value) < 1) {
alert("원글 삭제 불가 코멘트수는 1 이상 입력하셔야 합니다.");
f.bo_count_delete.focus();
return false;
}
<?=cheditor3('bo_content_head')."\n";?>
<?=cheditor3('bo_content_tail')."\n";?>
f.action = "./board_form_update.php";
return true;
}
</script>
<?
include_once ("./admin.tail.php");
?>

331
adm/board_form_update.php Normal file
View File

@ -0,0 +1,331 @@
<?
$sub_menu = "300100";
include_once("./_common.php");
if ($w == 'u')
check_demo();
auth_check($auth[$sub_menu], "w");
if ($member[mb_password] != sql_password($_POST['admin_password'])) {
alert("패스워드가 다릅니다.");
}
if (!$_POST[gr_id]) { alert("그룹 ID는 반드시 선택하세요."); }
if (!$bo_table) { alert("게시판 TABLE명은 반드시 입력하세요."); }
if (!preg_match("/^([A-Za-z0-9_]{1,20})$/", $bo_table)) { alert("게시판 TABLE명은 공백없이 영문자, 숫자, _ 만 사용 가능합니다. (20자 이내)"); }
if (!$_POST[bo_subject]) { alert("게시판 제목을 입력하세요."); }
if ($img = $_FILES[bo_image_head][name]) {
if (!preg_match("/\.(gif|jpg|png)$/i", $img)) {
alert("상단 이미지가 gif, jpg, png 파일이 아닙니다.");
}
}
if ($img = $_FILES[bo_image_tail][name]) {
if (!preg_match("/\.(gif|jpg|png)$/i", $img)) {
alert("하단 이미지가 gif, jpg, png 파일이 아닙니다.");
}
}
if ($file = $_POST[bo_include_head]) {
if (!preg_match("/\.(php|htm[l]?)$/i", $file)) {
alert("상단 파일 경로가 php, html 파일이 아닙니다.");
}
}
if ($file = $_POST[bo_include_tail]) {
if (!preg_match("/\.(php|htm[l]?)$/i", $file)) {
alert("하단 파일 경로가 php, html 파일이 아닙니다.");
}
}
check_token();
$board_path = "$g4[path]/data/file/$bo_table";
// 게시판 디렉토리 생성
@mkdir($board_path, 0707);
@chmod($board_path, 0707);
// 디렉토리에 있는 파일의 목록을 보이지 않게 한다.
$file = $board_path . "/index.php";
$f = @fopen($file, "w");
@fwrite($f, "");
@fclose($f);
@chmod($file, 0606);
// 분류에 & 나 = 는 사용이 불가하므로 2바이트로 바꾼다.
$src_char = array('&', '=');
$dst_char = array('', '〓');
$bo_category_list = str_replace($src_char, $dst_char, $bo_category_list);
$sql_common = " gr_id = '$_POST[gr_id]',
bo_subject = '$_POST[bo_subject]',
bo_admin = '$_POST[bo_admin]',
bo_list_level = '$_POST[bo_list_level]',
bo_read_level = '$_POST[bo_read_level]',
bo_write_level = '$_POST[bo_write_level]',
bo_reply_level = '$_POST[bo_reply_level]',
bo_comment_level = '$_POST[bo_comment_level]',
bo_html_level = '$_POST[bo_html_level]',
bo_link_level = '$_POST[bo_link_level]',
bo_trackback_level = '$_POST[bo_trackback_level]',
bo_count_modify = '$_POST[bo_count_modify]',
bo_count_delete = '$_POST[bo_count_delete]',
bo_upload_level = '$_POST[bo_upload_level]',
bo_download_level = '$_POST[bo_download_level]',
bo_read_point = '$_POST[bo_read_point]',
bo_write_point = '$_POST[bo_write_point]',
bo_comment_point = '$_POST[bo_comment_point]',
bo_download_point = '$_POST[bo_download_point]',
bo_use_category = '$_POST[bo_use_category]',
bo_category_list = '$_POST[bo_category_list]',
bo_disable_tags = '$_POST[bo_disable_tags]',
bo_use_sideview = '$_POST[bo_use_sideview]',
bo_use_file_content = '$_POST[bo_use_file_content]',
bo_use_secret = '$_POST[bo_use_secret]',
bo_use_dhtml_editor = '$_POST[bo_use_dhtml_editor]',
bo_use_rss_view = '$_POST[bo_use_rss_view]',
bo_use_comment = '$_POST[bo_use_comment]',
bo_use_good = '$_POST[bo_use_good]',
bo_use_nogood = '$_POST[bo_use_nogood]',
bo_use_name = '$_POST[bo_use_name]',
bo_use_signature = '$_POST[bo_use_signature]',
bo_use_ip_view = '$_POST[bo_use_ip_view]',
bo_use_trackback = '$_POST[bo_use_trackback]',
bo_use_list_view = '$_POST[bo_use_list_view]',
bo_use_list_content = '$_POST[bo_use_list_content]',
bo_use_email = '$_POST[bo_use_email]',
bo_table_width = '$_POST[bo_table_width]',
bo_subject_len = '$_POST[bo_subject_len]',
bo_page_rows = '$_POST[bo_page_rows]',
bo_new = '$_POST[bo_new]',
bo_hot = '$_POST[bo_hot]',
bo_image_width = '$_POST[bo_image_width]',
bo_skin = '$_POST[bo_skin]',
bo_include_head = '$_POST[bo_include_head]',
bo_include_tail = '$_POST[bo_include_tail]',
bo_content_head = '$_POST[bo_content_head]',
bo_content_tail = '$_POST[bo_content_tail]',
bo_insert_content = '$_POST[bo_insert_content]',
bo_gallery_cols = '$_POST[bo_gallery_cols]',
bo_upload_count = '$_POST[bo_upload_count]',
bo_upload_size = '$_POST[bo_upload_size]',
bo_reply_order = '$_POST[bo_reply_order]',
bo_use_search = '$_POST[bo_use_search]',
bo_order_search = '$_POST[bo_order_search]',
bo_write_min = '$_POST[bo_write_min]',
bo_write_max = '$_POST[bo_write_max]',
bo_comment_min = '$_POST[bo_comment_min]',
bo_comment_max = '$_POST[bo_comment_max]',
bo_sort_field = '$_POST[bo_sort_field]',
bo_1_subj = '$_POST[bo_1_subj]',
bo_2_subj = '$_POST[bo_2_subj]',
bo_3_subj = '$_POST[bo_3_subj]',
bo_4_subj = '$_POST[bo_4_subj]',
bo_5_subj = '$_POST[bo_5_subj]',
bo_6_subj = '$_POST[bo_6_subj]',
bo_7_subj = '$_POST[bo_7_subj]',
bo_8_subj = '$_POST[bo_8_subj]',
bo_9_subj = '$_POST[bo_9_subj]',
bo_10_subj = '$_POST[bo_10_subj]',
bo_1 = '$_POST[bo_1]',
bo_2 = '$_POST[bo_2]',
bo_3 = '$_POST[bo_3]',
bo_4 = '$_POST[bo_4]',
bo_5 = '$_POST[bo_5]',
bo_6 = '$_POST[bo_6]',
bo_7 = '$_POST[bo_7]',
bo_8 = '$_POST[bo_8]',
bo_9 = '$_POST[bo_9]',
bo_10 = '$_POST[bo_10]' ";
if ($bo_image_head_del) {
@unlink("$board_path/$bo_image_head_del");
$sql_common .= " , bo_image_head = '' ";
}
if ($bo_image_tail_del) {
@unlink("$board_path/$bo_image_tail_del");
$sql_common .= " , bo_image_tail = '' ";
}
if ($_FILES[bo_image_head][name]) {
//$bo_image_head_urlencode = urlencode($_FILES[bo_image_head][name]);
$bo_image_head_urlencode = $bo_table."_head_".time();
$sql_common .= " , bo_image_head = '$bo_image_head_urlencode' ";
}
if ($_FILES[bo_image_tail][name]) {
//$bo_image_tail_urlencode = urlencode($_FILES[bo_image_tail][name]);
$bo_image_tail_urlencode = $bo_table."_tail_".time();
$sql_common .= " , bo_image_tail = '$bo_image_tail_urlencode' ";
}
if ($w == "") {
$row = sql_fetch(" select count(*) as cnt from $g4[board_table] where bo_table = '$bo_table' ");
if ($row[cnt])
alert("{$bo_table} 은(는) 이미 존재하는 TABLE 입니다.");
$sql = " insert into $g4[board_table]
set bo_table = '$bo_table',
bo_count_write = '0',
bo_count_comment = '0',
$sql_common ";
sql_query($sql);
// 게시판 테이블 생성
$file = file("./sql_write.sql");
$sql = implode($file, "\n");
$create_table = $g4[write_prefix] . $bo_table;
// sql_board.sql 파일의 테이블명을 변환
$source = array("/__TABLE_NAME__/", "/;/");
$target = array($create_table, "");
$sql = preg_replace($source, $target, $sql);
sql_query($sql, FALSE);
} else if ($w == "u") {
// 게시판의 글 수
$sql = " select count(*) as cnt from $g4[write_prefix]$bo_table where wr_is_comment = 0 ";
$row = sql_fetch($sql);
$bo_count_write = $row[cnt];
// 게시판의 코멘트 수
$sql = " select count(*) as cnt from $g4[write_prefix]$bo_table where wr_is_comment = 1 ";
$row = sql_fetch($sql);
$bo_count_comment = $row[cnt];
// 글수 조정
if ($proc_count) {
// 원글을 얻습니다.
$sql = " select wr_id from $g4[write_prefix]$bo_table where wr_is_comment = 0 ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
// 코멘트수를 얻습니다.
$sql2 = " select count(*) as cnt from $g4[write_prefix]$bo_table where wr_parent = '$row[wr_id]' and wr_is_comment = 1 ";
$row2 = sql_fetch($sql2);
sql_query(" update $g4[write_prefix]$bo_table set wr_comment = '$row2[cnt]' where wr_id = '$row[wr_id]' ");
}
}
// 공지사항에는 등록되어 있지만 실제 존재하지 않는 글 아이디는 삭제합니다.
$bo_notice = "";
$lf = "";
if ($board[bo_notice]) {
$tmp_array = explode("\n", $board[bo_notice]);
for ($i=0; $i<count($tmp_array); $i++) {
$tmp_wr_id = trim($tmp_array[$i]);
$row = sql_fetch(" select count(*) as cnt from $g4[write_prefix]$bo_table where wr_id = '$tmp_wr_id' ");
if ($row[cnt])
{
$bo_notice .= $lf . $tmp_wr_id;
$lf = "\n";
}
}
}
$sql = " update $g4[board_table]
set bo_notice = '$bo_notice',
bo_count_write = '$bo_count_write',
bo_count_comment = '$bo_count_comment',
$sql_common
where bo_table = '$bo_table' ";
sql_query($sql);
}
// 같은 그룹내 게시판 동일 옵션 적용
$s = "";
if ($chk_admin) $s .= " , bo_admin = '$bo_admin' ";
if ($chk_list_level) $s .= " , bo_list_level = '$bo_list_level' ";
if ($chk_read_level) $s .= " , bo_read_level = '$bo_read_level' ";
if ($chk_write_level) $s .= " , bo_write_level = '$bo_write_level' ";
if ($chk_reply_level) $s .= " , bo_reply_level = '$bo_reply_level' ";
if ($chk_comment_level) $s .= " , bo_comment_level = '$bo_comment_level' ";
if ($chk_link_level) $s .= " , bo_link_level = '$bo_link_level' ";
if ($chk_upload_level) $s .= " , bo_upload_level = '$bo_upload_level' ";
if ($chk_download_level) $s .= " , bo_download_level = '$bo_download_level' ";
if ($chk_html_level) $s .= " , bo_html_level = '$bo_html_level' ";
if ($chk_trackback_level) $s .= " , bo_trackback_level = '$bo_trackback_level' ";
if ($chk_count_modify) $s .= " , bo_count_modify = '$bo_count_modify' ";
if ($chk_count_delete) $s .= " , bo_count_delete = '$bo_count_delete' ";
if ($chk_read_point) $s .= " , bo_read_point = '$bo_read_point' ";
if ($chk_write_point) $s .= " , bo_write_point = '$bo_write_point' ";
if ($chk_comment_point) $s .= " , bo_comment_point = '$bo_comment_point' ";
if ($chk_download_point) $s .= " , bo_download_point = '$bo_download_point' ";
if ($chk_category_list) {
$s .= " , bo_category_list = '$bo_category_list' ";
$s .= " , bo_use_category = '$bo_use_category' ";
}
if ($chk_use_sideview) $s .= " , bo_use_sideview = '$bo_use_sideview' ";
if ($chk_use_file_content) $s .= " , bo_use_file_content = '$bo_use_file_content' ";
if ($chk_use_comment) $s .= " , bo_use_comment = '$bo_use_comment' ";
if ($chk_use_secret) $s .= " , bo_use_secret = '$bo_use_secret' ";
if ($chk_use_dhtml_editor) $s .= " , bo_use_dhtml_editor = '$bo_use_dhtml_editor' ";
if ($chk_use_rss_view) $s .= " , bo_use_rss_view = '$bo_use_rss_view' ";
if ($chk_use_good) $s .= " , bo_use_good = '$bo_use_good' ";
if ($chk_use_nogood) $s .= " , bo_use_nogood = '$bo_use_nogood' ";
if ($chk_use_name) $s .= " , bo_use_name = '$bo_use_name' ";
if ($chk_use_signature) $s .= " , bo_use_signature = '$bo_use_signature' ";
if ($chk_use_ip_view) $s .= " , bo_use_ip_view = '$bo_use_ip_view' ";
if ($chk_use_trackback) $s .= " , bo_use_trackback = '$bo_use_trackback' ";
if ($chk_use_list_view) $s .= " , bo_use_list_view = '$bo_use_list_view' ";
if ($chk_use_list_content) $s .= " , bo_use_list_content = '$bo_use_list_content' ";
if ($chk_use_email) $s .= " , bo_use_email = '$bo_use_email' ";
if ($chk_skin) $s .= " , bo_skin = '$bo_skin' ";
if ($chk_gallery_cols) $s .= " , bo_gallery_cols = '$bo_gallery_cols' ";
if ($chk_table_width) $s .= " , bo_table_width = '$bo_table_width' ";
if ($chk_page_rows) $s .= " , bo_page_rows = '$bo_page_rows' ";
if ($chk_subject_len) $s .= " , bo_subject_len = '$bo_subject_len' ";
if ($chk_new) $s .= " , bo_new = '$bo_new' ";
if ($chk_hot) $s .= " , bo_hot = '$bo_hot' ";
if ($chk_image_width) $s .= " , bo_image_width = '$bo_image_width' ";
if ($chk_reply_order) $s .= " , bo_reply_order = '$bo_reply_order' ";
if ($chk_disable_tags) $s .= " , bo_disable_tags = '$bo_disable_tags' ";
if ($chk_sort_field) $s .= " , bo_sort_field = '$bo_sort_field' ";
if ($chk_write_min) $s .= " , bo_write_min = '$bo_write_min' ";
if ($chk_write_max) $s .= " , bo_write_max = '$bo_write_max' ";
if ($chk_comment_min) $s .= " , bo_comment_min = '$bo_comment_min' ";
if ($chk_comment_max) $s .= " , bo_comment_max = '$bo_comment_max' ";
if ($chk_upload_count) $s .= " , bo_upload_count = '$bo_upload_count' ";
if ($chk_upload_size) $s .= " , bo_upload_size = '$bo_upload_size' ";
if ($chk_include_head) $s .= " , bo_include_head = '$bo_include_head' ";
if ($chk_include_tail) $s .= " , bo_include_tail = '$bo_include_tail' ";
if ($chk_content_head) $s .= " , bo_content_head = '$bo_content_head' ";
if ($chk_content_tail) $s .= " , bo_content_tail = '$bo_content_tail' ";
if ($chk_insert_content) $s .= " , bo_insert_content = '$bo_insert_content' ";
if ($chk_use_search) $s .= " , bo_use_search = '$bo_use_search' ";
if ($chk_order_search) $s .= " , bo_order_search = '$bo_order_search' ";
for ($i=1; $i<=10; $i++) {
if ($_POST["chk_{$i}"]) {
$s .= " , bo_{$i}_subj = '".$_POST["bo_{$i}_subj"]."' ";
$s .= " , bo_{$i} = '".$_POST["bo_{$i}"]."' ";
}
}
if ($s) {
$sql = " update $g4[board_table]
set bo_table = bo_table
{$s}
where gr_id = '$gr_id' ";
sql_query($sql);
}
if ($_FILES[bo_image_head][name]) {
$bo_image_head_path = "$board_path/$bo_image_head_urlencode";
move_uploaded_file($_FILES[bo_image_head][tmp_name], $bo_image_head_path);
chmod($bo_image_head_path, 0606);
}
if ($_FILES[bo_image_tail][name]) {
$bo_image_tail_path = "$board_path/$bo_image_tail_urlencode";
move_uploaded_file($_FILES[bo_image_tail][tmp_name], $bo_image_tail_path);
chmod($bo_image_tail_path, 0606);
}
goto_url("./board_form.php?w=u&bo_table=$bo_table&$qstr");
?>

248
adm/board_list.php Normal file
View File

@ -0,0 +1,248 @@
<?
$sub_menu = "300100";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$token = get_token();
// DHTML 에디터 사용 필드 추가 : 061021
sql_query(" ALTER TABLE `$g4[board_table]` ADD `bo_use_dhtml_editor` TINYINT NOT NULL AFTER `bo_use_secret` ", false);
// RSS 보이기 사용 필드 추가 : 061106
sql_query(" ALTER TABLE `$g4[board_table]` ADD `bo_use_rss_view` TINYINT NOT NULL AFTER `bo_use_dhtml_editor` ", false);
$sql_common = " from $g4[board_table] a ";
$sql_search = " where (1) ";
if ($is_admin != "super") {
$sql_common .= " , $g4[group_table] b ";
$sql_search .= " and (a.gr_id = b.gr_id and b.gr_admin = '$member[mb_id]') ";
}
if ($stx) {
$sql_search .= " and ( ";
switch ($sfl) {
case "bo_table" :
$sql_search .= " ($sfl like '$stx%') ";
break;
case "a.gr_id" :
$sql_search .= " ($sfl = '$stx') ";
break;
default :
$sql_search .= " ($sfl like '%$stx%') ";
break;
}
$sql_search .= " ) ";
}
if (!$sst) {
$sst = "a.gr_id, a.bo_table";
$sod = "asc";
}
$sql_order = " order by $sst $sod ";
$sql = " select count(*) as cnt
$sql_common
$sql_search
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select *
$sql_common
$sql_search
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
$listall = "<a href='$_SERVER[PHP_SELF]'>처음</a>";
$g4[title] = "게시판관리";
include_once("./admin.head.php");
$colspan = 13;
?>
<script type="text/javascript">
var list_update_php = 'board_list_update.php';
var list_delete_php = 'board_list_delete.php';
</script>
<table width=100% cellpadding=3 cellspacing=1>
<form name=fsearch method=get>
<tr>
<td width=50% align=left><?=$listall?> (게시판수 : <?=number_format($total_count)?>개)</td>
<td width=50% align=right>
<select name=sfl>
<option value='bo_table'>TABLE</option>
<option value='bo_subject'>제목</option>
<option value='a.gr_id'>그룹ID</option>
</select>
<input type=text name=stx class=ed required itemname='검색어' value='<?=$stx?>'>
<input type=image src='<?=$g4[admin_path]?>/img/btn_search.gif' align=absmiddle></td>
</tr>
</form>
</table>
<form name=fboardlist method=post>
<input type=hidden name=sst value="<?=$sst?>">
<input type=hidden name=sod value="<?=$sod?>">
<input type=hidden name=sfl value="<?=$sfl?>">
<input type=hidden name=stx value="<?=$stx?>">
<input type=hidden name=page value="<?=$page?>">
<input type=hidden name=token value="<?=$token?>">
<table width=100% cellpadding=0 cellspacing=1>
<colgroup width=30>
<colgroup width=>
<colgroup width=100>
<colgroup width=100>
<colgroup width=55>
<colgroup width=55>
<colgroup width=55>
<colgroup width=55>
<colgroup width=35>
<colgroup width=35>
<colgroup width=80>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td rowspan=2><input type=checkbox name=chkall value="1" onclick="check_all(this.form)"></td>
<td rowspan=2><?=subject_sort_link("bo_table")?>TABLE</a></td>
<td colspan=2><?=subject_sort_link("bo_subject")?>제목</a></td>
<td rowspan=2 title="글읽기 포인트"><?=subject_sort_link("bo_read_point")?>읽기<br>포인트</a></td>
<td rowspan=2 title="글쓰기 포인트"><?=subject_sort_link("bo_write_point")?>쓰기<br>포인트</a></td>
<td rowspan=2 title="코멘트쓰기 포인트"><?=subject_sort_link("bo_comment_point")?>코멘트<br>포인트</a></td>
<td rowspan=2 title="다운로드 포인트"><?=subject_sort_link("bo_download_point")?>다운<br>포인트</a></td>
<td rowspan=2 title="검색사용"><?=subject_sort_link("bo_use_search")?>검색<br>사용</a></td>
<td rowspan=2 title="검색순서"><?=subject_sort_link("bo_order_search")?>검색<br>순서</a></td>
<td rowspan=2><a href="./board_form.php"><img src='<?=$g4[admin_path]?>/img/icon_insert.gif' border=0 title='생성'></a></td>
</tr>
<tr class='bgcol1 bold col1 ht center'>
<td><?=subject_sort_link("a.gr_id")?>그룹</a></td>
<td><?=subject_sort_link("bo_skin", "", "desc")?>스킨</a></td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
// 스킨디렉토리
$skin_options = "";
$arr = get_skin_dir("board");
for ($k=0; $k<count($arr); $k++)
{
$option = $arr[$k];
if (strlen($option) > 10)
$option = substr($arr[$k], 0, 18) . "…";
$skin_options .= "<option value='$arr[$k]'>$option</option>";
}
for ($i=0; $row=sql_fetch_array($result); $i++) {
$s_upd = "<a href='./board_form.php?w=u&bo_table=$row[bo_table]&$qstr'><img src='img/icon_modify.gif' border=0 title='수정'></a>";
$s_del = "";
if ($is_admin == "super") {
//$s_del = "<a href=\"javascript:del('./board_delete.php?bo_table=$row[bo_table]&$qstr');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
$s_del = "<a href=\"javascript:post_delete('board_delete.php', '$row[bo_table]');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
}
$s_copy = "<a href=\"javascript:board_copy('$row[bo_table]');\"><img src='img/icon_copy.gif' border=0 title='복사'></a>";
/*
// 스킨디렉토리
$skin_options = "";
$arr = get_skin_dir("board");
for ($k=0; $k<count($arr); $k++)
{
$option = $arr[$k];
if (strlen($option) > 10)
$option = substr($arr[$k], 0, 18) . "…";
$skin_options .= "<option value='$arr[$k]'";
if ($arr[$k] == $row[bo_skin])
$skin_options .= " selected";
$skin_options .= ">$option</option>";
}
*/
$list = $i % 2;
echo "<input type=hidden name=board_table[$i] value='$row[bo_table]'>";
echo "<tr class='list$list col1 ht center'>";
echo "<td rowspan=2 height=25><input type=checkbox name=chk[] value='$i'></td>";
echo "<td rowspan=2><a href='$g4[bbs_path]/board.php?bo_table=$row[bo_table]'><b>$row[bo_table]</b></a></td>";
echo "<td colspan=2 align=left height=25><input type=text class=ed name=bo_subject[$i] value='".get_text($row[bo_subject])."' style='width:99%'></td>";
echo "<td rowspan=2 title='읽기 포인트'><input type=text class=ed name=bo_read_point[$i] value='$row[bo_read_point]' style='width:33px;'></td>";
echo "<td rowspan=2 title='쓰기 포인트'><input type=text class=ed name=bo_write_point[$i] value='$row[bo_write_point]' style='width:33px;'></td>";
echo "<td rowspan=2 title='속글쓰기 포인트'><input type=text class=ed name=bo_comment_point[$i] value='$row[bo_comment_point]' style='width:33px;'></td>";
echo "<td rowspan=2 title='다운로드 포인트'><input type=text class=ed name=bo_download_point[$i] value='$row[bo_download_point]' style='width:33px;'></td>";
echo "<td rowspan=2 title='검색사용'><input type=checkbox name=bo_use_search[$i] ".($row[bo_use_search]?'checked':'')." value='1'></td>";
echo "<td rowspan=2 title='검색순서'><input type=text class=ed name=bo_order_search[$i] value='$row[bo_order_search]' size=2></td>";
echo "<td rowspan=2>$s_upd $s_del $s_copy</td>";
echo "</tr>";
echo "<tr class='list$list col1 ht center'>";
if ($is_admin == "super")
echo "<td align=left>".get_group_select("gr_id[$i]", $row[gr_id])."</td>";
else
echo "<td align=center><input type=hidden name='gr_id[$i]' value='$row[gr_id]'>$row[gr_subject]</td>";
echo "<td align=left><select id=bo_skin_$i name=bo_skin[$i]>$skin_options</select></td>";
echo "</tr>\n";
echo "<script type='text/javascript'>document.getElementById('bo_skin_$i').value='$row[bo_skin]';</script>";
}
if ($i == 0)
echo "<tr><td colspan='$colspan' align=center height=100 bgcolor=#ffffff>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
$pagelist = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&page=");
echo "<table width=100% cellpadding=3 cellspacing=1>";
echo "<tr><td width=70%>";
echo "<input type=button class='btn1' value='선택수정' onclick=\"btn_check(this.form, 'update')\"> ";
if ($is_admin == "super")
echo "<input type=button class='btn1' value='선택삭제' onclick=\"btn_check(this.form, 'delete')\">";
echo "</td>";
echo "<td width=30% align=right>$pagelist</td></tr></table>\n";
if ($stx)
echo "<script>document.fsearch.sfl.value = '$sfl';</script>";
?>
</form>
<script type="text/javascript">
function board_copy(bo_table) {
window.open("./board_copy.php?bo_table="+bo_table, "BoardCopy", "left=10,top=10,width=500,height=200");
}
</script>
<script>
// POST 방식으로 삭제
function post_delete(action_url, val)
{
var f = document.fpost;
if(confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) {
f.bo_table.value = val;
f.action = action_url;
f.submit();
}
}
</script>
<form name='fpost' method='post'>
<input type='hidden' name='sst' value='<?=$sst?>'>
<input type='hidden' name='sod' value='<?=$sod?>'>
<input type='hidden' name='sfl' value='<?=$sfl?>'>
<input type='hidden' name='stx' value='<?=$stx?>'>
<input type='hidden' name='page' value='<?=$page?>'>
<input type='hidden' name='token' value='<?=$token?>'>
<input type='hidden' name='bo_table'>
</form>
<?
include_once("./admin.tail.php");
?>

28
adm/board_list_delete.php Normal file
View File

@ -0,0 +1,28 @@
<?
$sub_menu = "300100";
include_once("./_common.php");
check_demo();
if ($is_admin != "super")
alert("게시판 삭제는 최고관리자만 가능합니다.");
auth_check($auth[$sub_menu], "d");
check_token();
// _BOARD_DELETE_ 상수를 선언해야 board_delete.inc.php 가 정상 작동함
define("_BOARD_DELETE_", TRUE);
for ($i=0; $i<count($chk); $i++)
{
// 실제 번호를 넘김
$k = $chk[$i];
// include 전에 $bo_table 값을 반드시 넘겨야 함
$tmp_bo_table = mysql_real_escape_string(trim($_POST['board_table'][$k]));
include ("./board_delete.inc.php");
}
goto_url("./board_list.php?$qstr");
?>

42
adm/board_list_update.php Normal file
View File

@ -0,0 +1,42 @@
<?
$sub_menu = "300100";
include_once("./_common.php");
check_demo();
auth_check($auth[$sub_menu], "w");
check_token();
for ($i=0; $i<count($chk); $i++)
{
// 실제 번호를 넘김
$k = $chk[$i];
if ($is_admin != "super")
{
$sql = " select count(*) as cnt from $g4[board_table] a, $g4[group_table] b
where a.gr_id = '{$_POST['gr_id'][$k]}'
and a.gr_id = b.gr_id
and b.gr_admin = '$member[mb_id]' ";
$row = sql_fetch($sql);
if (!$row[cnt])
alert("최고관리자가 아닌 경우 다른 관리자의 게시판($board_table[$k])은 수정이 불가합니다.");
}
$sql = " update $g4[board_table]
set gr_id = '{$_POST['gr_id'][$k]}',
bo_subject = '{$_POST['bo_subject'][$k]}',
bo_skin = '{$_POST['bo_skin'][$k]}',
bo_read_point = '{$_POST['bo_read_point'][$k]}',
bo_write_point = '{$_POST['bo_write_point'][$k]}',
bo_comment_point = '{$_POST['bo_comment_point'][$k]}',
bo_download_point = '{$_POST['bo_download_point'][$k]}',
bo_use_search = '{$_POST['bo_use_search'][$k]}',
bo_order_search = '{$_POST['bo_order_search'][$k]}'
where bo_table = '{$_POST['board_table'][$k]}' ";
sql_query($sql);
}
goto_url("./board_list.php?$qstr");
?>

35
adm/boardgroup_delete.php Normal file
View File

@ -0,0 +1,35 @@
<?
$sub_menu = "300200";
include_once("./_common.php");
check_demo();
auth_check($auth[$sub_menu], "d");
$gr_id = mysql_real_escape_string(trim($_POST['gr_id']));
$row = sql_fetch(" select count(*) as cnt from $g4[board_table] where gr_id = '$gr_id' ");
if ($row[cnt])
alert("이 그룹에 속한 게시판이 존재하여 게시판 그룹을 삭제할 수 없습니다.\\n\\n이 그룹에 속한 게시판을 먼저 삭제하여 주십시오.", "./board_list.php?sfl=gr_id&stx=$gr_id");
/*
// _BOARD_DELETE_ 상수를 선언해야 board_delete.inc.php 가 정상 작동함
define("_BOARD_DELETE_", TRUE);
$sql = " select * from $g4[board_table] where gr_id = '$gr_id' ";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
$tmp_bo_table = $row[bo_table];
include ('./board_delete.inc.php');
}
*/
// 그룹 삭제
sql_query(" delete from $g4[group_table] where gr_id = '$gr_id' ");
// 그룹접근 회원 삭제
sql_query(" delete from $g4[group_member_table] where gr_id = '$gr_id' ");
goto_url("boardgroup_list.php?$qstr");
?>

124
adm/boardgroup_form.php Normal file
View File

@ -0,0 +1,124 @@
<?
$sub_menu = "300200";
include_once("./_common.php");
auth_check($auth[$sub_menu], "w");
$token = get_token();
if ($is_admin != "super" && $w == "") alert("최고관리자만 접근 가능합니다.");
$html_title = "게시판그룹";
if ($w == "")
{
$gr_id_attr = "required";
$gr[gr_use_access] = 0;
$html_title .= " 생성";
}
else if ($w == "u")
{
$gr_id_attr = "readonly style='background-color:#dddddd'";
$gr = sql_fetch(" select * from $g4[group_table] where gr_id = '$gr_id' ");
$html_title .= " 수정";
}
else
alert("제대로 된 값이 넘어오지 않았습니다.");
$g4[title] = $html_title;
include_once("./admin.head.php");
?>
<form name=fboardgroup method=post onsubmit="return fboardgroup_check(this);" autocomplete="off">
<input type=hidden name=w value='<?=$w?>'>
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=page value='<?=$page?>'>
<input type=hidden name=token value='<?=$token?>'>
<table width=100% cellpadding=0 cellspacing=0>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=30% class='col2 pad2'>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=30% class='col2 pad2'>
<tr class='ht'>
<td colspan=4 class=title align=left><img src='<?=$g4[admin_path]?>/img/icon_title.gif'> <?=$html_title?></td>
</tr>
<tr><td colspan=4 class='line1'></td></tr>
<tr class='ht'>
<td>그룹 ID</td>
<td colspan=3><input type='text' class=ed name=gr_id size=11 maxlength=10 <?=$gr_id_attr?> alphanumericunderline itemname='그룹 아이디' value='<?=$group[gr_id]?>'> 영문자, 숫자, _ 만 가능 (공백없이)</td>
</tr>
<tr class='ht'>
<td>그룹 제목</td>
<td colspan=3>
<input type='text' class=ed name=gr_subject size=40 required itemname='그룹 제목' value='<?=get_text($group[gr_subject])?>'>
<?
if ($w == 'u')
echo "<input type=button class='btn1' value='게시판생성' onclick=\"location.href='./board_form.php?gr_id=$gr_id';\">";
?>
</td>
</tr>
<tr class='ht'>
<td>그룹 관리자</td>
<td colspan=3>
<?
if ($is_admin == "super")
//echo get_member_id_select("gr_admin", 9, $row[gr_admin]);
echo "<input type='text' class=ed name='gr_admin' value='$gr[gr_admin]' maxlength=20>";
else
echo "<input type=hidden name='gr_admin' value='$gr[gr_admin]' size=40>$gr[gr_admin]";
?></td>
</tr>
<tr class='ht'>
<td>접근회원사용</td>
<td colspan=3>
<input type=checkbox name=gr_use_access value='1' <?=$gr[gr_use_access]?'checked':'';?>>사용
<?=help("사용에 체크하시면 이 그룹에 속한 게시판은 접근가능한 회원만 접근이 가능합니다.")?>
</td>
</tr>
<tr class='ht'>
<td>접근회원수</td>
<td colspan=3>
<?
// 접근회원수
$sql1 = " select count(*) as cnt from $g4[group_member_table] where gr_id = '$gr_id' ";
$row1 = sql_fetch($sql1);
echo "<a href='./boardgroupmember_list.php?gr_id=$gr_id'>$row1[cnt]</a>";
?>
</td>
</tr>
<? for ($i=1; $i<=10; $i=$i+2) { $k=$i+1; ?>
<tr class='ht'>
<td><input type=text class=ed name='gr_<?=$i?>_subj' value='<?=get_text($group["gr_{$i}_subj"])?>' title='여분필드 <?=$i?> 제목' style='text-align:right;font-weight:bold;' size=15></td>
<td><input type='text' class=ed style='width:99%;' name=gr_<?=$i?> value='<?=$gr["gr_$i"]?>' title='여분필드 <?=$i?> 설정값'></td>
<td><input type=text class=ed name='gr_<?=$k?>_subj' value='<?=get_text($group["gr_{$k}_subj"])?>' title='여분필드 <?=$k?> 제목' style='text-align:right;font-weight:bold;' size=15></td>
<td><input type='text' class=ed style='width:99%;' name=gr_<?=$k?> value='<?=$gr["gr_$k"]?>' title='여분필드 <?=$k?> 설정값'></td>
</tr>
<? } ?>
<tr><td colspan=4 class='line2'></td></tr>
</table>
<p align=center>
<input type=submit class=btn1 accesskey='s' value=' 확 인 '>&nbsp;
<input type=button class=btn1 value=' 목 록 ' onclick="document.location.href='./boardgroup_list.php?<?=$qstr?>';">
</form>
<script type='text/javascript'>
if (document.fboardgroup.w.value == '')
document.fboardgroup.gr_id.focus();
else
document.fboardgroup.gr_subject.focus();
function fboardgroup_check(f)
{
f.action = "./boardgroup_form_update.php";
return true;
}
</script>
<?
include_once ("./admin.tail.php");
?>

View File

@ -0,0 +1,66 @@
<?
$sub_menu = "300200";
include_once("./_common.php");
if ($w == 'u')
check_demo();
auth_check($auth[$sub_menu], "w");
if ($is_admin != "super" && $w == "") alert("최고관리자만 접근 가능합니다.");
if (!preg_match("/^([A-Za-z0-9_]{1,10})$/", $gr_id))
alert("그룹 ID는 공백없이 영문자, 숫자, _ 만 사용 가능합니다. (10자 이내)");
if (!$gr_subject) alert("그룹 제목을 입력하세요.");
check_token();
$sql_common = " gr_subject = '$_POST[gr_subject]',
gr_admin = '$_POST[gr_admin]',
gr_use_access = '$_POST[gr_use_access]',
gr_1_subj = '$_POST[gr_1_subj]',
gr_2_subj = '$_POST[gr_2_subj]',
gr_3_subj = '$_POST[gr_3_subj]',
gr_4_subj = '$_POST[gr_4_subj]',
gr_5_subj = '$_POST[gr_5_subj]',
gr_6_subj = '$_POST[gr_6_subj]',
gr_7_subj = '$_POST[gr_7_subj]',
gr_8_subj = '$_POST[gr_8_subj]',
gr_9_subj = '$_POST[gr_9_subj]',
gr_10_subj = '$_POST[gr_10_subj]',
gr_1 = '$_POST[gr_1]',
gr_2 = '$_POST[gr_2]',
gr_3 = '$_POST[gr_3]',
gr_4 = '$_POST[gr_4]',
gr_5 = '$_POST[gr_5]',
gr_6 = '$_POST[gr_6]',
gr_7 = '$_POST[gr_7]',
gr_8 = '$_POST[gr_8]',
gr_9 = '$_POST[gr_9]',
gr_10 = '$_POST[gr_10]' ";
if ($w == "")
{
$sql = " select count(*) as cnt from $g4[group_table] where gr_id = '$_POST[gr_id]' ";
$row = sql_fetch($sql);
if ($row[cnt])
alert("이미 존재하는 그룹 ID 입니다.");
$sql = " insert into $g4[group_table]
set gr_id = '$_POST[gr_id]',
$sql_common ";
sql_query($sql);
}
else if ($w == "u")
{
$sql = " update $g4[group_table]
set $sql_common
where gr_id = '$_POST[gr_id]' ";
sql_query($sql);
}
else
alert("제대로 된 값이 넘어오지 않았습니다.");
goto_url("./boardgroup_form.php?w=u&gr_id=$gr_id&$qstr");
?>

192
adm/boardgroup_list.php Normal file
View File

@ -0,0 +1,192 @@
<?
$sub_menu = "300200";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$token = get_token();
$sql_common = " from $g4[group_table] ";
$sql_search = " where (1) ";
if ($is_admin != "super")
$sql_search .= " and (gr_admin = '$member[mb_id]') ";
if ($stx) {
$sql_search .= " and ( ";
switch ($sfl) {
case "gr_id" :
case "gr_admin" :
$sql_search .= " ($sfl = '$stx') ";
break;
default :
$sql_search .= " ($sfl like '%$stx%') ";
break;
}
$sql_search .= " ) ";
}
if ($sst)
$sql_order = " order by $sst $sod ";
else
$sql_order = " order by gr_id asc ";
$sql = " select count(*) as cnt
$sql_common
$sql_search
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if (!$page) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select *
$sql_common
$sql_search
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
$listall = "<a href='$_SERVER[PHP_SELF]'>처음</a>";
$g4[title] = "게시판그룹설정";
include_once("./admin.head.php");
$colspan = 8;
?>
<script type="text/javascript">
var list_update_php = "./boardgroup_list_update.php";
</script>
<table width=100% cellpadding=3 cellspacing=1>
<form name=fsearch method=get>
<tr>
<td width=50% align=left><?=$listall?> (그룹수 : <?=number_format($total_count)?>개)</td>
<td width=50% align=right>
<select name=sfl>
<option value="gr_subject">제목</option>
<option value="gr_id">ID</option>
<option value="gr_admin">그룹관리자</option>
</select>
<input type=text name=stx class=ed required itemname='검색어' value='<?=$stx?>'>
<input type=image src='<?=$g4[admin_path]?>/img/btn_search.gif' align=absmiddle></td>
</tr>
</form>
</table>
<form name=fboardgrouplist method=post>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=page value='<?=$page?>'>
<input type=hidden name=token value='<?=$token?>'>
<table width=100% cellpadding=0 cellspacing=1 border=0>
<colgroup width=30>
<colgroup width=120>
<colgroup width=180>
<colgroup width=''>
<colgroup width=80>
<colgroup width=80>
<colgroup width=80>
<colgroup width=60>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td><input type=checkbox name=chkall value="1" onclick="check_all(this.form)"></td>
<td><?=subject_sort_link("gr_id")?>그룹아이디</a></td>
<td><?=subject_sort_link("gr_subject")?>제목</a></td>
<td><?=subject_sort_link("gr_admin")?>그룹관리자</a></td>
<td>게시판</td>
<td>접근사용</td>
<td>접근회원수</td>
<td><? if ($is_admin == "super") { echo "<a href='./boardgroup_form.php'><img src='$g4[admin_path]/img/icon_insert.gif' border=0 title='생성'></a>"; } ?></td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++)
{
// 접근회원수
$sql1 = " select count(*) as cnt from $g4[group_member_table] where gr_id = '$row[gr_id]' ";
$row1 = sql_fetch($sql1);
// 게시판수
$sql2 = " select count(*) as cnt from $g4[board_table] where gr_id = '$row[gr_id]' ";
$row2 = sql_fetch($sql2);
$s_upd = "<a href='./boardgroup_form.php?$qstr&w=u&gr_id=$row[gr_id]'><img src='img/icon_modify.gif' border=0 title='수정'></a>";
$s_del = "";
if ($is_admin == "super") {
//$s_del = "<a href=\"javascript:del('./boardgroup_delete.php?$qstr&gr_id=$row[gr_id]');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
$s_del = "<a href=\"javascript:post_delete('boardgroup_delete.php', '$row[gr_id]');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
}
$list = $i%2;
echo "<input type=hidden name=gr_id[$i] value='$row[gr_id]'>";
echo "<tr class='list$list' onmouseover=\"this.className='mouseover';\" onmouseout=\"this.className='list$list';\" height=27 align=center>";
echo "<td><input type=checkbox name=chk[] value='$i'></td>";
echo "<td><a href='$g4[bbs_path]/group.php?gr_id=$row[gr_id]'><b>$row[gr_id]</b></a></td>";
echo "<td><input type=text class=ed name=gr_subject[$i] value='".get_text($row[gr_subject])."' size=30></td>";
if ($is_admin == "super")
//echo "<td>".get_member_id_select("gr_admin[$i]", 9, $row[gr_admin])."</td>";
echo "<td><input type=text class=ed name=gr_admin[$i] value='$row[gr_admin]' maxlength=20></td>";
else
echo "<input type=hidden name='gr_admin[$i]' value='$row[gr_admin]'><td>$row[gr_admin]</td>";
echo "<td><a href='./board_list.php?sfl=a.gr_id&stx=$row[gr_id]'>$row2[cnt]</a></td>";
echo "<td><input type=checkbox name=gr_use_access[$i] ".($row[gr_use_access]?'checked':'')." value='1'></td>";
echo "<td><a href='./boardgroupmember_list.php?gr_id=$row[gr_id]'>$row1[cnt]</a></td>";
echo "<td>$s_upd $s_del</td>";
echo "</tr>\n";
}
if ($i == 0)
echo "<tr><td colspan='$colspan' align=center height=100 bgcolor=#ffffff>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
$pagelist = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&page=");
echo "<table width=100% cellpadding=3 cellspacing=1>";
echo "<tr><td width=70%>";
echo "<input type=button class='btn1' value='선택수정' onclick=\"btn_check(this.form, 'update')\">";
//echo " <input type=button value='선택삭제' onclick=\"btn_check(this.form, 'delete')\">";
echo "</td>";
echo "<td width=30% align=right>$pagelist</td></tr></table>\n";
if ($stx)
echo "<script>document.fsearch.sfl.value = '$sfl';</script>";
?>
</form>
<script>
// POST 방식으로 삭제
function post_delete(action_url, val)
{
var f = document.fpost;
if(confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) {
f.gr_id.value = val;
f.action = action_url;
f.submit();
}
}
</script>
<form name='fpost' method='post'>
<input type='hidden' name='sst' value='<?=$sst?>'>
<input type='hidden' name='sod' value='<?=$sod?>'>
<input type='hidden' name='sfl' value='<?=$sfl?>'>
<input type='hidden' name='stx' value='<?=$stx?>'>
<input type='hidden' name='page' value='<?=$page?>'>
<input type='hidden' name='token' value='<?=$token?>'>
<input type='hidden' name='gr_id'>
</form>
<?
include_once("./admin.tail.php");
?>

View File

@ -0,0 +1,27 @@
<?
$sub_menu = "300200";
include_once("./_common.php");
check_demo();
auth_check($auth[$sub_menu], "w");
check_token();
for ($i=0; $i<count($chk); $i++)
{
// 실제 번호를 넘김
$k = $chk[$i];
$sql = " update $g4[group_table]
set gr_subject = '{$_POST[gr_subject][$k]}',
gr_admin = '{$_POST[gr_admin][$k]}',
gr_use_access = '{$_POST[gr_use_access][$k]}'
where gr_id = '{$_POST[gr_id][$k]}' ";
if ($is_admin != "super")
$sql .= " and gr_admin = '{$_POST[gr_admin][$k]}' ";
sql_query($sql);
}
goto_url("./boardgroup_list.php?$qstr");
?>

View File

@ -0,0 +1,142 @@
<?
$sub_menu = "300200";
include_once("./_common.php");
auth_check($auth[$sub_menu], "w");
$token = get_token();
$mb = get_member($mb_id);
if (!$mb[mb_id])
alert("존재하지 않는 회원입니다.");
$g4[title] = "접근가능그룹선택";
include_once("./admin.head.php");
$colspan = 4;
?>
<table width=100% cellpadding=3 cellspacing=1>
<tr>
<td>* <? echo "<a href='./member_form.php?w=u&mb_id=$mb[mb_id]'><b>$mb[mb_id]</b> ($mb[mb_name] / $mb[mb_nick])</a> 님이 접근가능한 그룹 목록"; ?></td>
</tr>
</table>
<table width=100% cellpadding=0 cellspacing=0>
<colgroup width=120>
<colgroup width=''>
<colgroup width=200>
<colgroup width=100>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>그룹아이디</td>
<td>그룹</td>
<td>처리일시</td>
<td>삭제</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
$sql = " select *
from $g4[group_member_table] a,
$g4[group_table] b
where a.mb_id = '$mb[mb_id]'
and a.gr_id = b.gr_id ";
if ($is_admin != 'super')
$sql .= " and b.gr_admin = '$member[mb_id]' ";
$sql .= " order by a.gr_id desc ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
//$s_del = "<a href=\"javascript:del('./boardgroupmember_update.php?w=d&gm_id=$row[gm_id]')\"><img src='img/icon_delete.gif' border=0></a>";
$s_del = "<a href=\"javascript:post_delete('boardgroupmember_update.php', '$row[gm_id]');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
$list = $i%2;
echo "
<tr class='list$list col1 ht center'>
<td><a href='$g4[bbs_path]/group.php?gr_id=$row[gr_id]'><b>$row[gr_id]</b></a></td>
<td><b>$row[gr_subject]</b></td>
<td>$row[gm_datetime]</td>
<td>$s_del</td>
</tr>";
}
if ($i == 0) {
echo "<tr><td colspan='$colspan' align=center height=100>접근가능한 그룹이 없습니다.</td></tr>";
}
?>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
</table>
<p>
<form name=fboardgroupmember_form method=post action='./boardgroupmember_update.php' onsubmit="return boardgroupmember_form_check(this)">
<input type=hidden name=mb_id value='<?=$mb[mb_id]?>'>
<input type=hidden name=token value='<?=$token?>'>
<table width=100% align=center cellpadding=3 cellspacing=1 class=tablebg>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=80% class='col2 pad2'>
<tr>
<td>그룹</td>
<td>
<select name=gr_id>
<option value=''>접근가능 그룹을 선택하세요.
<option value=''>--------------------------
<?
$sql = " select *
from $g4[group_table]
where gr_use_access = 1 ";
//if ($is_admin == 'group') {
if ($is_admin != 'super')
$sql .= " and gr_admin = '$member[mb_id]' ";
$sql .= " order by gr_id ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
echo "<option value='$row[gr_id]'>$row[gr_subject]";
}
?>
</select>
&nbsp;
<input type=submit class=btn1 value=' 확 인 ' accesskey='s'>
</td>
</tr>
</table>
</form>
<script type="text/javascript">
function boardgroupmember_form_check(f)
{
if (f.gr_id.value == '') {
alert('접근가능 그룹을 선택하세요.');
return false;
}
return true;
}
</script>
<script>
// POST 방식으로 삭제
function post_delete(action_url, val)
{
var f = document.fpost;
if(confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) {
f.gm_id.value = val;
f.action = action_url;
f.submit();
}
}
</script>
<form name='fpost' method='post'>
<input type='hidden' name='sst' value='<?=$sst?>'>
<input type='hidden' name='sod' value='<?=$sod?>'>
<input type='hidden' name='sfl' value='<?=$sfl?>'>
<input type='hidden' name='stx' value='<?=$stx?>'>
<input type='hidden' name='page' value='<?=$page?>'>
<input type='hidden' name='token' value='<?=$token?>'>
<input type='hidden' name='w' value='d'>
<input type='hidden' name='gm_id'>
</form>
<?
include_once("./admin.tail.php");
?>

View File

@ -0,0 +1,166 @@
<?
$sub_menu = "300200";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$gr = get_group($gr_id);
if (!$gr[gr_id]) {
alert("존재하지 않는 그룹입니다.");
}
$sql_common = " from $g4[group_member_table] a
left outer join $g4[member_table] b on (a.mb_id = b.mb_id) ";
$sql_search = " where gr_id = '$gr_id' ";
// 회원아이디로 검색되지 않던 오류를 수정
if ($stx) {
$sql_search .= " and ( ";
switch ($sfl) {
default :
$sql_search .= " ($sfl like '%$stx%') ";
break;
}
$sql_search .= " ) ";
}
if (!$sst) {
$sst = "gm_datetime";
$sod = "desc";
}
$sql_order = " order by $sst $sod ";
$sql = " select count(*) as cnt
$sql_common
$sql_search
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select *
$sql_common
$sql_search
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
$g4[title] = "접근가능회원";
include_once("./admin.head.php");
$colspan = 7;
?>
<script type="text/javascript" src="<?=$g4[path]?>/js/sideview.js"></script>
<table width=100% cellpadding=3 cellspacing=1>
<form name=fsearch method=get>
<input type=hidden name=gr_id value='<?=$gr_id?>'>
<tr>
<td width=50% align=left>* <? echo "'<b>[$gr[gr_id]] $gr[gr_subject]</b>' 그룹의 접근가능한 회원 목록"; ?></td>
<td width=50% align=right>
<select name=sfl class=cssfl>
<option value='a.mb_id'>회원아이디</option>
</select>
<input type=text name=stx required itemname='검색어' value='<? echo $stx ?>'>
<input type=image src='<?=$g4[admin_path]?>/img/btn_search.gif' align=absmiddle></td>
</tr>
</form>
</table>
<table width=100% cellpadding=0 cellspacing=0>
<colgroup width=120>
<colgroup width=120>
<colgroup width=120>
<colgroup width=120>
<colgroup width=''>
<colgroup width=100>
<colgroup width=40>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td><?=subject_sort_link('b.mb_id', "gr_id=$gr_id")?>회원아이디</a></td>
<td><?=subject_sort_link('b.mb_name', "gr_id=$gr_id")?>이름</a></td>
<td><?=subject_sort_link('b.mb_nick', "gr_id=$gr_id")?>별명</a></td>
<td><?=subject_sort_link('b.mb_today_login', "gr_id=$gr_id")?>최종접속</a></td>
<td><?=subject_sort_link('a.gm_datetime', "gr_id=$gr_id")?>처리일시</a></td>
<td title='접근가능한 그룹수'>그룹</td>
<td>삭제</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++)
{
// 접근가능한 그룹수
$sql2 = " select count(*) as cnt from $g4[group_member_table] where mb_id = '$row[mb_id]' ";
$row2 = sql_fetch($sql2);
$group = "";
if ($row2[cnt])
$group = "<a href='./boardgroupmember_form.php?mb_id=$row[mb_id]'>$row2[cnt]</a>";
//$s_del = "<a href=\"javascript:del('./boardgroupmember_update.php?w=listdelete&gm_id=$row[gm_id]');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
$s_del = "<a href=\"javascript:post_delete('boardgroupmember_update.php', '$row[gm_id]');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
$mb_nick = get_sideview($row[mb_id], $row[mb_nick], $row[mb_email], $row[mb_homepage]);
$list = $i%2;
echo "
<tr class='list$list col1 ht center'>
<td>$row[mb_id]</td>
<td>$row[mb_name]</td>
<td>$mb_nick</td>
<td>".substr($row[mb_today_login],2,8)."</td>
<td>$row[gm_datetime]</td>
<td>$group</td>
<td>$s_del</td>
</tr> ";
}
if ($i == 0)
{
echo "<tr><td colspan='$colspan' align=center height=100 class='content contentbg'>자료가 없습니다.</td></tr>";
}
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
$pagelist = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&gr_id=$gr_id&page=");
if ($pagelist)
echo "<table width=100% cellpadding=3 cellspacing=1><tr><td align=right>$pagelist</td></tr></table>\n";
if ($stx)
echo "<script type='text/javascript'>document.fsearch.sfl.value = '$sfl';</script>\n";
?>
<script>
// POST 방식으로 삭제
function post_delete(action_url, val)
{
var f = document.fpost;
if(confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) {
f.gm_id.value = val;
f.action = action_url;
f.submit();
}
}
</script>
<form name='fpost' method='post'>
<input type='hidden' name='sst' value='<?=$sst?>'>
<input type='hidden' name='sod' value='<?=$sod?>'>
<input type='hidden' name='sfl' value='<?=$sfl?>'>
<input type='hidden' name='stx' value='<?=$stx?>'>
<input type='hidden' name='page' value='<?=$page?>'>
<input type='hidden' name='token' value='<?=$token?>'>
<input type='hidden' name='w' value='listdelete'>
<input type='hidden' name='gm_id'>
</form>
<?
include_once("./admin.tail.php");
?>

View File

@ -0,0 +1,62 @@
<?
$sub_menu = "300200";
include_once("./_common.php");
sql_query(" ALTER TABLE $g4[group_member_table] CHANGE `gm_id` `gm_id` INT( 11 ) DEFAULT '0' NOT NULL AUTO_INCREMENT ", false);
if ($w == "")
{
auth_check($auth[$sub_menu], "w");
$mb = get_member($mb_id);
if (!$mb[mb_id]) {
alert("존재하지 않는 회원입니다.");
}
$gr = get_group($gr_id);
if (!$gr[gr_id]) {
alert("존재하지 않는 그룹입니다.");
}
$sql = " select count(*) as cnt
from $g4[group_member_table]
where gr_id = '$gr_id'
and mb_id = '$mb_id' ";
$row = sql_fetch($sql);
if ($row[cnt]) {
alert("이미 등록되어 있는 자료입니다.");
}
else
{
check_token();
$sql = " insert into $g4[group_member_table]
set gr_id = '$_POST[gr_id]',
mb_id = '$_POST[mb_id]',
gm_datetime = '$g4[time_ymdhis]' ";
sql_query($sql);
}
}
else if ($w == 'd' || $w == 'listdelete')
{
auth_check($auth[$sub_menu], "d");
$sql = " select * from $g4[group_member_table] where gm_id = '$_POST[gm_id]' ";
$gm = sql_fetch($sql);
if (!$gm[gm_id]) {
alert("존재하지 않는 자료입니다.");
}
check_token();
$gr_id = $gm[gr_id];
$mb_id = $gm[mb_id];
$sql = " delete from $g4[group_member_table] where gm_id = '$_POST[gm_id]' ";
sql_query($sql);
}
if ($w == 'listdelete')
goto_url("./boardgroupmember_list.php?gr_id=$gr_id");
else
goto_url("./boardgroupmember_form.php?mb_id=$mb_id");
?>

432
adm/config_form.php Normal file
View File

@ -0,0 +1,432 @@
<?
$sub_menu = "100100";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$token = get_token();
if ($is_admin != "super")
alert("최고관리자만 접근 가능합니다.");
// 쪽지보낼시 차감 포인트 필드 추가 : 061218
sql_query(" ALTER TABLE `$g4[config_table]` ADD `cf_memo_send_point` INT NOT NULL AFTER `cf_login_point` ", FALSE);
// 개인정보보호정책 필드 추가 : 061121
$sql = " ALTER TABLE `$g4[config_table]` ADD `cf_privacy` TEXT NOT NULL AFTER `cf_stipulation` ";
sql_query($sql, FALSE);
if (!trim($config[cf_privacy])) {
$config[cf_privacy] = "해당 홈페이지에 맞는 개인정보취급방침을 입력합니다.";
}
$g4['title'] = "기본환경설정";
include_once ("./admin.head.php");
?>
<form name='fconfigform' method='post' onsubmit="return fconfigform_submit(this);">
<input type=hidden name=token value='<?=$token?>'>
<table width=100% cellpadding=0 cellspacing=0 border=0>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=30% class='col2 pad2'>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=30% class='col2 pad2'>
<tr class='ht'>
<td colspan=4 align=left><?=subtitle("기본 설정")?></td>
</tr>
<tr><td colspan=4 class=line1></td></tr>
<tr class='ht'>
<td>홈페이지 제목</td>
<td>
<input type=text class=ed name='cf_title' size='30' required itemname='홈페이지 제목' value='<?=$config[cf_title]?>'>
</td>
<td>최고관리자</td>
<td><?=get_member_id_select("cf_admin", 10, $config[cf_admin], "required itemname='최고 관리자'")?></td>
</tr>
<tr class='ht'>
<td>포인트 사용</td>
<td colspan=3><input type='checkbox' name='cf_use_point' value='1' <?=$config[cf_use_point]?'checked':'';?>> 사용</td>
</tr>
<tr class='ht'>
<td>로그인시 포인트</td>
<td><input type=text class=ed name='cf_login_point' size='5' required itemname='로그인시 포인트' value='<?=$config[cf_login_point]?>'> 점
<?=help("회원에게 하루에 한번만 부여")?></td>
<td>쪽지보낼시 차감 포인트</td>
<td><input type=text class=ed name='cf_memo_send_point' size='5' required itemname='쪽지전송시 차감 포인트' value='<?=$config[cf_memo_send_point]?>'> 점
<?=help("양수로 입력하십시오.<br>0으로 입력하시면 쪽지보낼시 포인트를 차감하지 않습니다.")?></td>
</tr>
<tr class='ht'>
<td>이름(별명) 표시</td>
<td colspan=3><input type=text class=ed name='cf_cut_name' value='<?=$config[cf_cut_name]?>' size=2> 자리만 표시
<?=help("영숫자 2글자 = 한글 1글자")?></td>
</tr>
<tr class='ht'>
<td>별명 수정</td>
<td>수정한 후 <input type=text class=ed name='cf_nick_modify' value='<?=$config[cf_nick_modify]?>' size=2> 일 동안 바꿀 수 없음</td>
<td>정보공개 수정</td>
<td>수정한 후 <input type=text class=ed name='cf_open_modify' value='<?=$config[cf_open_modify]?>' size=2> 일 동안 바꿀 수 없음</td>
</tr>
<tr class='ht'>
<td>최근게시물 삭제</td>
<td><input type=text class=ed name='cf_new_del' value='<?=$config[cf_new_del]?>' size=5> 일
<?=help("설정일이 지난 최근게시물 자동 삭제")?></td>
<td>쪽지 삭제</td>
<td><input type=text class=ed name='cf_memo_del' value='<?=$config[cf_memo_del]?>' size=5> 일
<?=help("설정일이 지난 쪽지 자동 삭제")?></td>
</tr>
<tr class='ht'>
<td>접속자로그 삭제</td>
<td><input type=text class=ed name='cf_visit_del' value='<?=$config[cf_visit_del]?>' size=5> 일
<?=help("설정일이 지난 접속자 로그 자동 삭제")?></td>
<td>인기검색어 삭제</td>
<td><input type=text class=ed name='cf_popular_del' value='<?=$config[cf_popular_del]?>' size=5> 일
<?=help("설정일이 지난 인기검색어 자동 삭제")?></td>
</tr>
<tr class='ht'>
<td>현재 접속자</td>
<td><input type=text class=ed name='cf_login_minutes' value='<?=$config[cf_login_minutes]?>' size=5> 분
<?=help("설정값 이내의 접속자를 현재 접속자로 인정")?></td>
<td>한페이지당 라인수</td>
<td><input type=text class=ed name='cf_page_rows' value='<?=$config[cf_page_rows]?>' size=5> 라인
<?=help("목록(리스트) 한페이지당 라인수")?></td>
</tr>
<tr class='ht'>
<td>최근게시물 스킨</td>
<td><select id=cf_new_skin name=cf_new_skin required itemname="최근게시물 스킨">
<?
$arr = get_skin_dir("new");
for ($i=0; $i<count($arr); $i++) {
echo "<option value='$arr[$i]'>$arr[$i]</option>\n";
}
?></select>
<script type="text/javascript"> document.getElementById('cf_new_skin').value="<?=$config[cf_new_skin]?>";</script>
</td>
<td>최근게시물 라인수</td>
<td><input type=text class=ed name='cf_new_rows' value='<?=$config[cf_new_rows]?>' size=5> 라인
<?=help("목록 한페이지당 라인수")?></td>
</tr>
<tr class='ht'>
<td>검색 스킨</td>
<td colspan=3><select id=cf_search_skin name=cf_search_skin required itemname="검색 스킨">
<?
$arr = get_skin_dir("search");
for ($i=0; $i<count($arr); $i++) {
echo "<option value='$arr[$i]'>$arr[$i]</option>\n";
}
?></select>
<script type="text/javascript"> document.getElementById('cf_search_skin').value="<?=$config[cf_search_skin]?>";</script>
</td>
</tr>
<tr class='ht'>
<td>접속자 스킨</td>
<td colspan=3><select id=cf_connect_skin name=cf_connect_skin required itemname="접속자 스킨">
<?
$arr = get_skin_dir("connect");
for ($i=0; $i<count($arr); $i++) {
echo "<option value='$arr[$i]'>$arr[$i]</option>\n";
}
?></select>
<script type="text/javascript"> document.getElementById('cf_connect_skin').value="<?=$config[cf_connect_skin]?>";</script>
</td>
</tr>
<tr class='ht'>
<td>복사, 이동시 로그</td>
<td colspan=3><input type='checkbox' name='cf_use_copy_log' value='1' <?=$config[cf_use_copy_log]?'checked':'';?>> 남김
<?=help("게시물 아래에 누구로 부터 복사, 이동됨 표시")?></td>
<!-- <td>자동등록방지 사용</td>
<td><input type='checkbox' name='cf_use_norobot' value='1' <?=$config[cf_use_norobot]?'checked':'';?>> 사용
<?=help("자동 회원가입과 글쓰기를 방지")?></td> -->
</tr>
<tr class='ht'>
<td>접근가능 IP</td>
<td valign=top><textarea class=ed name='cf_possible_ip' rows='5' style='width:99%;'><?=$config[cf_possible_ip]?> </textarea><br>입력된 IP의 컴퓨터만 접근할 수 있음.<br>123.123.+ 도 입력 가능. (엔터로 구분)</td>
<td>접근차단 IP</td>
<td valign=top><textarea class=ed name='cf_intercept_ip' rows='5' style='width:99%;'><?=$config[cf_intercept_ip]?> </textarea><br>입력된 IP의 컴퓨터는 접근할 수 없음.<br>123.123.+ 도 입력 가능. (엔터로 구분)</td>
</tr>
<tr><td colspan=4 class=line2></td></tr>
<tr><td colspan=4 class=ht></td></tr>
<tr>
<td colspan=4 align=left><?=subtitle("게시판 설정")?></td>
</tr>
<tr><td colspan=4 class=line1></td></tr>
<tr class='ht'>
<td>글읽기 포인트</td>
<td><input type=text class=ed name='cf_read_point' size='10' required itemname='글읽기 포인트' value='<?=$config[cf_read_point]?>'> 점</td>
<td>글쓰기 포인트</td>
<td><input type=text class=ed name='cf_write_point' size='10' required itemname='글쓰기 포인트' value='<?=$config[cf_write_point]?>'> 점</td>
</tr>
<tr class='ht'>
<td>코멘트쓰기 포인트</td>
<td><input type=text class=ed name='cf_comment_point' size='10' required itemname='답변, 코멘트쓰기 포인트' value='<?=$config[cf_comment_point]?>'> 점</td>
<td>다운로드 포인트</td>
<td><input type=text class=ed name='cf_download_point' size='10' required itemname='다운로드받기 포인트' value='<?=$config[cf_download_point]?>'> 점</td>
</tr>
<tr class='ht'>
<td>LINK TARGET</td>
<td><input type=text class=ed name='cf_link_target' size='10' value='<?=$config[cf_link_target]?>'>
<?=help("게시판 내용중 자동으로 링크되는 창의 타켓을 지정합니다.\n\n_self, _top, _blank, _new 를 주로 지정합니다.")?></td>
<td>검색 단위</td>
<td><input type=text class=ed name='cf_search_part' size='10' itemname='검색 단위' value='<?=$config[cf_search_part]?>'> 건 단위로 검색</td>
</tr>
<tr class='ht'>
<td>검색 배경 색상</td>
<td><input type=text class=ed name='cf_search_bgcolor' size='10' required itemname='검색 배경 색상' value='<?=$config[cf_search_bgcolor]?>'></td>
<td>검색 글자 색상</td>
<td><input type=text class=ed name='cf_search_color' size='10' required itemname='검색 글자 색상' value='<?=$config[cf_search_color]?>'></td>
</tr>
<tr class='ht'>
<td>새로운 글쓰기</td>
<td><input type=text class=ed name='cf_delay_sec' size='10' required itemname='새로운 글쓰기' value='<?=$config[cf_delay_sec]?>'> 초 지난후 가능</td>
<td>페이지 표시 수</td>
<td><input type=text class=ed name='cf_write_pages' size='10' required itemname='페이지 표시 수' value='<?=$config[cf_write_pages]?>'> 페이지씩 표시</td>
</tr>
<tr class='ht'>
<td>이미지 업로드 확장자</td>
<td colspan=3><input type=text class=ed name='cf_image_extension' size='80' itemname='이미지 업로드 확장자' value='<?=$config[cf_image_extension]?>'>
<?=help("게시판 글작성시 이미지 파일 업로드 가능 확장자. | 로 구분")?></td>
</tr>
<tr class='ht'>
<td>플래쉬 업로드 확장자</td>
<td colspan=3><input type=text class=ed name='cf_flash_extension' size='80' itemname='플래쉬 업로드 확장자' value='<?=$config[cf_flash_extension]?>'>
<?=help("게시판 글작성시 플래쉬 파일 업로드 가능 확장자. | 로 구분")?></td>
</tr>
<tr class='ht'>
<td>동영상 업로드 확장자</td>
<td colspan=3><input type=text class=ed name='cf_movie_extension' size='80' itemname='동영상 업로드 확장자' value='<?=$config[cf_movie_extension]?>'>
<?=help("게시판 글작성시 동영상 파일 업로드 가능 확장자. | 로 구분")?></td>
</tr>
<tr class='ht'>
<td>단어 필터링
<?=help("입력된 단어가 포함된 내용은 게시할 수 없습니다.\n\n단어와 단어 사이는 ,로 구분합니다.")?></td>
<td colspan=3><textarea class=ed name='cf_filter' rows='7' style='width:99%;'><?=$config[cf_filter]?> </textarea></td>
</tr>
<tr><td colspan=4 class=line2></td></tr>
<tr><td colspan=4 class=ht></td></tr>
<tr class='ht'>
<td colspan=4 align=left><?=subtitle("회원가입 설정")?></td>
</tr>
<tr><td colspan=4 class=line1></td></tr>
<tr class='ht'>
<td>회원 스킨</td>
<td colspan=3><select id=cf_member_skin name=cf_member_skin required itemname="회원가입 스킨">
<?
$arr = get_skin_dir("member");
for ($i=0; $i<count($arr); $i++) {
echo "<option value='$arr[$i]'>$arr[$i]</option>\n";
}
?></select>
<script type="text/javascript"> document.getElementById('cf_member_skin').value="<?=$config[cf_member_skin]?>";</script>
</td>
</tr>
<tr class='ht'>
<td>홈페이지 입력</td>
<td>
<input type='checkbox' name='cf_use_homepage' value='1' <?=$config[cf_use_homepage]?'checked':'';?>> 보이기
<input type='checkbox' name='cf_req_homepage' value='1' <?=$config[cf_req_homepage]?'checked':'';?>> 필수입력
</td>
<td>주소 입력</td>
<td>
<input type='checkbox' name='cf_use_addr' value='1' <?=$config[cf_use_addr]?'checked':'';?>> 보이기
<input type='checkbox' name='cf_req_addr' value='1' <?=$config[cf_req_addr]?'checked':'';?>> 필수입력
</td>
</tr>
<tr class='ht'>
<td>전화번호 입력</td>
<td>
<input type='checkbox' name='cf_use_tel' value='1' <?=$config[cf_use_tel]?'checked':'';?>> 보이기
<input type='checkbox' name='cf_req_tel' value='1' <?=$config[cf_req_tel]?'checked':'';?>> 필수입력
</td>
<td>핸드폰 입력</td>
<td>
<input type='checkbox' name='cf_use_hp' value='1' <?=$config[cf_use_hp]?'checked':'';?>> 보이기
<input type='checkbox' name='cf_req_hp' value='1' <?=$config[cf_req_hp]?'checked':'';?>> 필수입력
</td>
</tr>
<tr class='ht'>
<td>서명 입력</td>
<td>
<input type='checkbox' name='cf_use_signature' value='1' <?=$config[cf_use_signature]?'checked':'';?>> 보이기
<input type='checkbox' name='cf_req_signature' value='1' <?=$config[cf_req_signature]?'checked':'';?>> 필수입력
</td>
<td>자기소개 입력</td>
<td>
<input type='checkbox' name='cf_use_profile' value='1' <?=$config[cf_use_profile]?'checked':'';?>> 보이기
<input type='checkbox' name='cf_req_profile' value='1' <?=$config[cf_req_profile]?'checked':'';?>> 필수입력
</td>
</tr>
<tr class='ht'>
<td>회원가입시 권한</td>
<td><? echo get_member_level_select('cf_register_level', 1, 9, $config[cf_register_level]) ?></td>
<td>회원가입시 포인트</td>
<td><input type=text class=ed name='cf_register_point' size='5' value='<?=$config[cf_register_point]?>'> 점</td>
</tr>
<tr class='ht'>
<!-- <td>주민등록번호</td>
<td><input type='checkbox' name='cf_use_jumin' value='1' <?=$config[cf_use_jumin]?'checked':'';?>> 사용
<?=help("주민등록번호는 암호화하여 저장하므로 회원정보 DB가 유출되어도 알 수 없습니다.")?></td> -->
<td>회원탈퇴후 삭제일</td>
<td colspan="3"><input type=text class=ed name='cf_leave_day' size='5' value='<?=$config[cf_leave_day]?>'> 일 후 자동 삭제</td>
</tr>
<tr class='ht'>
<td>회원아이콘 사용</td>
<td>
<select name='cf_use_member_icon'>
<option value='0'>미사용
<option value='1'>아이콘만 표시
<option value='2'>아이콘+이름 표시
</select>
<?=help("게시물에 게시자 별명 대신 아이콘 사용")?>
</td>
<script type='text/javascript'> document.fconfigform.cf_use_member_icon.value = '<?=$config[cf_use_member_icon]?>'; </script>
<td>아이콘 업로드 권한</td>
<td colspan=3><? echo get_member_level_select('cf_icon_level', 1, 9, $config[cf_icon_level]) ?> 이상</td>
</tr>
<tr class='ht'>
<td>회원아이콘 용량</td>
<td><input type=text class=ed name='cf_member_icon_size' size='5' value='<?=$config[cf_member_icon_size]?>'> 바이트 이하</td>
<td>회원아이콘 사이즈</td>
<td>폭 <input type=text class=ed name='cf_member_icon_width' size='5' value='<?=$config[cf_member_icon_width]?>'> 픽셀 , 높이 <input type=text class=ed name='cf_member_icon_height' size='5' value='<?=$config[cf_member_icon_height]?>'> 픽셀 이하</td>
</tr>
<tr class='ht'>
<td>추천인제도 사용</td>
<td><input type='checkbox' name='cf_use_recommend' value='1' <?=$config[cf_use_recommend]?'checked':'';?>> 사용</td>
<td>추천인 포인트</td>
<td><input type=text class=ed name='cf_recommend_point' size='5' value='<?=$config[cf_recommend_point]?>'> 점</td>
</tr>
<tr class='ht'>
<td>아이디,별명 금지단어
<?=help("입력된 단어가 포함된 내용은 회원아이디, 별명으로 사용할 수 없습니다.\n\n단어와 단어 사이는 , 로 구분합니다.")?></td>
<td valign=top><textarea class=ed name='cf_prohibit_id' rows='5' style='width:99%;'><?=$config[cf_prohibit_id]?> </textarea></td>
<td>입력 금지 메일
<?=help("hanmail.net과 같은 메일 주소는 입력을 못합니다.\n\n엔터로 구분합니다.")?></td>
<td valign=top><textarea class=ed name='cf_prohibit_email' rows='5' style='width:99%;'><?=$config[cf_prohibit_email]?> </textarea><br></td>
</tr>
<tr class='ht'>
<td>회원가입약관</td>
<td valign=top colspan=3><textarea class=ed name='cf_stipulation' rows='10' style='width:99%;'><?=$config[cf_stipulation]?> </textarea></td>
</tr>
<tr class='ht'>
<td>개인정보취급방침</td>
<td valign=top colspan=3><textarea class=ed name='cf_privacy' rows='10' style='width:99%;'><?=$config[cf_privacy]?> </textarea></td>
</tr>
<tr><td colspan=4 class=line2></td></tr>
<tr><td colspan=4 class=ht></td></tr>
<tr class='ht'>
<td colspan=4 align=left><?=subtitle("메일 설정")?></td>
</tr>
<tr><td colspan=4 class=line1></td></tr>
<tr class='ht'>
<td>메일발송 사용</td>
<td colspan=3><input type=checkbox name=cf_email_use value='1' <?=$config[cf_email_use]?'checked':'';?>> 사용 (체크하지 않으면 메일발송을 아예 사용하지 않습니다. 메일 테스트도 불가합니다.)</td>
</tr>
<tr class='ht'>
<td>메일인증 사용</td>
<td><input type='checkbox' name='cf_use_email_certify' value='1' <?=$config[cf_use_email_certify]?'checked':'';?>> 사용
<?=help("메일에 배달된 인증 주소를 클릭하여야 회원으로 인정합니다.");?></td>
</tr>
<tr class='ht'>
<td>폼메일 사용 여부</td>
<td><input type='checkbox' name='cf_formmail_is_member' value='1' <?=$config[cf_formmail_is_member]?'checked':'';?>> 회원만 사용
<?=help("체크하지 않으면 비회원도 사용 할 수 있습니다.")?></td>
</tr>
<tr class='ht'>
<td><span class=title>게시판 글 작성시</span></td>
</tr>
<tr class='ht'>
<td>최고관리자 메일발송</td>
<td colspan=3><input type=checkbox name=cf_email_wr_super_admin value='1' <?=$config[cf_email_wr_super_admin]?'checked':'';?>> 사용 (최고관리자에게 메일을 발송합니다.)</td>
</tr>
<tr class='ht'>
<td>그룹관리자 메일발송</td>
<td colspan=3><input type=checkbox name=cf_email_wr_group_admin value='1' <?=$config[cf_email_wr_group_admin]?'checked':'';?>> 사용 (그룹관리자에게 메일을 발송합니다.)</td>
</tr>
<tr class='ht'>
<td>게시판관리자 메일발송</td>
<td colspan=3><input type=checkbox name=cf_email_wr_board_admin value='1' <?=$config[cf_email_wr_board_admin]?'checked':'';?>> 사용 (게시판관리자에게 메일을 발송합니다.)</td>
</tr>
<tr class='ht'>
<td>원글 메일발송</td>
<td colspan=3><input type=checkbox name=cf_email_wr_write value='1' <?=$config[cf_email_wr_write]?'checked':'';?>> 사용 (게시자님께 메일을 발송합니다.)</td>
</tr>
<tr class='ht'>
<td>코멘트 메일발송</td>
<td colspan=3><input type=checkbox name=cf_email_wr_comment_all value='1' <?=$config[cf_email_wr_comment_all]?'checked':'';?>> 사용 (원글에 코멘트가 올라오는 경우 코멘트 쓴 모든 분들께 메일을 발송합니다.)</td>
</tr>
<tr class='ht'>
<td><span class=title>회원 가입시</span></td>
</tr>
<tr class='ht'>
<td>최고관리자 메일발송</td>
<td colspan=3><input type=checkbox name=cf_email_mb_super_admin value='1' <?=$config[cf_email_mb_super_admin]?'checked':'';?>> 사용 (최고관리자에게 메일을 발송합니다.)</td>
</tr>
<tr class='ht'>
<td>회원님께 메일발송</td>
<td colspan=3><input type=checkbox name=cf_email_mb_member value='1' <?=$config[cf_email_mb_member]?'checked':'';?>> 사용 (회원가입한 회원님께 메일을 발송합니다.)</td>
</tr>
<tr class='ht'>
<td><span class=title>투표 기타의견 작성시</span></td>
</tr>
<tr class='ht'>
<td>최고관리자 메일발송</td>
<td colspan=3><input type=checkbox name=cf_email_po_super_admin value='1' <?=$config[cf_email_po_super_admin]?'checked':'';?>> 사용 (최고관리자에게 메일을 발송합니다.)</td>
</tr>
<tr><td colspan=4 class=line2></td></tr>
<tr><td colspan=4 class=ht></td></tr>
<tr class='ht'>
<td colspan=4 align=left><?=subtitle("여분 필드")?></td>
</tr>
<tr><td colspan=4 class=line1></td></tr>
<? for ($i=1; $i<=10; $i=$i+2) { $k=$i+1; ?>
<tr class='ht'>
<td><input type=text class=ed name='cf_<?=$i?>_subj' value='<?=get_text($config["cf_{$i}_subj"])?>' title='여분필드 <?=$i?> 제목' style='text-align:right;font-weight:bold;' size=15></td>
<td><input type='text' class=ed style='width:99%;' name=cf_<?=$i?> value='<?=$config["cf_$i"]?>' title='여분필드 <?=$i?> 설정값'></td>
<td><input type=text class=ed name='cf_<?=$k?>_subj' value='<?=get_text($config["cf_{$k}_subj"])?>' title='여분필드 <?=$k?> 제목' style='text-align:right;font-weight:bold;' size=15></td>
<td><input type='text' class=ed style='width:99%;' name=cf_<?=$k?> value='<?=$config["cf_$k"]?>' title='여분필드 <?=$k?> 설정값'></td>
</tr>
<? } ?>
<tr><td colspan=4 class=line2></td></tr>
<tr><td colspan=4 class=ht></td></tr>
<tr class='ht'>
<td colspan=4 align=left>
<?=subtitle("XSS / CSRF 방지")?>
</td>
</tr>
<tr><td colspan=4 class=line1></td></tr>
<tr class='ht'>
<td>
관리자 패스워드
</td>
<td colspan=3>
<input class='ed' type='password' name='admin_password' itemname="관리자 패스워드" required>
<?=help("관리자 권한을 빼앗길 것에 대비하여 로그인한 관리자의 패스워드를 한번 더 묻는것 입니다.");?>
</td>
</tr>
<tr><td colspan=4 class=line2></td></tr>
<tr><td colspan=4 class=ht></td></tr>
</table>
<p align=center>
<input type=submit class=btn1 accesskey='s' value=' 확 인 '>
</form>
<script type="text/javascript">
function fconfigform_submit(f)
{
f.action = "./config_form_update.php";
return true;
}
</script>
<?
include_once ("./admin.tail.php");
?>

123
adm/config_form_update.php Normal file
View File

@ -0,0 +1,123 @@
<?
$sub_menu = "100100";
include_once("./_common.php");
check_demo();
auth_check($auth[$sub_menu], "w");
if ($is_admin != "super")
alert("최고관리자만 접근 가능합니다.");
if ($member[mb_password] != sql_password($_POST['admin_password'])) {
alert("패스워드가 다릅니다.");
}
$mb = get_member($cf_admin);
if (!$mb[mb_id])
alert("최고관리자 회원아이디가 존재하지 않습니다.");
check_token();
$sql = " update $g4[config_table]
set cf_title = '$_POST[cf_title]',
cf_admin = '$_POST[cf_admin]',
cf_use_point = '$_POST[cf_use_point]',
cf_use_norobot = '$_POST[cf_use_norobot]',
cf_use_copy_log = '$_POST[cf_use_copy_log]',
cf_use_email_certify = '$_POST[cf_use_email_certify]',
cf_login_point = '$_POST[cf_login_point]',
cf_cut_name = '$_POST[cf_cut_name]',
cf_nick_modify = '$_POST[cf_nick_modify]',
cf_new_skin = '$_POST[cf_new_skin]',
cf_new_rows = '$_POST[cf_new_rows]',
cf_search_skin = '$_POST[cf_search_skin]',
cf_connect_skin = '$_POST[cf_connect_skin]',
cf_read_point = '$_POST[cf_read_point]',
cf_write_point = '$_POST[cf_write_point]',
cf_comment_point = '$_POST[cf_comment_point]',
cf_download_point = '$_POST[cf_download_point]',
cf_search_bgcolor = '$_POST[cf_search_bgcolor]',
cf_search_color = '$_POST[cf_search_color]',
cf_write_pages = '$_POST[cf_write_pages]',
cf_link_target = '$_POST[cf_link_target]',
cf_delay_sec = '$_POST[cf_delay_sec]',
cf_filter = '$_POST[cf_filter]',
cf_possible_ip = '".trim($_POST['cf_possible_ip'])."',
cf_intercept_ip = '".trim($_POST['cf_intercept_ip'])."',
cf_member_skin = '$_POST[cf_member_skin]',
cf_use_homepage = '$_POST[cf_use_homepage]',
cf_req_homepage = '$_POST[cf_req_homepage]',
cf_use_tel = '$_POST[cf_use_tel]',
cf_req_tel = '$_POST[cf_req_tel]',
cf_use_hp = '$_POST[cf_use_hp]',
cf_req_hp = '$_POST[cf_req_hp]',
cf_use_addr = '$_POST[cf_use_addr]',
cf_req_addr = '$_POST[cf_req_addr]',
cf_use_signature = '$_POST[cf_use_signature]',
cf_req_signature = '$_POST[cf_req_signature]',
cf_use_profile = '$_POST[cf_use_profile]',
cf_req_profile = '$_POST[cf_req_profile]',
cf_register_level = '$_POST[cf_register_level]',
cf_register_point = '$_POST[cf_register_point]',
cf_icon_level = '$_POST[cf_icon_level]',
cf_use_recommend = '$_POST[cf_use_recommend]',
cf_recommend_point = '$_POST[cf_recommend_point]',
cf_leave_day = '$_POST[cf_leave_day]',
cf_search_part = '$_POST[cf_search_part]',
cf_email_use = '$_POST[cf_email_use]',
cf_email_wr_super_admin = '$_POST[cf_email_wr_super_admin]',
cf_email_wr_group_admin = '$_POST[cf_email_wr_group_admin]',
cf_email_wr_board_admin = '$_POST[cf_email_wr_board_admin]',
cf_email_wr_write = '$_POST[cf_email_wr_write]',
cf_email_wr_comment_all = '$_POST[cf_email_wr_comment_all]',
cf_email_mb_super_admin = '$_POST[cf_email_mb_super_admin]',
cf_email_mb_member = '$_POST[cf_email_mb_member]',
cf_email_po_super_admin = '$_POST[cf_email_po_super_admin]',
cf_prohibit_id = '$_POST[cf_prohibit_id]',
cf_prohibit_email = '$_POST[cf_prohibit_email]',
cf_new_del = '$_POST[cf_new_del]',
cf_memo_del = '$_POST[cf_memo_del]',
cf_visit_del = '$_POST[cf_visit_del]',
cf_popular_del = '$_POST[cf_popular_del]',
cf_use_jumin = '$_POST[cf_use_jumin]',
cf_use_member_icon = '$_POST[cf_use_member_icon]',
cf_member_icon_size = '$_POST[cf_member_icon_size]',
cf_member_icon_width = '$_POST[cf_member_icon_width]',
cf_member_icon_height = '$_POST[cf_member_icon_height]',
cf_login_minutes = '$_POST[cf_login_minutes]',
cf_image_extension = '$_POST[cf_image_extension]',
cf_flash_extension = '$_POST[cf_flash_extension]',
cf_movie_extension = '$_POST[cf_movie_extension]',
cf_formmail_is_member = '$_POST[cf_formmail_is_member]',
cf_page_rows = '$_POST[cf_page_rows]',
cf_stipulation = '$_POST[cf_stipulation]',
cf_privacy = '$_POST[cf_privacy]',
cf_open_modify = '$_POST[cf_open_modify]',
cf_memo_send_point = '$_POST[cf_memo_send_point]',
cf_1_subj = '$_POST[cf_1_subj]',
cf_2_subj = '$_POST[cf_2_subj]',
cf_3_subj = '$_POST[cf_3_subj]',
cf_4_subj = '$_POST[cf_4_subj]',
cf_5_subj = '$_POST[cf_5_subj]',
cf_6_subj = '$_POST[cf_6_subj]',
cf_7_subj = '$_POST[cf_7_subj]',
cf_8_subj = '$_POST[cf_8_subj]',
cf_9_subj = '$_POST[cf_9_subj]',
cf_10_subj = '$_POST[cf_10_subj]',
cf_1 = '$_POST[cf_1]',
cf_2 = '$_POST[cf_2]',
cf_3 = '$_POST[cf_3]',
cf_4 = '$_POST[cf_4]',
cf_5 = '$_POST[cf_5]',
cf_6 = '$_POST[cf_6]',
cf_7 = '$_POST[cf_7]',
cf_8 = '$_POST[cf_8]',
cf_9 = '$_POST[cf_9]',
cf_10 = '$_POST[cf_10]' ";
sql_query($sql);
//sql_query(" OPTIMIZE TABLE `$g4[config_table]` ");
goto_url("./config_form.php", false);
?>

BIN
adm/img/btn_down.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

BIN
adm/img/btn_search.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

BIN
adm/img/btn_up.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

BIN
adm/img/dot.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 B

BIN
adm/img/graph.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

BIN
adm/img/home.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 B

BIN
adm/img/icon.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 B

BIN
adm/img/icon_copy.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

BIN
adm/img/icon_delete.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

BIN
adm/img/icon_group.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 B

BIN
adm/img/icon_help.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

BIN
adm/img/icon_insert.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
adm/img/icon_modify.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

BIN
adm/img/icon_more.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

BIN
adm/img/icon_move.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 735 B

BIN
adm/img/icon_title.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

BIN
adm/img/icon_view.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

BIN
adm/img/icon_viewer.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

BIN
adm/img/logo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
adm/img/logout.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

BIN
adm/img/menu100.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
adm/img/menu200.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
adm/img/menu300.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
adm/img/navi_icon.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 B

BIN
adm/img/title_menu.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

BIN
adm/img/title_menu100.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 B

BIN
adm/img/title_menu200.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 B

BIN
adm/img/title_menu300.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

BIN
adm/img/top.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 B

377
adm/index.php Normal file
View File

@ -0,0 +1,377 @@
<?
include_once("./_common.php");
$g4['title'] = "관리자메인";
include_once ("./admin.head.php");
$new_member_rows = 5;
$new_point_rows = 5;
$new_write_rows = 5;
$sql_common = " from $g4[member_table] ";
$sql_search = " where (1) ";
//if ($is_admin == 'group') $sql_search .= " and mb_level = '$member[mb_level]' ";
if ($is_admin != 'super')
$sql_search .= " and mb_level <= '$member[mb_level]' ";
if (!isset($sst)) {
$sst = "mb_datetime";
$sod = "desc";
}
$sql_order = " order by $sst $sod ";
$sql = " select count(*) as cnt
$sql_common
$sql_search
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
// 탈퇴회원수
$sql = " select count(*) as cnt
$sql_common
$sql_search
and mb_leave_date <> ''
$sql_order ";
$row = sql_fetch($sql);
$leave_count = $row['cnt'];
// 차단회원수
$sql = " select count(*) as cnt
$sql_common
$sql_search
and mb_intercept_date <> ''
$sql_order ";
$row = sql_fetch($sql);
$intercept_count = $row['cnt'];
$sql = " select *
$sql_common
$sql_search
$sql_order
limit $new_member_rows ";
$result = sql_query($sql);
$colspan = 12;
?>
<?=subtitle("신규가입회원 {$new_member_rows}건", "./member_list.php");?>
<table width=100%>
<tr>
<td width=50% align=left><?//=$listall?> (총회원수 : <?=number_format($total_count)?>, <font color=orange>차단 : <?=number_format($intercept_count)?></font>, <font color=crimson>탈퇴 : <?=number_format($leave_count)?></font>)</td>
<td width=50% align=right></td>
</tr>
</table>
<table width=100% cellpadding=0 cellspacing=0>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=page value='<?=$page?>'>
<colgroup width=80>
<colgroup width=80>
<colgroup width=>
<colgroup width=40>
<colgroup width=50>
<colgroup width=80>
<colgroup width=40>
<colgroup width=40>
<colgroup width=40>
<colgroup width=40>
<colgroup width=40>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>회원아이디</td>
<td>이름</td>
<td>별명</td>
<td>권한</td>
<td>포인트</td>
<td>최종접속</td>
<td title='메일수신허용여부'>수신</td>
<td title='정보공개여부'>공개</td>
<td title='이메일인증'>인증</td>
<td>차단</td>
<td title='접근가능한 그룹수'>그룹</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++)
{
// 접근가능한 그룹수
$sql2 = " select count(*) as cnt from $g4[group_member_table] where mb_id = '$row[mb_id]' ";
$row2 = sql_fetch($sql2);
$group = "";
if ($row2['cnt'])
$group = "<a href='./boardgroupmember_form.php?mb_id=$row[mb_id]'>$row2[cnt]</a>";
if ($is_admin == 'group')
{
$s_mod = "";
$s_del = "";
}
else
{
$s_mod = "<a href=\"./member_form.php?$qstr&w=u&mb_id=$row[mb_id]\"><img src='img/icon_modify.gif' border=0 title='수정'></a>";
$s_del = "<a href=\"javascript:del('./member_delete.php?$qstr&w=d&mb_id=$row[mb_id]&url=$_SERVER[PHP_SELF]');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
}
$s_grp = "<a href='./boardgroupmember_form.php?mb_id=$row[mb_id]'><img src='img/icon_group.gif' border=0 title='그룹'></a>";
$leave_date = $row['mb_leave_date'] ? $row['mb_leave_date'] : date("Ymd", $g4['server_time']);
$intercept_date = $row['mb_intercept_date'] ? $row['mb_intercept_date'] : date("Ymd", $g4['server_time']);
$mb_nick = get_sideview($row['mb_id'], $row['mb_nick'], $row['mb_email'], $row['mb_homepage']);
$mb_id = $row['mb_id'];
if ($row['mb_leave_date'])
$mb_id = "<font color=crimson>$mb_id</font>";
else if ($row['mb_intercept_date'])
$mb_id = "<font color=orange>$mb_id</font>";
$list = $i%2;
echo "
<input type=hidden name=mb_id[$i] value='$row[mb_id]'>
<tr class='list$list col1 ht center'>
<td title='$row[mb_id]'><nobr style='display:block; overflow:hidden; width:100px;'>&nbsp;$mb_id</nobr></td>
<td>$row[mb_name]</td>
<td>$mb_nick</td>
<td>$row[mb_level]</td>
<td align=right><a href='./point_list.php?sfl=mb_id&stx=$row[mb_id]' class=tt>".number_format($row['mb_point'])."</a>&nbsp;</td>
<td>".substr($row['mb_today_login'],2,8)."</td>
<td>".($row['mb_mailling']?'&radic;':'&nbsp;')."</td>
<td>".($row['mb_open']?'&radic;':'&nbsp;')."</td>
<td title='$row[mb_email_certify]'>".(preg_match('/[1-9]/', $row['mb_email_certify'])?'&radic;':'&nbsp;')."</td>
<td title='$row[mb_intercept_date]'>".($row['mb_intercept_date']?'&radic;':'&nbsp;')."</td>
<td>$group</td>
</tr>";
}
if ($i == 0)
echo "<tr><td colspan='$colspan' align=center height=100 class=contentbg>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
?>
<?
//$sql_common = " from $g4[board_new_table] a, $g4[board_table] b, $g4[group_table] c where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = '1' ";
$sql_common = " from $g4[board_new_table] a, $g4[board_table] b, $g4[group_table] c where a.bo_table = b.bo_table and b.gr_id = c.gr_id ";
if (isset($gr_id))
$sql_common .= " and b.gr_id = '$gr_id' ";
if (isset($view)) {
if ($view == "w")
$sql_common .= " and a.wr_id = a.wr_parent ";
else if ($view == "c")
$sql_common .= " and a.wr_id <> a.wr_parent ";
}
$sql_order = " order by a.bn_id desc ";
$sql = " select count(*) as cnt $sql_common ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$colspan = 5;
?>
<br><br>
<?=subtitle("최근게시물 {$new_write_rows}건", "$g4[bbs_path]/new.php");?>
<table width=100% cellpadding=0 cellspacing=1>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=page value='<?=$page?>'>
<colgroup width=100>
<colgroup width=100>
<colgroup width=''>
<colgroup width=80>
<colgroup width=80>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>그룹</td>
<td>게시판</td>
<td>제목</td>
<td>이름</td>
<td>일시</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
$sql = " select a.*, b.bo_subject, c.gr_subject, c.gr_id
$sql_common
$sql_order
limit $new_write_rows ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$tmp_write_table = $g4['write_prefix'] . $row['bo_table'];
if ($row['wr_id'] == $row['wr_parent']) // 원글
{
$comment = "";
$comment_link = "";
$row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_id]' ");
$name = get_sideview($row2['mb_id'], cut_str($row2['wr_name'], $config['cf_cut_name']), $row2['wr_email'], $row2['wr_homepage']);
// 당일인 경우 시간으로 표시함
$datetime = substr($row2['wr_datetime'],0,10);
$datetime2 = $row2['wr_datetime'];
if ($datetime == $g4['time_ymd'])
$datetime2 = substr($datetime2,11,5);
else
$datetime2 = substr($datetime2,5,5);
}
else // 코멘트
{
$comment = "[코] ";
$comment_link = "#c_{$row[wr_id]}";
$row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '$row[wr_parent]' ");
$row3 = sql_fetch(" select mb_id, wr_name, wr_email, wr_homepage, wr_datetime from $tmp_write_table where wr_id = '$row[wr_id]' ");
$name = get_sideview($row3['mb_id'], cut_str($row3['wr_name'], $config['cf_cut_name']), $row3['wr_email'], $row3['wr_homepage']);
// 당일인 경우 시간으로 표시함
$datetime = substr($row3['wr_datetime'],0,10);
$datetime2 = $row3['wr_datetime'];
if ($datetime == $g4['time_ymd'])
$datetime2 = substr($datetime2,11,5);
else
$datetime2 = substr($datetime2,5,5);
}
$list = $i%2;
echo "
<tr class='list$list col1 ht center'>
<td class=small><a href='$g4[bbs_path]/new.php?gr_id=$row[gr_id]'>".cut_str($row['gr_subject'],10)."</a></td>
<td class=small><a href='$g4[bbs_path]/board.php?bo_table=$row[bo_table]'>".cut_str($row['bo_subject'],20)."</a></td>
<td align=left style='word-break:break-all;'>&nbsp;<a href='$g4[bbs_path]/board.php?bo_table=$row[bo_table]&wr_id=$row2[wr_id]{$comment_link}'>{$comment}".conv_subject($row2['wr_subject'], 100)."</a></td>
<td>$name</td>
<td>$datetime</td>
</tr> ";
}
if ($i == 0)
echo "<tr><td colspan='$colspan' align=center height=100 bgcolor=#ffffff>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
?>
<?
$sql_common = " from $g4[point_table] ";
$sql_search = " where (1) ";
$sql_order = " order by po_id desc ";
$sql = " select count(*) as cnt
$sql_common
$sql_search
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$sql = " select *
$sql_common
$sql_search
$sql_order
limit $new_point_rows ";
$result = sql_query($sql);
$colspan = 7;
?>
<br><br>
<?=subtitle("최근포인트 {$new_point_rows}건", "./point_list.php");?>
<table width=100%>
<tr>
<td width=50% align=left>
<?//=$listall?> (건수 : <?=number_format($total_count)?>)
<?
//$row2 = sql_fetch(" select sum(po_point) as sum_point from $g4[point_table] ");
//echo "&nbsp;(전체 포인트 합계 : " . number_format($row2[sum_point]) . "점)";
?>
</td>
<td width=50% align=right></td>
</tr>
</table>
<table width=100% cellpadding=0 cellspacing=1>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=page value='<?=$page?>'>
<colgroup width=100>
<colgroup width=80>
<colgroup width=80>
<colgroup width=140>
<colgroup width=''>
<colgroup width=50>
<colgroup width=80>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>회원아이디</td>
<td>이름</td>
<td>별명</td>
<td>일시</td>
<td>포인트 내용</td>
<td>포인트</td>
<td>포인트합</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
$row2['mb_id'] = '';
for ($i=0; $row=sql_fetch_array($result); $i++)
{
if ($row2['mb_id'] != $row['mb_id'])
{
$sql2 = " select mb_id, mb_name, mb_nick, mb_email, mb_homepage, mb_point from $g4[member_table] where mb_id = '$row[mb_id]' ";
$row2 = sql_fetch($sql2);
}
$mb_nick = get_sideview($row['mb_id'], $row2['mb_nick'], $row2['mb_email'], $row2['mb_homepage']);
$link1 = $link2 = "";
if (!preg_match("/^\@/", $row['po_rel_table']) && $row['po_rel_table'])
{
$link1 = "<a href='$g4[bbs_path]/board.php?bo_table=$row[po_rel_table]&wr_id=$row[po_rel_id]' target=_blank>";
$link2 = "</a>";
}
$list = $i%2;
echo "
<input type=hidden name=po_id[$i] value='$row[po_id]'>
<input type=hidden name=mb_id[$i] value='$row[mb_id]'>
<tr class='list$list col1 ht center'>
<td><a href='./point_list.php?sfl=mb_id&stx=$row[mb_id]'>$row[mb_id]</a></td>
<td>$row2[mb_name]</td>
<td>$mb_nick</td>
<td>$row[po_datetime]</td>
<td align=left>&nbsp;{$link1}$row[po_content]{$link2}</td>
<td align=right>".number_format($row['po_point'])."&nbsp;</td>
<td align=right>".number_format($row2['mb_point'])."&nbsp;</td>
</tr> ";
}
if ($i == 0)
echo "<tr><td colspan='$colspan' align=center height=100 bgcolor=#ffffff>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
?>
<?
include_once ("./admin.tail.php");
?>

82
adm/mail_form.php Normal file
View File

@ -0,0 +1,82 @@
<?
$sub_menu = "200300";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$token = get_token();
$html_title = "회원메일";
if ($w == "u") {
$html_title .= "수정";
$readonly = " readonly";
$sql = " select * from $g4[mail_table] where ma_id = '$ma_id' ";
$ma = sql_fetch($sql);
if (!$ma[ma_id])
alert("등록된 자료가 없습니다.");
} else {
$html_title .= "입력";
}
$g4[title] = $html_title;
include_once("./admin.head.php");
?>
<form name=fmailform method=post action="./mail_update.php" onsubmit="return fmailform_check(this);">
<input type=hidden name=w value='<?=$w?>'>
<input type=hidden name=ma_id value='<?=$ma[ma_id]?>'>
<input type=hidden name=token value='<?=$token?>'>
<table cellpadding=0 cellspacing=0 width=100%>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=80% class='col2 pad2'>
<tr>
<td colspan=2 class=title align=left><img src='<?=$g4[admin_path]?>/img/icon_title.gif'> <?=$html_title?></td>
</tr>
<tr><td colspan=2 class='line1'></td></tr>
<tr class='ht'>
<td>메일 제목</td>
<td><input type=text class='ed w99' name=ma_subject value='<?=$ma[ma_subject]?>' required itemname='메일 제목'></td>
</tr>
<tr>
<td>메일 내용</td>
<td class=lh>
<?=textarea_size("ma_content")?>
<textarea id=ma_content name=ma_content rows=20 class='ed w99' required itemname='메일 내용'><?=$ma[ma_content]?></textarea>
<br>{이름} , {별명} , {회원아이디} , {이메일} , {생일}
<br>위와 같이 HTML 코드에 삽입하면 해당 내용에 맞게 변환하여 메일 발송합니다.
</td>
</tr>
<tr><td colspan=2 class='line1'></td></tr>
</table>
<p align=center>
<input type=submit class=btn1 accesskey='s' value=' 확 인 '>
</form>
<script type="text/javascript">
function fmailform_check(f)
{
errmsg = "";
errfld = "";
check_field(f.ma_subject, "제목을 입력하세요.");
check_field(f.ma_content, "내용을 입력하세요.");
if (errmsg != "") {
alert(errmsg);
errfld.focus();
return false;
}
return true;
}
document.fmailform.ma_subject.focus();
</script>
<?
include_once("./admin.tail.php");
?>

99
adm/mail_list.php Normal file
View File

@ -0,0 +1,99 @@
<?
$sub_menu = "200300";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$sql_common = " from $g4[mail_table] ";
// 테이블의 전체 레코드수만 얻음
$sql = " select COUNT(*) as cnt " . $sql_common;
$row = sql_fetch($sql);
$total_count = $row[cnt];
$page = 1;
$sql = "select * $sql_common order by ma_id desc ";
$result = sql_query($sql);
$g4[title] = "회원메일발송";
include_once("./admin.head.php");
$colspan = 6;
?>
<table width=100%>
<tr>
<td width=20%>&nbsp;</td>
<td width=60% align=center>&nbsp;</td>
<td width=20% align=right>건수 : <? echo $total_count ?>&nbsp;</td>
</tr>
</table>
<table cellpadding=0 cellspacing=0 width=100%>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td width=40>ID</td>
<td width=''>제목</td>
<td width=120>작성일시</td>
<td width=50>테스트</td>
<td width=50>보내기</td>
<td width=80><a href='./mail_form.php'><img src='<?=$g4[admin_path]?>/img/icon_insert.gif' border=0></a></td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$s_mod = icon("수정", "./mail_form.php?w=u&ma_id=$row[ma_id]");
//$s_del = icon("삭제", "javascript:del('./mail_update.php?w=d&ma_id=$row[ma_id]');");
$s_del = "<a href=\"javascript:post_delete('mail_update.php', '$row[ma_id]');\"><img src='img/icon_delete.gif' border=0 title='삭제' align='absmiddle'></a>";
$s_vie = icon("보기", "./mail_preview.php?ma_id=$row[ma_id]", "_blank");
$num = number_format($total_count - ($page - 1) * $config[cf_page_rows] - $i);
$list = $i%2;
echo "
<tr class='list$list col1 ht center'>
<td>$num</td>
<td align=left>$row[ma_subject]</td>
<td>$row[ma_time]</td>
<td><a href='./mail_test.php?ma_id=$row[ma_id]'>테스트</a></td>
<td><a href='./mail_select_form.php?ma_id=$row[ma_id]'>보내기</a></td>
<td>$s_mod $s_del $s_vie</td>
</tr>";
}
if (!$i)
echo "<tr><td colspan='$colspan' height=100 align=center bgcolor='#FFFFFF'>자료가 없습니다.</td></tr>";
?>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
</table>
<script>
// POST 방식으로 삭제
function post_delete(action_url, val)
{
var f = document.fpost;
if(confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) {
f.ma_id.value = val;
f.action = action_url;
f.submit();
}
}
</script>
<form name='fpost' method='post'>
<input type='hidden' name='sst' value='<?=$sst?>'>
<input type='hidden' name='sod' value='<?=$sod?>'>
<input type='hidden' name='sfl' value='<?=$sfl?>'>
<input type='hidden' name='stx' value='<?=$stx?>'>
<input type='hidden' name='page' value='<?=$page?>'>
<input type='hidden' name='w' value='d'>
<input type='hidden' name='ma_id'>
</form>
<?
include_once ("./admin.tail.php");
?>

16
adm/mail_preview.php Normal file
View File

@ -0,0 +1,16 @@
<?
$sub_menu = "200300";
include_once("./_common.php");
include_once("$g4[path]/lib/mailer.lib.php");
auth_check($auth[$sub_menu], "r");
$se = sql_fetch("select ma_subject, ma_content from $g4[mail_table] where ma_id = '$ma_id' ");
$subject = $se[ma_subject];
$content = $se[ma_content] . "<hr size=0><p><span style='font-size:9pt; font-family:굴림'>▶ 더 이상 정보 수신을 원치 않으시면 [<a href='$g4[url]/$g4[bbs]/email_stop.php?mb_id=***&mb_md5=***' target='_blank'>수신거부</a>] 해 주십시오.</span></p>";
echo "<span style='font-size:9pt;'>$subject</span>";
echo "<hr size=0>";
echo $content;
?>

192
adm/mail_select_form.php Normal file
View File

@ -0,0 +1,192 @@
<?
$sub_menu = "200300";
include_once("./_common.php");
if (!$config[cf_email_use])
alert("환경설정에서 \'메일발송 사용\'에 체크하셔야 메일을 발송할 수 있습니다.");
auth_check($auth[$sub_menu], "r");
$sql = "select * from $g4[mail_table] where ma_id = '$ma_id' ";
$ma = sql_fetch($sql);
if (!$ma[ma_id])
alert("보내실 내용을 선택하여 주십시오.");
// 전체회원수
$sql = "select COUNT(*) as cnt from $g4[member_table] ";
$row = sql_fetch($sql);
$tot_cnt = $row[cnt];
// 탈퇴대기회원수
$sql = "select COUNT(*) as cnt from $g4[member_table] where mb_leave_date <> '' ";
$row = sql_fetch($sql);
$finish_cnt = $row[cnt];
$last_option = explode("||", $ma[ma_last_option]);
for ($i=0; $i<count($last_option); $i++) {
$option = explode("=", $last_option[$i]);
// 동적변수
$var = $option[0];
$$var = $option[1];
}
if (!isset($mb_id1)) $mb_id1 = 1;
if (!isset($mb_level_from)) $mb_level_from = 1;
if (!isset($mb_level_to)) $mb_level_to = 10;
if (!isset($mb_mailling)) $mb_mailling = 1;
if (!isset($mb_sex)) $mb_sex = 1;
if (!isset($mb_area)) $mb_area = 1;
$g4[title] = "회원메일발송";
include_once("./admin.head.php");
?>
<table width=700 align=center>
<tr>
<td class='right'>전체회원수 : <?=number_format($tot_cnt)?> 명 , 탈퇴대기회원수 : <?=number_format($finish_cnt)?> 명 , <b>정상회원수 : <?=number_format($tot_cnt - $finish_cnt)?> 명</b></td>
</tr>
<tr>
<td>
<table cellpadding=0 cellspacing=0 width=100%>
<form name=frmsendmailselectform method=post action="./mail_select_list.php" autocomplete="off">
<input type=hidden name=ma_id value='<? echo $ma_id ?>'>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=80% class='col2 pad2'>
<tr>
<td></td>
</tr>
<tr><td colspan='2' class='line1'></td></tr>
<tr class='ht'>
<td>회원 ID</td>
<td>
<input type=radio name='mb_id1' value='1' onclick="mb_id1_click(1);" <?=$mb_id1?"checked":"";?>> 전체
<input type=radio name='mb_id1' value='0' onclick="mb_id1_click(0);" <?=!$mb_id1?"checked":"";?>> 구간
<br>
<input type=text class=ed id=mb_id1_from name=mb_id1_from value="<?=$mb_id1_from?>"> 에서
<input type=text class=ed id=mb_id1_to name=mb_id1_to value="<?=$mb_id1_to?>"> 까지
<script type="text/javascript">
function mb_id1_click(num)
{
if (num == 1) {
document.getElementById('mb_id1_from').disabled = true;
document.getElementById('mb_id1_from').style.backgroundColor = '#EEEEEE';
document.getElementById('mb_id1_to').disabled = true;
document.getElementById('mb_id1_to').style.backgroundColor = '#EEEEEE';
} else {
document.getElementById('mb_id1_from').disabled = false;
document.getElementById('mb_id1_from').style.backgroundColor = '#FFFFFF';
document.getElementById('mb_id1_to').disabled = false;
document.getElementById('mb_id1_to').style.backgroundColor = '#FFFFFF';
}
}
document.onLoad=mb_id1_click(<?=(int)$mb_id1?>);
</script>
</td>
</tr>
<tr class='ht'>
<td>생일</td>
<td>
<input type=text name='mb_birth_from' size=4 maxlength=4 class=ed value="<?=$mb_birth_from?>"> 부터
<input type=text name='mb_birth_to' size=4 maxlength=4 class=ed value="<?=$mb_birth_to?>"> 까지 (예 : 5월5일 인 경우, 0505 와 같이 입력 , 둘다 입력해야함)</td>
</tr>
<tr class='ht'>
<td>E-mail에</td>
<td><input type=text name='mb_email' class=ed value="<?=$mb_email?>"> 단어 포함 (예 : @sir.co.kr)</td>
</tr>
<tr class='ht'>
<td>성별</td>
<td>
<select id=mb_sex name=mb_sex>
<option value=''>전체
<option value='F'>여자
<option value='M'>남자
</select>
<script type="text/javascript"> document.getElementById('mb_sex').value = "<?=$mb_sex?>"; </script>
</td>
</tr>
<tr class='ht'>
<td>지역</td>
<td>
<select id=mb_area name=mb_area>
<option value=''>전체
<option value='서울'>서울
<option value='부산'>부산
<option value='대구'>대구
<option value='인천'>인천
<option value='광주'>광주
<option value='대전'>대전
<option value='울산'>울산
<option value='강원'>강원
<option value='경기'>경기
<option value='경남'>경남
<option value='경북'>경북
<option value='전남'>전남
<option value='전북'>전북
<option value='제주'>제주
<option value='충남'>충남
<option value='충북'>충북
</select>
<script type="text/javascript"> document.getElementById('mb_area').value = "<?=$mb_area?>"; </script>
</td>
</tr>
<tr class='ht'>
<td>메일링</td>
<td>
<select id=mb_mailling name=mb_mailling>
<option value='1'>수신동의한 회원만
<option value=''>전체
</select>
<script type="text/javascript"> document.getElementById('mb_mailling').value = "<?=$mb_mailling?>"; </script>
</td>
</tr>
<tr class='ht'>
<td>권한</td>
<td>
<select id=mb_level_from name=mb_level_from>
<? for ($i=1; $i<=10; $i++) { ?>
<option value='<? echo $i ?>'><? echo $i ?>
<? } ?>
</select> 에서
<select id=mb_level_to name=mb_level_to>
<? for ($i=1; $i<=10; $i++) { ?>
<option value='<? echo $i ?>'><? echo $i ?>
<? } ?>
</select> 까지
<script type="text/javascript"> document.getElementById('mb_level_from').value = "<?=$mb_level_from?>"; </script>
<script type="text/javascript"> document.getElementById('mb_level_to').value = "<?=$mb_level_to?>"; </script>
</td>
</tr>
<tr class='ht'>
<td>게시판그룹회원</td>
<td>
<select id=gr_id name=gr_id>
<option value=''>전체
<?
$sql = " select gr_id, gr_subject from $g4[group_table] order by gr_subject ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
echo "<option value='$row[gr_id]'>$row[gr_subject]";
}
?>
</select>
<script type="text/javascript"> document.getElementById('gr_id').value = "<?=$gr_id?>"; </script>
</td>
</tr>
<tr><td colspan='2' class='line2'></td></tr>
</table>
<p align=center>
<input type=submit class=btn1 value=' 확 인 '>&nbsp;
<input type=button class=btn1 value=' 목 록 ' onclick="document.location.href='./mail_list.php';">
</form>
</td>
</tr></table>
<?
include_once("./admin.tail.php");
?>

141
adm/mail_select_list.php Normal file
View File

@ -0,0 +1,141 @@
<?
$sub_menu = "200300";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$token = get_token();
$html_title = "선택된 회원메일리스트";
$ma_last_option = "";
$sql_common = " from $g4[member_table] ";
$sql_where = " where (1) ";
// 회원ID ..에서 ..까지
if ($mb_id1 != 1)
$sql_where .= " and mb_id between '$mb_id1_from' and '$mb_id1_to' ";
// E-mail에 특정 단어 포함
if ($mb_email != "")
$sql_where .= " and mb_email like '%$mb_email%' ";
// 성별
if ($mb_sex != "")
$sql_where .= " and mb_sex = '$mb_sex' ";
// 생일
if ($mb_birth_from && $mb_birth_to)
$sql_where .= " and substring(mb_birth,5,4) between '$mb_birth_from' and '$mb_birth_to' ";
// 지역
if ($mb_area != "")
$sql_where .= " and mb_addr1 like '$mb_area%' ";
// 메일링
if ($mb_mailling != "")
$sql_where .= " and mb_mailling = '$mb_mailling' ";
// 권한
$sql_where .= " and mb_level between '$mb_level_from' and '$mb_level_to' ";
// 게시판그룹회원
if ($gr_id)
{
$group_member = "";
$comma = "";
$sql2 = " select mb_id from $g4[group_member_table] where gr_id = '$gr_id' order by mb_id ";
$result2 = sql_query($sql2);
for ($k=0; $row2=sql_fetch_array($result2); $k++)
{
$group_member .= "{$comma}'$row2[mb_id]'";
$comma = ",";
}
if (!$group_member)
alert("선택하신 게시판 그룹회원이 한명도 없습니다.");
$sql_where .= " and mb_id in ($group_member) ";
}
// 탈퇴, 차단된 회원은 제외
$sql_where .= " and mb_leave_date = '' and mb_intercept_date = '' ";
$sql = " select COUNT(*) as cnt $sql_common $sql_where ";
$row = sql_fetch($sql);
$cnt = $row[cnt];
if ($cnt == 0)
alert("선택하신 내용으로는 해당되는 회원자료가 없습니다.");
// 마지막 옵션을 저장합니다.
$ma_last_option .= "mb_id1=$mb_id1";
$ma_last_option .= "||mb_id1_from=$mb_id1_from";
$ma_last_option .= "||mb_id1_to=$mb_id1_to";
$ma_last_option .= "||mb_email=$mb_email";
$ma_last_option .= "||mb_sex=$mb_sex";
$ma_last_option .= "||mb_birth_from=$mb_birth_from";
$ma_last_option .= "||mb_birth_to=$mb_birth_to";
$ma_last_option .= "||mb_area=$mb_area";
$ma_last_option .= "||mb_mailling=$mb_mailling";
$ma_last_option .= "||mb_level_from=$mb_level_from";
$ma_last_option .= "||mb_level_to=$mb_level_to";
$ma_last_option .= "||gr_id=$gr_id";
sql_query(" update $g4[mail_table] set ma_last_option = '$ma_last_option' where ma_id = '$ma_id' ");
include_once("./admin.head.php");
?>
<table width=500 align=center><tr><td>
<?//=subtitle_bar($html_title)?><p>
<div align=right>선택된 회원수 : <?=number_format($cnt)?> 명</div>
<form name=fmailselectlist method=post onsubmit="return fmailselectlist_submit(this);">
<input type=hidden name=token value='<?=$token?>'>
<table cellpadding=4 cellspacing=1 width=100% class=tablebg>
<input type="hidden" name="ma_id" value="<? echo $ma_id ?>">
<tr>
<td align=center>
<select size=25 name='list' style='width:500px;'>
<option>번호 . 회원아이디 / 이름 / 별명 / 생일 / E-mail
<?
$sql = " select mb_id, mb_name, mb_nick, mb_email, mb_birth, mb_datetime $sql_common $sql_where order by mb_id ";
$result = sql_query($sql);
$i=0;
$ma_list = "";
$cr = "";
while ($row=sql_fetch_array($result))
{
$i++;
echo "<option>$i . $row[mb_id] / $row[mb_name] / $row[mb_nick] / $row[mb_birth] / $row[mb_email]";
$ma_list .= $cr . $row[mb_email] . "||" . $row[mb_id] . "||" . $row[mb_name] . "||" . $row[mb_nick] . "||" . $row[mb_birth] . "||" . $row[mb_datetime];
$cr = "\n";
}
?>
</select>
<textarea name="ma_list" style="display:none"><?=$ma_list?></textarea>
</td>
</tr>
</table>
<p align=center>
<input type=submit class=btn1 value=' 메일 보내기 '>&nbsp;
<input type=button class=btn1 value=' 뒤 로 ' onclick="history.go(-1);">
</form>
</td></tr></table>
<script type='text/javascript'>
function fmailselectlist_submit(f)
{
f.action = "./mail_select_update.php";
return true;
}
</script>
<?
include_once("./admin.tail.php");
?>

View File

@ -0,0 +1,96 @@
<?
$sub_menu = "200300";
include_once("./_common.php");
auth_check($auth[$sub_menu], "w");
$html_title = "회원메일 발송";
check_demo();
check_token();
include_once("./admin.head.php");
include_once("$g4[path]/lib/mailer.lib.php");
$countgap = 10; // 몇건씩 보낼지 설정
$maxscreen = 500; // 몇건씩 화면에 보여줄건지?
$sleepsec = 200; // 천분의 몇초간 쉴지 설정
echo "<span style='font-size:9pt;'>";
echo "<p>메일 발송중 ...<p><font color=crimson><b>[끝]</b></font> 이라는 단어가 나오기 전에는 중간에 중지하지 마세요.<p>";
echo "</span>";
?>
<span id="cont"></span>
<?
include_once("./admin.tail.php");
?>
<?
flush();
ob_flush();
$ma_id = trim($_POST[ma_id]);
$select_member_list = addslashes(trim($_POST[ma_list]));
//print_r2($_POST); EXIT;
$member_list = explode("\n", $select_member_list);
// 메일내용 가져오기
$sql = "select ma_subject, ma_content from $g4[mail_table] where ma_id = '$ma_id' ";
$ma = sql_fetch($sql);
$subject = $ma[ma_subject];
$cnt = 0;
for ($i=0; $i<count($member_list); $i++)
{
list($email, $mb_id, $name, $nick, $birth, $datetime) = explode("||", trim($member_list[$i]));
$sw = preg_match("/[0-9a-zA-Z_]+(\.[0-9a-zA-Z_]+)*@[0-9a-zA-Z_]+(\.[0-9a-zA-Z_]+)*/", $email);
// 올바른 메일 주소만
if ($sw == true)
{
$cnt++;
$mb_md5 = md5($mb_id.$email.$datetime);
$content = $ma[ma_content];
$content = preg_replace("/{이름}/", $name, $content);
$content = preg_replace("/{별명}/", $nick, $content);
$content = preg_replace("/{회원아이디}/", $mb_id, $content);
$content = preg_replace("/{이메일}/", $email, $content);
$content = preg_replace("/{생일}/", (int)substr($birth,4,2).'월 '.(int)substr($birth,6,2).'일', $content);
$content = $content . "<hr size=0><p><span style='font-size:9pt; font-familye:굴림'>▶ 더 이상 정보 수신을 원치 않으시면 [<a href='$g4[url]/$g4[bbs]/email_stop.php?mb_id=$mb_id&mb_md5=$mb_md5' target='_blank'>수신거부</a>] 해 주십시오.</span></p>";
/*
ob_start();
include "$mail_skin/mail.skin.php";
$content = ob_get_contents();
ob_end_clean();
*/
//mailer($default[de_subject], $default[de_admin_email], $email, $subject, $content, 1);
mailer($config[cf_title], $member[mb_email], $email, $subject, $content, 1);
echo "<script> document.all.cont.innerHTML += '$cnt. $email ($mb_id : $name)<br>'; </script>\n";
//echo "+";
flush();
ob_flush();
ob_end_flush();
usleep($sleepsec);
if ($cnt % $countgap == 0)
{
echo "<script> document.all.cont.innerHTML += '<br>'; document.body.scrollTop += 1000; </script>\n";
}
// 화면을 지운다... 부하를 줄임
if ($cnt % $maxscreen == 0)
echo "<script> document.all.cont.innerHTML = ''; document.body.scrollTop += 1000; </script>\n";
}
}
?>
<script> document.all.cont.innerHTML += "<br><br>총 <?=number_format($cnt)?>건 발송<br><br><font color=crimson><b>[끝]</b></font>"; document.body.scrollTop += 1000; </script>

41
adm/mail_test.php Normal file
View File

@ -0,0 +1,41 @@
<?
$sub_menu = "200300";
include_once("./_common.php");
if (!$config[cf_email_use])
alert("환경설정에서 \'메일발송 사용\'에 체크하셔야 메일을 발송할 수 있습니다.");
include_once("$g4[path]/lib/mailer.lib.php");
auth_check($auth[$sub_menu], "w");
check_demo();
$g4[title] = "회원메일 테스트";
$name = $member[mb_name];
$nick = $member[mb_nick];
$mb_id = $member[mb_id];
$email = $member[mb_email];
$birth = $member[mb_birth];
$sql = "select ma_subject, ma_content from $g4[mail_table] where ma_id = '$ma_id' ";
$ma = sql_fetch($sql);
$subject = $ma[ma_subject];
$content = $ma[ma_content];
$content = preg_replace("/{이름}/", $name, $content);
$content = preg_replace("/{별명}/", $nick, $content);
$content = preg_replace("/{회원아이디}/", $mb_id, $content);
$content = preg_replace("/{이메일}/", $email, $content);
$content = preg_replace("/{생일}/", (int)substr($birth,4,2).'월 '.(int)substr($birth,6,2).'일', $content);
$mb_md5 = md5($member[mb_id].$member[mb_email].$member[mb_datetime]);
$content = $content . "<hr size=0><p><span style='font-size:9pt; font-familye:굴림'>▶ 더 이상 정보 수신을 원치 않으시면 [<a href='$g4[url]/$g4[bbs]/email_stop.php?mb_id=$mb_id&mb_md5=$mb_md5' target='_blank'>수신거부</a>] 해 주십시오.</span></p>";
mailer($config[cf_title], $member[mb_email], $member[mb_email], $subject, $content, 1);
alert("$member[mb_nick]($member[mb_email])님께 테스트 메일을 발송하였습니다.\\n\\n확인하여 주십시오.");
?>

39
adm/mail_update.php Normal file
View File

@ -0,0 +1,39 @@
<?
$sub_menu = "200300";
include_once("./_common.php");
if ($w == 'u' || $w == 'd')
check_demo();
auth_check($auth[$sub_menu], "w");
check_token();
if ($w == "")
{
$sql = " insert $g4[mail_table]
set ma_id = '$_POST[ma_id]',
ma_subject = '$_POST[ma_subject]',
ma_content = '$_POST[ma_content]',
ma_time = '$g4[time_ymdhis]',
ma_ip = '$_SERVER[REMOTE_ADDR]' ";
sql_query($sql);
}
else if ($w == "u")
{
$sql = " update $g4[mail_table]
set ma_subject = '$_POST[ma_subject]',
ma_content = '$_POST[ma_content]',
ma_time = '$g4[time_ymdhis]',
ma_ip = '$_SERVER[REMOTE_ADDR]'
where ma_id = '$_POST[ma_id]' ";
sql_query($sql);
}
else if ($w == "d")
{
$sql = " delete from $g4[mail_table] where ma_id = '$_POST[ma_id]' ";
sql_query($sql);
}
goto_url("./mail_list.php");
?>

29
adm/member_delete.php Normal file
View File

@ -0,0 +1,29 @@
<?
$sub_menu = "200100";
include_once("./_common.php");
check_demo();
auth_check($auth[$sub_menu], "d");
$mb = get_member($_POST['mb_id']);
if (!$mb[mb_id])
alert("회원자료가 존재하지 않습니다.");
else if ($member[mb_id] == $mb[mb_id])
alert("로그인 중인 관리자는 삭제 할 수 없습니다.");
else if (is_admin($mb[mb_id]) == "super")
alert("최고 관리자는 삭제할 수 없습니다.");
else if ($mb[mb_level] >= $member[mb_level])
alert("자신보다 권한이 높거나 같은 회원은 삭제할 수 없습니다.");
check_token();
// 회원자료 삭제
member_delete($mb[mb_id]);
if ($url)
goto_url("{$url}?$qstr&w=u&mb_id=$mb_id");
else
goto_url("./member_list.php?$qstr");
?>

262
adm/member_form.php Normal file
View File

@ -0,0 +1,262 @@
<?
$sub_menu = "200100";
include_once("./_common.php");
auth_check($auth[$sub_menu], "w");
$token = get_token();
if ($w == "")
{
$required_mb_id = "required minlength=3 alphanumericunderline itemname='회원아이디'";
$required_mb_password = "required itemname='패스워드'";
$mb[mb_mailling] = 1;
$mb[mb_open] = 1;
$mb[mb_level] = $config[cf_register_level];
$html_title = "등록";
}
else if ($w == "u")
{
$mb = get_member($mb_id);
if (!$mb[mb_id])
alert("존재하지 않는 회원자료입니다.");
if ($is_admin != 'super' && $mb[mb_level] >= $member[mb_level])
alert("자신보다 권한이 높거나 같은 회원은 수정할 수 없습니다.");
$required_mb_id = "readonly style='background-color:#dddddd;'";
$required_mb_password = "";
$html_title = "수정";
$mb[mb_email] = get_text($mb[mb_email]);
$mb[mb_homepage] = get_text($mb[mb_homepage]);
$mb[mb_password_q] = get_text($mb[mb_password_q]);
$mb[mb_password_a] = get_text($mb[mb_password_a]);
$mb[mb_birth] = get_text($mb[mb_birth]);
$mb[mb_tel] = get_text($mb[mb_tel]);
$mb[mb_hp] = get_text($mb[mb_hp]);
$mb[mb_addr1] = get_text($mb[mb_addr1]);
$mb[mb_addr2] = get_text($mb[mb_addr2]);
$mb[mb_signature] = get_text($mb[mb_signature]);
$mb[mb_recommend] = get_text($mb[mb_recommend]);
$mb[mb_profile] = get_text($mb[mb_profile]);
$mb[mb_1] = get_text($mb[mb_1]);
$mb[mb_2] = get_text($mb[mb_2]);
$mb[mb_3] = get_text($mb[mb_3]);
$mb[mb_4] = get_text($mb[mb_4]);
$mb[mb_5] = get_text($mb[mb_5]);
$mb[mb_6] = get_text($mb[mb_6]);
$mb[mb_7] = get_text($mb[mb_7]);
$mb[mb_8] = get_text($mb[mb_8]);
$mb[mb_9] = get_text($mb[mb_9]);
$mb[mb_10] = get_text($mb[mb_10]);
}
else
alert("제대로 된 값이 넘어오지 않았습니다.");
if ($mb[mb_mailling]) $mailling_checked = "checked"; // 메일 수신
if ($mb[mb_sms]) $sms_checked = "checked"; // SMS 수신
if ($mb[mb_open]) $open_checked = "checked"; // 정보 공개
$g4[title] = "회원정보 " . $html_title;
include_once("./admin.head.php");
?>
<table width=100% align=center cellpadding=0 cellspacing=0>
<form name=fmember method=post onsubmit="return fmember_submit(this);" enctype="multipart/form-data" autocomplete="off">
<input type=hidden name=w value='<?=$w?>'>
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=page value='<?=$page?>'>
<input type=hidden name=token value='<?=$token?>'>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=30% class='col2 pad2'>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=30% class='col2 pad2'>
<tr>
<td colspan=4 class=title align=left><img src='<?=$g4[admin_path]?>/img/icon_title.gif'> <?=$g4[title]?></td>
</tr>
<tr><td colspan=4 class=line1></td></tr>
<tr class='ht'>
<td>아이디</td>
<td>
<input type=text class=ed name='mb_id' size=20 maxlength=20 minlength=2 <?=$required_mb_id?> itemname='아이디' value='<? echo $mb[mb_id] ?>'>
<?if ($w=="u"){?><a href='./boardgroupmember_form.php?mb_id=<?=$mb[mb_id]?>'>접근가능그룹보기</a><?}?>
</td>
<td>패스워드</td>
<td><input type=password class=ed name='mb_password' size=20 maxlength=20 <?=$required_mb_password?> itemname='암호'></td>
</tr>
<tr class='ht'>
<td>이름(실명)</td>
<td><input type=text class=ed name='mb_name' maxlength=20 minlength=2 required itemname='이름(실명)' value='<? echo $mb[mb_name] ?>'></td>
<td>별명</td>
<td><input type=text class=ed name='mb_nick' maxlength=20 minlength=2 required itemname='별명' value='<? echo $mb[mb_nick] ?>'></td>
</tr>
<tr class='ht'>
<td>회원 권한</td>
<td><?=get_member_level_select("mb_level", 1, $member[mb_level], $mb[mb_level])?></td>
<td>포인트</td>
<td><a href='./point_list.php?sfl=mb_id&stx=<?=$mb[mb_id]?>' class='bold'><?=number_format($mb[mb_point])?></a> 점</td>
</tr>
<tr class='ht'>
<td>E-mail</td>
<td><input type=text class=ed name='mb_email' size=40 maxlength=100 required email itemname='e-mail' value='<? echo $mb[mb_email] ?>'></td>
<td>홈페이지</td>
<td><input type=text class=ed name='mb_homepage' size=40 maxlength=255 itemname='홈페이지' value='<? echo $mb[mb_homepage] ?>'></td>
</tr>
<tr class='ht'>
<td>전화번호</td>
<td><input type=text class=ed name='mb_tel' maxlength=20 itemname='전화번호' value='<? echo $mb[mb_tel] ?>'></td>
<td>핸드폰번호</td>
<td><input type=text class=ed name='mb_hp' maxlength=20 itemname='핸드폰번호' value='<? echo $mb[mb_hp] ?>'></td>
</tr>
<tr class='ht'>
<td>주소</td>
<td>
<input type=text class=ed name='mb_zip1' size=4 maxlength=3 readonly itemname='우편번호 앞자리' value='<? echo $mb[mb_zip1] ?>'> -
<input type=text class=ed name='mb_zip2' size=4 maxlength=3 readonly itemname='우편번호 뒷자리' value='<? echo $mb[mb_zip2] ?>'>
<a href="javascript:;" onclick="win_zip('fmember', 'mb_zip1', 'mb_zip2', 'mb_addr1', 'mb_addr2');"><img src='<?=$g4[bbs_img_path]?>/btn_zip.gif' align=absmiddle border=0></a>
<br><input type=text class=ed name='mb_addr1' size=40 readonly value='<? echo $mb[mb_addr1] ?>'>
<br><input type=text class=ed name='mb_addr2' size=25 itemname='상세주소' value='<? echo $mb[mb_addr2] ?>'> 상세주소 입력</td>
<td>회원아이콘</td>
<td colspan=3>
<input type=file name='mb_icon' class=ed><br>이미지 크기는 <?=$config[cf_member_icon_width]?>x<?=$config[cf_member_icon_height]?>으로 해주세요.
<?
$mb_dir = substr($mb[mb_id],0,2);
$icon_file = "$g4[path]/data/member/$mb_dir/$mb[mb_id].gif";
if (file_exists($icon_file)) {
echo "<br><img src='$icon_file' align=absmiddle>";
echo " <input type=checkbox name='del_mb_icon' value='1' class='csscheck'>삭제";
}
?>
</td>
</tr>
<tr class='ht'>
<td>생년월일</td>
<td><input type=text class=ed name=mb_birth size=9 maxlength=8 value='<? echo $mb[mb_birth] ?>'></td>
<td>남녀</td>
<td>
<select name=mb_sex><option value=''>----<option value='F'>여자<option value='M'>남자</select>
<script type="text/javascript"> document.fmember.mb_sex.value = "<?=$mb[mb_sex]?>"; </script></td>
</tr>
<tr class='ht'>
<td>메일 수신</td>
<td><input type=checkbox name=mb_mailling value='1' <?=$mailling_checked?>> 정보 메일을 받음</td>
<td>SMS 수신</td>
<td><input type=checkbox name=mb_sms value='1' <?=$sms_checked?>> 문자메세지를 받음</td>
</tr>
<tr class='ht'>
<td>정보 공개</td>
<td colspan=3><input type=checkbox name=mb_open value='1' <?=$open_checked?>> 타인에게 자신의 정보를 공개</td>
</tr>
<tr class='ht'>
<td>서명</td>
<td><textarea class=ed name=mb_signature rows=5 style='width:99%; word-break:break-all;'><? echo $mb[mb_signature] ?></textarea></td>
<td>자기 소개</td>
<td><textarea class=ed name=mb_profile rows=5 style='width:99%; word-break:break-all;'><? echo $mb[mb_profile] ?></textarea></td>
</tr>
<tr class='ht'>
<td>메모</td>
<td colspan=3><textarea class=ed name=mb_memo rows=5 style='width:99%; word-break:break-all;'><? echo $mb[mb_memo] ?></textarea></td>
</tr>
<? if ($w == "u") { ?>
<tr class='ht'>
<td>회원가입일</td>
<td><?=$mb[mb_datetime]?></td>
<td>최근접속일</td>
<td><?=$mb[mb_today_login]?></td>
</tr>
<tr class='ht'>
<td>IP</td>
<td><?=$mb[mb_ip]?></td>
<? if ($config[cf_use_email_certify]) { ?>
<td>인증일시</td>
<td><?=$mb[mb_email_certify]?>
<? if ($mb[mb_email_certify] == "0000-00-00 00:00:00") { echo "<input type=checkbox name=passive_certify>수동인증"; } ?></td>
<? } else { ?>
<td></td>
<td></td>
<? } ?>
</tr>
<? } ?>
<? if ($config[cf_use_recommend]) { // 추천인 사용 ?>
<tr class='ht'>
<td>추천인</td>
<td colspan=3><?=($mb[mb_recommend] ? get_text($mb[mb_recommend]) : "없음"); // 081022 : CSRF 보안 결함으로 인한 코드 수정 ?></td>
</tr>
<? } ?>
<tr class='ht'>
<td>탈퇴일자</td>
<td><input type=text class=ed name=mb_leave_date size=9 maxlength=8 value='<? echo $mb[mb_leave_date] ?>'></td>
<td>접근차단일자</td>
<td><input type=text class=ed name=mb_intercept_date size=9 maxlength=8 value='<? echo $mb[mb_intercept_date] ?>'> <input type=checkbox value='<? echo date("Ymd"); ?>' onclick='if (this.form.mb_intercept_date.value==this.form.mb_intercept_date.defaultValue) { this.form.mb_intercept_date.value=this.value; } else { this.form.mb_intercept_date.value=this.form.mb_intercept_date.defaultValue; } '>오늘</td>
</tr>
<? for ($i=1; $i<=10; $i=$i+2) { $k=$i+1; ?>
<tr class='ht'>
<td>여분 필드 <?=$i?></td>
<td><input type=text class=ed style='width:99%;' name='mb_<?=$i?>' maxlength=255 value='<?=$mb["mb_$i"]?>'></td>
<td>여분 필드 <?=$k?></td>
<td><input type=text class=ed style='width:99%;' name='mb_<?=$k?>' maxlength=255 value='<?=$mb["mb_$k"]?>'></td>
</tr>
<? } ?>
<tr class='ht'>
<td colspan=4 align=left>
<?=subtitle("XSS / CSRF 방지")?>
</td>
</tr>
<tr><td colspan=4 class=line1></td></tr>
<tr class='ht'>
<td>
관리자 패스워드
</td>
<td colspan=3>
<input class='ed' type='password' name='admin_password' itemname="관리자 패스워드" required>
<?=help("관리자 권한을 빼앗길 것에 대비하여 로그인한 관리자의 패스워드를 한번 더 묻는것 입니다.");?>
</td>
</tr>
<tr><td colspan=4 class=line2></td></tr>
</table>
<p align=center>
<input type=submit class=btn1 accesskey='s' value=' 확 인 '>&nbsp;
<input type=button class=btn1 value=' 목 록 ' onclick="document.location.href='./member_list.php?<?=$qstr?>';">&nbsp;
<? if ($w != '') { ?>
<input type=button class=btn1 value=' 삭 제 ' onclick="del('./member_delete.php?<?=$qstr?>&w=d&mb_id=<?=$mb[mb_id]?>&url=<?=$_SERVER[PHP_SELF]?>');">&nbsp;
<? } ?>
</form>
<script type='text/javascript'>
if (document.fmember.w.value == "")
document.fmember.mb_id.focus();
else if (document.fmember.w.value == "u")
document.fmember.mb_password.focus();
if (typeof(document.fmember.mb_level) != "undefined")
document.fmember.mb_level.value = "<?=$mb[mb_level]?>";
function fmember_submit(f)
{
if (!f.mb_icon.value.match(/\.(gif|jp[e]g|png)$/i) && f.mb_icon.value) {
alert('아이콘이 이미지 파일이 아닙니다. (bmp 제외)');
return false;
}
f.action = './member_form_update.php';
return true;
}
</script>
<?
include_once("./admin.tail.php");
?>

128
adm/member_form_update.php Normal file
View File

@ -0,0 +1,128 @@
<?
$sub_menu = "200100";
include_once("./_common.php");
if ($w == 'u')
check_demo();
auth_check($auth[$sub_menu], "w");
check_token();
if ($member[mb_password] != sql_password($_POST['admin_password'])) {
alert("패스워드가 다릅니다.");
}
$mb_id = mysql_real_escape_string(trim($_POST['mb_id']));
$sql_common = " mb_name = '$_POST[mb_name]',
mb_nick = '$_POST[mb_nick]',
mb_email = '$_POST[mb_email]',
mb_homepage = '$_POST[mb_homepage]',
mb_tel = '$_POST[mb_tel]',
mb_hp = '$_POST[mb_hp]',
mb_zip1 = '$_POST[mb_zip1]',
mb_zip2 = '$_POST[mb_zip2]',
mb_addr1 = '$_POST[mb_addr1]',
mb_addr2 = '$_POST[mb_addr2]',
mb_birth = '$_POST[mb_birth]',
mb_sex = '$_POST[mb_sex]',
mb_signature = '$_POST[mb_signature]',
mb_leave_date = '$_POST[mb_leave_date]',
mb_intercept_date='$_POST[mb_intercept_date]',
mb_memo = '$_POST[mb_memo]',
mb_mailling = '$_POST[mb_mailling]',
mb_sms = '$_POST[mb_sms]',
mb_open = '$_POST[mb_open]',
mb_profile = '$_POST[mb_profile]',
mb_level = '$_POST[mb_level]',
mb_1 = '$_POST[mb_1]',
mb_2 = '$_POST[mb_2]',
mb_3 = '$_POST[mb_3]',
mb_4 = '$_POST[mb_4]',
mb_5 = '$_POST[mb_5]',
mb_6 = '$_POST[mb_6]',
mb_7 = '$_POST[mb_7]',
mb_8 = '$_POST[mb_8]',
mb_9 = '$_POST[mb_9]',
mb_10 = '$_POST[mb_10]' ";
if ($w == "")
{
$mb = get_member($mb_id);
if ($mb[mb_id])
alert("이미 존재하는 회원입니다.\\n\\n : $mb[mb_id]\\n\\n이름 : $mb[mb_name]\\n\\n별명 : $mb[mb_nick]\\n\\n메일 : $mb[mb_email]");
if ($mb[mb_nick] == $mb_nick)
alert("이미 존재하는 별명입니다.\\n\\n : $mb[mb_id]\\n\\n이름 : $mb[mb_name]\\n\\n별명 : $mb[mb_nick]\\n\\n메일 : $mb[mb_email]");
if ($mb[mb_email] == $mb_email)
alert("이미 존재하는 E-mail 입니다.\\n\\n : $mb[mb_id]\\n\\n이름 : $mb[mb_name]\\n\\n별명 : $mb[mb_nick]\\n\\n메일 : $mb[mb_email]");
sql_query(" insert into $g4[member_table] set mb_id = '$mb_id', mb_password = '".sql_password($mb_password)."', mb_datetime = '$g4[time_ymdhis]', mb_ip = '$_SERVER[REMOTE_ADDR]', mb_email_certify = '$g4[time_ymdhis]', $sql_common ");
}
else if ($w == "u")
{
$mb = get_member($mb_id);
if (!$mb[mb_id])
alert("존재하지 않는 회원자료입니다.");
if ($is_admin != "super" && $mb[mb_level] >= $member[mb_level])
alert("자신보다 권한이 높거나 같은 회원은 수정할 수 없습니다.");
if ($_POST[mb_id] == $member[mb_id] && $_POST[mb_level] != $mb[mb_level])
alert("$mb[mb_id] : 로그인 중인 관리자 레벨은 수정 할 수 없습니다.");
$mb_dir = substr($mb_id,0,2);
// 회원 아이콘 삭제
if ($del_mb_icon)
@unlink("$g4[path]/data/member/$mb_dir/$mb_id.gif");
// 아이콘 업로드
if (is_uploaded_file($_FILES[mb_icon][tmp_name])) {
if (!preg_match("/(\.gif)$/i", $_FILES[mb_icon][name])) {
alert($_FILES[mb_icon][name] . '은(는) gif 파일이 아닙니다.');
}
if (preg_match("/(\.gif)$/i", $_FILES[mb_icon][name])) {
@mkdir("$g4[path]/data/member/$mb_dir", 0707);
@chmod("$g4[path]/data/member/$mb_dir", 0707);
$dest_path = "$g4[path]/data/member/$mb_dir/$mb_id.gif";
move_uploaded_file($_FILES[mb_icon][tmp_name], $dest_path);
chmod($dest_path, 0606);
if (file_exists($dest_path)) {
$size = getimagesize($dest_path);
// 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제
if ($size[0] > $config[cf_member_icon_width] || $size[1] > $config[cf_member_icon_height]) {
@unlink($dest_path);
}
}
}
}
if ($mb_password)
$sql_password = " , mb_password = '".sql_password($mb_password)."' ";
else
$sql_password = "";
if ($passive_certify)
$sql_certify = " , mb_email_certify = '$g4[time_ymdhis]' ";
else
$sql_certify = "";
$sql = " update $g4[member_table]
set $sql_common
$sql_password
$sql_certify
where mb_id = '$mb_id' ";
sql_query($sql);
}
else
alert("제대로 된 값이 넘어오지 않았습니다.");
goto_url("./member_form.php?$qstr&w=u&mb_id=$mb_id", false);
?>

263
adm/member_list.php Normal file
View File

@ -0,0 +1,263 @@
<?
$sub_menu = "200100";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$token = get_token();
$sql_common = " from $g4[member_table] ";
$sql_search = " where (1) ";
if ($stx) {
$sql_search .= " and ( ";
switch ($sfl) {
case "mb_point" :
$sql_search .= " ($sfl >= '$stx') ";
break;
case "mb_level" :
$sql_search .= " ($sfl = '$stx') ";
break;
case "mb_tel" :
case "mb_hp" :
$sql_search .= " ($sfl like '%$stx') ";
break;
default :
$sql_search .= " ($sfl like '$stx%') ";
break;
}
$sql_search .= " ) ";
}
//if ($is_admin == 'group') $sql_search .= " and mb_level = '$member[mb_level]' ";
if ($is_admin != 'super')
$sql_search .= " and mb_level <= '$member[mb_level]' ";
if (!$sst) {
$sst = "mb_datetime";
$sod = "desc";
}
$sql_order = " order by $sst $sod ";
$sql = " select count(*) as cnt
$sql_common
$sql_search
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if (!$page) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
// 탈퇴회원수
$sql = " select count(*) as cnt
$sql_common
$sql_search
and mb_leave_date <> ''
$sql_order ";
$row = sql_fetch($sql);
$leave_count = $row[cnt];
// 차단회원수
$sql = " select count(*) as cnt
$sql_common
$sql_search
and mb_intercept_date <> ''
$sql_order ";
$row = sql_fetch($sql);
$intercept_count = $row[cnt];
$listall = "<a href='$_SERVER[PHP_SELF]' class=tt>처음</a>";
$g4[title] = "회원관리";
include_once("./admin.head.php");
$sql = " select *
$sql_common
$sql_search
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
$colspan = 15;
?>
<script type="text/javascript" src="<?=$g4[path]?>/js/sideview.js"></script>
<script type="text/javascript">
var list_update_php = "member_list_update.php";
var list_delete_php = "member_list_delete.php";
</script>
<table width=100%>
<form name=fsearch method=get>
<tr>
<td width=50% align=left><?=$listall?>
(총회원수 : <?=number_format($total_count)?>,
<a href='?sst=mb_intercept_date&sod=desc&sfl=<?=$sfl?>&stx=<?=$stx?>' title='차단된 회원부터 출력'><font color=orange>차단 : <?=number_format($intercept_count)?></font></a>,
<a href='?sst=mb_leave_date&sod=desc&sfl=<?=$sfl?>&stx=<?=$stx?>' title='탈퇴한 회원부터 출력'><font color=crimson>탈퇴 : <?=number_format($leave_count)?></font></a>)
</td>
<td width=50% align=right>
<select name=sfl class=cssfl>
<option value='mb_id'>회원아이디</option>
<option value='mb_name'>이름</option>
<option value='mb_nick'>별명</option>
<option value='mb_level'>권한</option>
<option value='mb_email'>E-MAIL</option>
<option value='mb_tel'>전화번호</option>
<option value='mb_hp'>핸드폰번호</option>
<option value='mb_point'>포인트</option>
<option value='mb_datetime'>가입일시</option>
<option value='mb_ip'>IP</option>
<option value='mb_recommend'>추천인</option>
</select>
<input type=text name=stx class=ed required itemname='검색어' value='<? echo $stx ?>'>
<input type=image src='<?=$g4[admin_path]?>/img/btn_search.gif' align=absmiddle></td>
</tr>
</form>
</table>
<form name=fmemberlist method=post>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=page value='<?=$page?>'>
<input type=hidden name=token value='<?=$token?>'>
<table width=100% cellpadding=0 cellspacing=0>
<colgroup width=30>
<colgroup width=90>
<colgroup width=90>
<colgroup width=90>
<colgroup width=''>
<colgroup width=70>
<colgroup width=80>
<colgroup width=40>
<colgroup width=40>
<colgroup width=40>
<colgroup width=40>
<colgroup width=40>
<colgroup width=80>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td><input type=checkbox name=chkall value='1' onclick='check_all(this.form)'></td>
<td><?=subject_sort_link('mb_id')?>회원아이디</a></td>
<td><?=subject_sort_link('mb_name')?>이름</a></td>
<td><?=subject_sort_link('mb_nick')?>별명</a></td>
<td><?=subject_sort_link('mb_level', '', 'desc')?>권한</a></td>
<td><?=subject_sort_link('mb_point', '', 'desc')?>포인트</a></td>
<td><?=subject_sort_link('mb_today_login', '', 'desc')?>최종접속</a></td>
<td title='메일수신허용여부'><?=subject_sort_link('mb_mailling', '', 'desc')?>수신</a></td>
<td title='정보공개여부'><?=subject_sort_link('mb_open', '', 'desc')?>공개</a></td>
<!-- <td><?=subject_sort_link('mb_leave_date', '', 'desc')?>탈퇴</a></td> -->
<td><?=subject_sort_link('mb_email_certify', '', 'desc')?>인증</a></td>
<td><?=subject_sort_link('mb_intercept_date', '', 'desc')?>차단</a></td>
<td title='접근가능한 그룹수'>그룹</td>
<td><a href="./member_form.php"><img src='<?=$g4[admin_path]?>/img/icon_insert.gif' border=0 title='추가'></a></td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++) {
// 접근가능한 그룹수
$sql2 = " select count(*) as cnt from $g4[group_member_table] where mb_id = '$row[mb_id]' ";
$row2 = sql_fetch($sql2);
$group = "";
if ($row2[cnt])
$group = "<a href='./boardgroupmember_form.php?mb_id=$row[mb_id]'>$row2[cnt]</a>";
if ($is_admin == 'group')
{
$s_mod = "";
$s_del = "";
}
else
{
$s_mod = "<a href=\"./member_form.php?$qstr&w=u&mb_id=$row[mb_id]\"><img src='img/icon_modify.gif' border=0 title='수정'></a>";
//$s_del = "<a href=\"javascript:del('./member_delete.php?$qstr&w=d&mb_id=$row[mb_id]');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
$s_del = "<a href=\"javascript:post_delete('member_delete.php', '$row[mb_id]');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
}
$s_grp = "<a href='./boardgroupmember_form.php?mb_id=$row[mb_id]'><img src='img/icon_group.gif' border=0 title='그룹'></a>";
$leave_date = $row[mb_leave_date] ? $row[mb_leave_date] : date("Ymd", $g4[server_time]);
$intercept_date = $row[mb_intercept_date] ? $row[mb_intercept_date] : date("Ymd", $g4[server_time]);
$mb_nick = get_sideview($row[mb_id], $row[mb_nick], $row[mb_email], $row[mb_homepage]);
$mb_id = $row[mb_id];
if ($row[mb_leave_date])
$mb_id = "<font color=crimson>$mb_id</font>";
else if ($row[mb_intercept_date])
$mb_id = "<font color=orange>$mb_id</font>";
$list = $i%2;
echo "
<input type=hidden name=mb_id[$i] value='$row[mb_id]'>
<tr class='list$list col1 ht center'>
<td><input type=checkbox name=chk[] value='$i'></td>
<td title='$row[mb_id]'><nobr style='display:block; overflow:hidden; width:90;'>&nbsp;$mb_id</nobr></td>
<td><nobr style='display:block; overflow:hidden; width:90px;'>$row[mb_name]</nobr></td>
<td><nobr style='display:block; overflow:hidden; width:90px;'><u>$mb_nick</u></nobr></td>
<td>".get_member_level_select("mb_level[$i]", 1, $member[mb_level], $row[mb_level])."</td>
<td align=right><a href='point_list.php?sfl=mb_id&stx=$row[mb_id]' class=tt>".number_format($row[mb_point])."</a>&nbsp;</td>
<td>".substr($row[mb_today_login],2,8)."</td>
<td>".($row[mb_mailling]?'&radic;':'&nbsp;')."</td>
<td>".($row[mb_open]?'&radic;':'&nbsp;')."</td>
<!-- <td title='$row[mb_leave_date]'>".($row[mb_leave_date]?'&radic;':'&nbsp;')."</td> -->
<td title='$row[mb_email_certify]'>".(preg_match('/[1-9]/', $row[mb_email_certify])?'&radic;':'&nbsp;')."</td>
<td title='$row[mb_intercept_date]'><input type=checkbox name=mb_intercept_date[$i] ".($row[mb_intercept_date]?'checked':'')." value='$intercept_date'></td>
<td>$group</td>
<td>$s_mod $s_del $s_grp</td>
</tr>";
}
if ($i == 0)
echo "<tr><td colspan='$colspan' align=center height=100 class=contentbg>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
$pagelist = get_paging($config[cf_write_pages], $page, $total_page, "?$qstr&page=");
echo "<table width=100% cellpadding=3 cellspacing=1>";
echo "<tr><td width=50%>";
echo "<input type=button class='btn1' value='선택수정' onclick=\"btn_check(this.form, 'update')\">&nbsp;";
echo "<input type=button class='btn1' value='선택삭제' onclick=\"btn_check(this.form, 'delete')\">";
echo "</td>";
echo "<td width=50% align=right>$pagelist</td></tr></table>\n";
if ($stx)
echo "<script type='text/javascript'>document.fsearch.sfl.value = '$sfl';</script>\n";
?>
</form>
* 회원자료 삭제시 다른 회원이 기존 회원아이디를 사용하지 못하도록 회원아이디, 이름, 별명은 삭제하지 않고 영구 보관합니다.
<script>
// POST 방식으로 삭제
function post_delete(action_url, val)
{
var f = document.fpost;
if(confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) {
f.mb_id.value = val;
f.action = action_url;
f.submit();
}
}
</script>
<form name='fpost' method='post'>
<input type='hidden' name='sst' value='<?=$sst?>'>
<input type='hidden' name='sod' value='<?=$sod?>'>
<input type='hidden' name='sfl' value='<?=$sfl?>'>
<input type='hidden' name='stx' value='<?=$stx?>'>
<input type='hidden' name='page' value='<?=$page?>'>
<input type='hidden' name='token' value='<?=$token?>'>
<input type='hidden' name='mb_id'>
</form>
<?
include_once ("./admin.tail.php");
?>

View File

@ -0,0 +1,37 @@
<?
$sub_menu = "200100";
include_once("./_common.php");
check_demo();
auth_check($auth[$sub_menu], "d");
check_token();
$msg = "";
for ($i=0; $i<count($chk); $i++)
{
// 실제 번호를 넘김
$k = $_POST['chk'][$i];
$mb = get_member($_POST['mb_id'][$k]);
if (!$mb[mb_id]) {
$msg .= "$mb[mb_id] : 회원자료가 존재하지 않습니다.\\n";
} else if ($member[mb_id] == $mb[mb_id]) {
$msg .= "$mb[mb_id] : 로그인 중인 관리자는 삭제 할 수 없습니다.\\n";
} else if (is_admin($mb[mb_id]) == "super") {
$msg .= "$mb[mb_id] : 최고 관리자는 삭제할 수 없습니다.\\n";
} else if ($is_admin != "super" && $mb[mb_level] >= $member[mb_level]) {
$msg .= "$mb[mb_id] : 자신보다 권한이 높거나 같은 회원은 삭제할 수 없습니다.\\n";
} else {
// 회원자료 삭제
member_delete($mb[mb_id]);
}
}
if ($msg)
echo "<script type='text/javascript'> alert('$msg'); </script>";
goto_url("./member_list.php?$qstr");
?>

View File

@ -0,0 +1,37 @@
<?
$sub_menu = "200100";
include_once("./_common.php");
check_demo();
auth_check($auth[$sub_menu], "w");
check_token();
for ($i=0; $i<count($chk); $i++)
{
// 실제 번호를 넘김
$k = $_POST['chk'][$i];
$mb = get_member($_POST['mb_id'][$k]);
if (!$mb[mb_id]) {
$msg .= "$mb[mb_id] : 회원자료가 존재하지 않습니다.\\n";
} else if ($is_admin != "super" && $mb[mb_level] >= $member[mb_level]) {
$msg .= "$mb[mb_id] : 자신보다 권한이 높거나 같은 회원은 수정할 수 없습니다.\\n";
} else if ($member[mb_id] == $mb[mb_id]) {
$msg .= "$mb[mb_id] : 로그인 중인 관리자는 수정 할 수 없습니다.\\n";
} else {
$sql = " update $g4[member_table]
set mb_level = '{$_POST['mb_level'][$k]}',
mb_intercept_date = '{$_POST['mb_intercept_date'][$k]}'
where mb_id = '{$_POST['mb_id'][$k]}' ";
sql_query($sql);
}
}
if ($msg)
echo "<script type='text/javascript'> alert('$msg'); </script>";
goto_url("./member_list.php?$qstr");
?>

10
adm/phpinfo.php Normal file
View File

@ -0,0 +1,10 @@
<?
$sub_menu = "100500";
include_once("./_common.php");
check_demo();
auth_check($auth[$sub_menu], "r");
phpinfo();
?>

64
adm/point_clear.php Normal file
View File

@ -0,0 +1,64 @@
<?
$sub_menu = "200200";
include_once("./_common.php");
check_demo();
if (!$ok)
alert();
if ($is_admin != "super")
alert("포인트 정리는 최고관리자만 가능합니다.");
$g4[title] = "포인트 정리";
include_once("./admin.head.php");
echo "<span id='ct'></span>";
include_once("./admin.tail.php");
flush();
echo "<script>document.getElementById('ct').innerHTML += '<p>포인트 정리중...';</script>\n";
flush();
$max_count = 50;
// 테이블 락을 걸고
$sql = " LOCK TABLES $g4[member_table] WRITE, $g4[point_table] WRITE ";
sql_query($sql);
$sql = " select mb_id, count(po_point) as cnt
from $g4[point_table]
group by mb_id
having cnt > {$max_count}+1
order by cnt ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$count = 0;
$total = 0;
$sql2 = " select po_id, po_point
from $g4[point_table]
where mb_id = '$row[mb_id]'
order by po_id desc
limit $max_count, $row[cnt] ";
$result2 = sql_query($sql2);
for ($k=0; $row2=sql_fetch_array($result2); $k++)
{
$count++;
$total += $row2[po_point];
sql_query(" delete from $g4[point_table] where po_id = '$row2[po_id]' ");
}
insert_point($row[mb_id], $total, "포인트 {$count}건 정리", "@clear", $row[mb_id], $g4[time_ymd]."-".uniqid(""));
$str = $row[mb_id]."님 포인트 내역 ".number_format($count)."".number_format($total)."점 정리<br>";
echo "<script>document.getElementById('ct').innerHTML += '$str';</script>\n";
flush();
}
// 테이블 락을 풀고
$sql = " UNLOCK TABLES ";
sql_query($sql);
echo "<script>document.getElementById('ct').innerHTML += '<p>총 ".$i."건의 회원포인트 내역이 정리 되었습니다.';</script>\n";
?>

236
adm/point_list.php Normal file
View File

@ -0,0 +1,236 @@
<?
$sub_menu = "200200";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$token = get_token();
$sql_common = " from $g4[point_table] ";
$sql_search = " where (1) ";
if ($stx) {
$sql_search .= " and ( ";
switch ($sfl) {
case "mb_id" :
$sql_search .= " ($sfl = '$stx') ";
break;
default :
$sql_search .= " ($sfl like '%$stx%') ";
break;
}
$sql_search .= " ) ";
}
if (!$sst) {
$sst = "po_id";
$sod = "desc";
}
$sql_order = " order by $sst $sod ";
$sql = " select count(*) as cnt
$sql_common
$sql_search
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select *
$sql_common
$sql_search
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
$listall = "<a href='$_SERVER[PHP_SELF]'>처음</a>";
if ($sfl == "mb_id" && $stx)
$mb = get_member($stx);
$g4[title] = "포인트관리";
include_once ("./admin.head.php");
$colspan = 8;
?>
<script type="text/javascript" src="<?=$g4[path]?>/js/sideview.js"></script>
<script type="text/javascript">
var list_update_php = "";
var list_delete_php = "point_list_delete.php";
</script>
<script type="text/javascript">
function point_clear()
{
if (confirm("포인트 정리를 하시면 최근 50건 이전의 포인트 부여 내역을 삭제하므로\n\n포인트 부여 내역을 필요로 할때 찾지 못할 수도 있습니다.\n\n\n그래도 진행하시겠습니까?"))
{
document.location.href = "./point_clear.php?ok=1";
}
}
</script>
<table width=100%>
<form name=fsearch method=get>
<tr>
<td width=50% align=left>
<?=$listall?> (건수 : <?=number_format($total_count)?>)
<?
if ($mb[mb_id])
echo "&nbsp;(" . $mb[mb_id] ." 님 포인트 합계 : " . number_format($mb[mb_point]) . "점)";
else {
$row2 = sql_fetch(" select sum(po_point) as sum_point from $g4[point_table] ");
echo "&nbsp;(전체 포인트 합계 : " . number_format($row2[sum_point]) . "점)";
}
?>
<? if ($is_admin == "super") { ?><!-- <a href="javascript:point_clear();">포인트정리</a> --><? } ?>
</td>
<td width=50% align=right>
<select name=sfl class=cssfl>
<option value='mb_id'>회원아이디</option>
<option value='po_content'>내용</option>
</select>
<input type=text name=stx class=ed required itemname='검색어' value='<?=$stx?>'>
<input type=image src='<?=$g4[admin_path]?>/img/btn_search.gif' align=absmiddle></td>
</tr>
</form>
</table>
<form name=fpointlist method=post>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=page value='<?=$page?>'>
<input type=hidden name=token value='<?=$token?>'>
<table width=100% cellpadding=0 cellspacing=1>
<colgroup width=30>
<colgroup width=100>
<colgroup width=80>
<colgroup width=80>
<colgroup width=140>
<colgroup width=''>
<colgroup width=50>
<colgroup width=80>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td><input type=checkbox name=chkall value='1' onclick='check_all(this.form)'></td>
<td><?=subject_sort_link('mb_id')?>회원아이디</a></td>
<td>이름</td>
<td>별명</td>
<td><?=subject_sort_link('po_datetime')?>일시</a></td>
<td><?=subject_sort_link('po_content')?>포인트 내용</a></td>
<td><?=subject_sort_link('po_point')?>포인트</a></td>
<td>포인트합</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++)
{
if ($row2[mb_id] != $row[mb_id])
{
$sql2 = " select mb_id, mb_name, mb_nick, mb_email, mb_homepage, mb_point from $g4[member_table] where mb_id = '$row[mb_id]' ";
$row2 = sql_fetch($sql2);
}
$mb_nick = get_sideview($row[mb_id], $row2[mb_nick], $row2[mb_email], $row2[mb_homepage]);
$link1 = $link2 = "";
if (!preg_match("/^\@/", $row[po_rel_table]) && $row[po_rel_table])
{
$link1 = "<a href='$g4[bbs_path]/board.php?bo_table={$row[po_rel_table]}&wr_id={$row[po_rel_id]}' target=_blank>";
$link2 = "</a>";
}
$list = $i%2;
echo "
<input type=hidden name=po_id[$i] value='$row[po_id]'>
<input type=hidden name=mb_id[$i] value='$row[mb_id]'>
<tr class='list$list col1 ht center'>
<td><input type=checkbox name=chk[] value='$i'></td>
<td><a href='?sfl=mb_id&stx=$row[mb_id]'>$row[mb_id]</a></td>
<td>$row2[mb_name]</td>
<td>$mb_nick</td>
<td>$row[po_datetime]</td>
<td align=left>&nbsp;{$link1}$row[po_content]{$link2}</td>
<td align=right>".number_format($row[po_point])."&nbsp;</td>
<td align=right>".number_format($row2[mb_point])."&nbsp;</td>
</tr> ";
}
if ($i == 0)
echo "<tr><td colspan='$colspan' align=center height=100 bgcolor=#ffffff>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
$pagelist = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&page=");
echo "<table width=100% cellpadding=3 cellspacing=1>";
echo "<tr><td width=50%>";
echo "<input type=button class='btn1' value='선택삭제' onclick=\"btn_check(this.form, 'delete')\">";
echo "</td>";
echo "<td width=50% align=right>$pagelist</td></tr></table>\n";
if ($stx)
echo "<script type='text/javascript'>document.fsearch.sfl.value = '$sfl';</script>\n";
if (strstr($sfl, "mb_id"))
$mb_id = $stx;
else
$mb_id = "";
?>
</form>
<script type='text/javascript'> document.fsearch.stx.focus(); </script>
<?$colspan=5?>
<p>
<form name=fpointlist2 method=post onsubmit="return fpointlist2_submit(this);" autocomplete="off">
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=page value='<?=$page?>'>
<input type=hidden name=token value='<?=$token?>'>
<table width=100% cellpadding=0 cellspacing=1 class=tablebg>
<colgroup width=150>
<colgroup width=''>
<colgroup width=100>
<colgroup width=120>
<colgroup width=100>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>회원아이디</td>
<td>포인트 내용</td>
<td>포인트</td>
<td>관리자패스워드</td>
<td>입력</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<tr class='ht center'>
<td><input type=text class=ed name=mb_id required itemname='회원아이디' value='<?=$mb_id?>'></td>
<td><input type=text class=ed name=po_content required itemname='내용' style='width:99%;'></td>
<td><input type=text class=ed name=po_point required itemname='포인트' size=10></td>
<td><input type=password class=ed name=admin_password required itemname='관리자 패스워드'></td>
<td><input type=submit class=btn1 value=' 확 인 '></td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
</form>
</table>
<script type="text/javascript">
function fpointlist2_submit(f)
{
f.action = "./point_update.php";
return true;
}
</script>
<?
include_once ("./admin.tail.php");
?>

28
adm/point_list_delete.php Normal file
View File

@ -0,0 +1,28 @@
<?
$sub_menu = "200200";
include_once("./_common.php");
check_demo();
auth_check($auth[$sub_menu], "d");
check_token();
for ($i=0; $i<count($chk); $i++)
{
// 실제 번호를 넘김
$k = $_POST['chk'][$i];
$sql = " delete from $g4[point_table] where po_id = '{$_POST['po_id'][$k]}' ";
sql_query($sql);
$sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '{$_POST['mb_id'][$k]}' ";
$row = sql_fetch($sql);
$sum_point = $row[sum_po_point];
$sql= " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '{$_POST['mb_id'][$k]}' ";
sql_query($sql);
}
goto_url("./point_list.php?$qstr");
?>

28
adm/point_update.php Normal file
View File

@ -0,0 +1,28 @@
<?
$sub_menu = "200200";
include_once("./_common.php");
auth_check($auth[$sub_menu], "w");
check_token();
if ($member[mb_password] != sql_password($_POST['admin_password'])) {
alert("패스워드가 다릅니다.");
}
$mb_id = $_POST['mb_id'];
$po_point = $_POST['po_point'];
$po_content = $_POST['po_content'];
$mb = get_member($mb_id);
if (!$mb[mb_id])
alert("존재하는 회원아이디가 아닙니다.", "./point_list.php?$qstr");
if (($po_point < 0) && ($po_point * (-1) > $mb[mb_point]))
alert("포인트를 깎는 경우 현재 포인트보다 작으면 안됩니다.", "./point_list.php?$qstr");
insert_point($mb_id, $po_point, $po_content, '@passive', $mb_id, $member[mb_id]."-".uniqid(""));
goto_url("./point_list.php?$qstr");
?>

121
adm/poll_form.php Normal file
View File

@ -0,0 +1,121 @@
<?
$sub_menu = "200900";
include_once("./_common.php");
auth_check($auth[$sub_menu], "w");
$token = get_token();
$html_title = "투표";
if ($w == "")
$html_title .= " 생성";
else if ($w == "u") {
$html_title .= " 수정";
$sql = " select * from $g4[poll_table] where po_id = '$po_id' ";
$po = sql_fetch($sql);
} else
alert("w 값이 제대로 넘어오지 않았습니다.");
$g4[title] = $html_title;
include_once("./admin.head.php");
?>
<form name=fpoll method=post onsubmit="return fpoll_check(this);" enctype="multipart/form-data">
<input type=hidden name=po_id value='<?=$po_id?>'>
<input type=hidden name=w value='<?=$w?>'>
<input type=hidden name=sfl value='<?=$sfl?>'>
<input type=hidden name=stx value='<?=$stx?>'>
<input type=hidden name=sst value='<?=$sst?>'>
<input type=hidden name=sod value='<?=$sod?>'>
<input type=hidden name=page value='<?=$page?>'>
<input type=hidden name=token value='<?=$token?>'>
<table width=100% cellpadding=0 cellspacing=0>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=30% class='col2 pad2'>
<colgroup width=20% class='col1 pad1 bold right'>
<colgroup width=30% class='col2 pad2'>
<tr>
<td colspan=4 class=title align=left><img src='<?=$g4[admin_path]?>/img/icon_title.gif'> <?=$html_title?></td>
</tr>
<tr><td colspan=4 class='line1'></td></tr>
<tr class='ht'>
<td>투표 제목</td>
<td colspan=3><input type='text' class=ed name='po_subject' style='width:99%;' required itemname='투표 제목' value='<?=$po[po_subject]?>' maxlength="125"></td>
</tr>
<?
for ($i=1; $i<=9; $i++) {
$required = "";
$itemname = "";
if ($i==1 || $i==2) {
$required = "required";
$itemname = "itemname='항목$i'";
}
$po_poll = get_text($po["po_poll".$i]);
echo <<<HEREDOC
<tr class='ht'>
<td>항목{$i}</td>
<td><input type="text" class=ed name="po_poll{$i}" {$required} {$itemname} value="{$po_poll}" style="width:99%;" maxlength="125"></td>
<td>투표수</td>
<td><input type="text" class=ed name="po_cnt{$i}" size=5 value="{$po["po_cnt".$i]}"></td>
</tr>
HEREDOC;
}
?>
<tr class='ht'>
<td>기타의견</td>
<td colspan=3><input type='text' class=ed name='po_etc' style='width:99%;' value='<?=get_text($po[po_etc])?>' maxlength="125"></td>
</tr>
<tr class='ht'>
<td>투표권한</td>
<td colspan=3><?=get_member_level_select("po_level", 1, 10, $po[po_level])?>이상 투표할 수 있음</td>
</tr>
<tr class='ht'>
<td>포인트</td>
<td colspan=3><input type='text' class=ed name='po_point' size='10' value='<?=$po[po_point]?>'> 점 (투표한 회원에게 부여함)</td>
</tr>
<? if ($w == "u") { ?>
<tr class='ht'>
<td>투표시작일</td>
<td colspan=3><input type="text" class=ed name="po_date" size=10 maxlength=10 value="<?=$po[po_date]?>"></td>
</tr>
<tr class='ht'>
<td>투표참가 IP</td>
<td colspan=3><textarea class=ed name="po_ips" rows=10 style='width:99%;' readonly><?=preg_replace("/\n/", " / ", $po[po_ips])?></textarea></td>
</tr>
<tr class='ht'>
<td>투표참가 회원</td>
<td colspan=3><textarea class=ed name="mb_ids" rows=10 style='width:99%;' readonly><?=preg_replace("/\n/", " / ", $po[mb_ids])?></textarea></td>
</tr>
<? } ?>
<tr><td colspan=4 class='line2'></td></tr>
</table>
<p align=center>
<input type=submit class=btn1 accesskey='s' value=' 확 인 '>&nbsp;
<input type=button class=btn1 value=' 목 록 ' onclick="document.location.href='./poll_list.php?<?=$qstr?>';">
</form>
<script type='text/javascript'>
function fpoll_check(f)
{
f.action = './poll_form_update.php';
return true;
}
</script>
<?
include_once("./admin.tail.php");
?>

70
adm/poll_form_update.php Normal file
View File

@ -0,0 +1,70 @@
<?
$sub_menu = "200900";
include_once("./_common.php");
$w = $_POST['w'];
if ($w == 'u' || $w == 'd')
check_demo();
auth_check($auth[$sub_menu], "w");
check_token();
if ($w == "")
{
$sql = " insert $g4[poll_table]
( po_subject, po_poll1, po_poll2, po_poll3, po_poll4, po_poll5, po_poll6, po_poll7, po_poll8, po_poll9, po_cnt1, po_cnt2, po_cnt3, po_cnt4, po_cnt5, po_cnt6, po_cnt7, po_cnt8, po_cnt9, po_etc, po_level, po_point, po_date )
values ( '$_POST[po_subject]', '$_POST[po_poll1]', '$_POST[po_poll2]', '$_POST[po_poll3]', '$_POST[po_poll4]', '$_POST[po_poll5]', '$_POST[po_poll6]', '$_POST[po_poll7]', '$_POST[po_poll8]', '$_POST[po_poll9]', '$_POST[po_cnt1]', '$_POST[po_cnt2]', '$_POST[po_cnt3]', '$_POST[po_cnt4]', '$_POST[po_cnt5]', '$_POST[po_cnt6]', '$_POST[po_cnt7]', '$_POST[po_cnt8]', '$_POST[po_cnt9]', '$_POST[po_etc]', '$_POST[po_level]', '$_POST[po_point]', '$g4[time_ymdhis]' ) ";
sql_query($sql);
$po_id = mysql_insert_id();
}
else if ($w == "u")
{
$sql = " update $g4[poll_table]
set po_subject = '$_POST[po_subject]',
po_poll1 = '$_POST[po_poll1]',
po_poll2 = '$_POST[po_poll2]',
po_poll3 = '$_POST[po_poll3]',
po_poll4 = '$_POST[po_poll4]',
po_poll5 = '$_POST[po_poll5]',
po_poll6 = '$_POST[po_poll6]',
po_poll7 = '$_POST[po_poll7]',
po_poll8 = '$_POST[po_poll8]',
po_poll9 = '$_POST[po_poll9]',
po_cnt1 = '$_POST[po_cnt1]',
po_cnt2 = '$_POST[po_cnt2]',
po_cnt3 = '$_POST[po_cnt3]',
po_cnt4 = '$_POST[po_cnt4]',
po_cnt5 = '$_POST[po_cnt5]',
po_cnt6 = '$_POST[po_cnt6]',
po_cnt7 = '$_POST[po_cnt7]',
po_cnt8 = '$_POST[po_cnt8]',
po_cnt9 = '$_POST[po_cnt9]',
po_etc = '$_POST[po_etc]',
po_level = '$_POST[po_level]',
po_point = '$_POST[po_point]',
po_date = '$_POST[po_date]'
where po_id = '$_POST[po_id]' ";
sql_query($sql);
}
else if ($w == "d")
{
$sql = " delete from $g4[poll_table] where po_id = '$_POST[po_id]' ";
sql_query($sql);
$sql = " delete from $g4[poll_etc_table] where po_id = '$_POST[po_id]' ";
sql_query($sql);
}
// 가장 큰 투표번호를 기본환경설정에 저장하여
// 투표번호를 넘겨주지 않았을 경우
// 가장 큰 투표번호를 구해야 하는 쿼리를 대체한다
$row = sql_fetch(" select max(po_id) as max_po_id from $g4[poll_table] ");
sql_query(" update $g4[config_table] set cf_max_po_id = '$row[max_po_id]' ");
if ($w == "d")
goto_url("./poll_list.php?$qstr");
else
goto_url("./poll_form.php?w=u&po_id=$po_id&$qstr");
?>

154
adm/poll_list.php Normal file
View File

@ -0,0 +1,154 @@
<?
$sub_menu = "200900";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$token = get_token();
$sql_common = " from $g4[poll_table] ";
$sql_search = " where (1) ";
if ($stx) {
$sql_search .= " and ( ";
switch ($sfl) {
default :
$sql_search .= " ($sfl like '%$stx%') ";
break;
}
$sql_search .= " ) ";
}
if (!$sst) {
$sst = "po_id";
$sod = "desc";
}
$sql_order = " order by $sst $sod ";
$sql = " select count(*) as cnt
$sql_common
$sql_search
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select *
$sql_common
$sql_search
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
$listall = "<a href='$_SERVER[PHP_SELF]' class=tt>처음</a>";
$g4[title] = "투표관리";
include_once("./admin.head.php");
$colspan = 6;
?>
<table width=100%>
<form name=fsearch method=get>
<tr>
<td width=50% align=left><?=$listall?> (투표수 : <?=number_format($total_count)?>개)</td>
<td width=50% align=right>
<select name=sfl>
<option value='po_subject'>제목</option>
</select>
<input type=text name=stx class=ed required itemname='검색어' value='<?=$stx?>'>
<input type=image src='<?=$g4[admin_path]?>/img/btn_search.gif' align=absmiddle></td>
</tr>
</form>
</table>
<table width=100% cellpadding=0 cellspacing=0>
<colgroup width=60>
<colgroup width=''>
<colgroup width=100>
<colgroup width=60>
<colgroup width=60>
<colgroup width=70>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>번호</td>
<td>제목</td>
<td>투표권한</td>
<td>투표수</td>
<td>기타의견</td>
<td><a href="./poll_form.php"><img src='<?=$g4[admin_path]?>/img/icon_insert.gif' border=0 title='생성'></a></td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++) {
$sql2 = " select sum(po_cnt1+po_cnt2+po_cnt3+po_cnt4+po_cnt5+po_cnt6+po_cnt7+po_cnt8+po_cnt9) as sum_po_cnt from $g4[poll_table] where po_id = '$row[po_id]' ";
$row2 = sql_fetch($sql2);
$po_etc = ($row[po_etc]) ? "사용" : "미사용";
$s_mod = "<a href='./poll_form.php?$qstr&w=u&po_id=$row[po_id]'><img src='img/icon_modify.gif' border=0 title='수정'></a>";
//$s_del = "<a href=\"javascript:del('./poll_form_update.php?$qstr&w=d&po_id=$row[po_id]');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
$s_del = "<a href=\"javascript:post_delete('poll_form_update.php', '$row[po_id]');\"><img src='img/icon_delete.gif' border=0 title='삭제'></a>";
$list = $i%2;
echo "
<tr class='list$list col1 ht center'>
<td>$row[po_id]</td>
<td align=left>&nbsp;".cut_str(get_text($row[po_subject]),70)."</td>
<td>$row[po_level]</td>
<td>$row2[sum_po_cnt]</td>
<td>$po_etc</td>
<td>$s_mod $s_del</td>
</tr>";
}
if ($i==0)
echo "<tr><td colspan='$colspan' height=100 align=center bgcolor='#FFFFFF'>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
$pagelist = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&page=");
if ($pagelist)
echo "<table width=100% cellpadding=3 cellspacing=1><tr><td align=right>$pagelist</td></tr></table>\n";
if ($stx)
echo "<script type='text/javascript'>document.fsearch.sfl.value = '$sfl';</script>\n";
?>
<script type='text/javascript'>
document.fsearch.stx.focus();
</script>
<script>
// POST 방식으로 삭제
function post_delete(action_url, val)
{
var f = document.fpost;
if(confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n정말 삭제하시겠습니까?")) {
f.po_id.value = val;
f.action = action_url;
f.submit();
}
}
</script>
<form name='fpost' method='post'>
<input type='hidden' name='sst' value='<?=$sst?>'>
<input type='hidden' name='sod' value='<?=$sod?>'>
<input type='hidden' name='sfl' value='<?=$sfl?>'>
<input type='hidden' name='stx' value='<?=$stx?>'>
<input type='hidden' name='page' value='<?=$page?>'>
<input type='hidden' name='token' value='<?=$token?>'>
<input type='hidden' name='w' value='d'>
<input type='hidden' name='po_id'>
</form>
<?
include_once ("./admin.tail.php");
?>

149
adm/popular_list.php Normal file
View File

@ -0,0 +1,149 @@
<?
$sub_menu = "300300";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
// 체크된 자료 삭제
if (is_array($_POST['chk'])) {
for ($i=0; $i<count($chk); $i++) {
// 실제 번호를 넘김
$k = $chk[$i];
sql_query(" delete from $g4[popular_table] where pp_id = '{$_POST['pp_id'][$k]}' ", true);
}
}
$sql_common = " from $g4[popular_table] a ";
$sql_search = " where (1) ";
if ($stx) {
$sql_search .= " and ( ";
switch ($sfl) {
case "pp_word" :
$sql_search .= " ($sfl like '$stx%') ";
break;
case "pp_date" :
$sql_search .= " ($sfl = '$stx') ";
break;
default :
$sql_search .= " ($sfl like '%$stx%') ";
break;
}
$sql_search .= " ) ";
}
if (!$sst) {
$sst = "pp_id";
$sod = "desc";
}
$sql_order = " order by $sst $sod ";
$sql = " select count(*) as cnt
$sql_common
$sql_search
$sql_order ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select *
$sql_common
$sql_search
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
$listall = "<a href='$_SERVER[PHP_SELF]'>처음</a>";
$g4[title] = "인기검색어관리";
include_once("./admin.head.php");
$colspan = 4;
?>
<script type="text/javascript">
var list_update_php = '';
var list_delete_php = 'popular_list.php';
</script>
<table width=100% cellpadding=3 cellspacing=1>
<form name=fsearch method=get>
<tr>
<td width=50% align=left><?=$listall?> (건수 : <?=number_format($total_count)?>개)</td>
<td width=50% align=right>
<select name=sfl>
<option value='pp_word'>검색어</option>
<option value='pp_date'>등록일</option>
</select>
<input type=text name=stx class=ed required itemname='검색어' value='<?=$stx?>'>
<input type=image src='<?=$g4[admin_path]?>/img/btn_search.gif' align=absmiddle></td>
</tr>
</form>
</table>
<form name=fpopularlist method=post>
<input type=hidden name=sst value="<?=$sst?>">
<input type=hidden name=sod value="<?=$sod?>">
<input type=hidden name=sfl value="<?=$sfl?>">
<input type=hidden name=stx value="<?=$stx?>">
<input type=hidden name=page value="<?=$page?>">
<input type=hidden name=token value="<?=$token?>">
<table width=100% cellpadding=0 cellspacing=1>
<colgroup width=30>
<colgroup width=>
<colgroup width=150>
<colgroup width=150>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td><input type=checkbox name=chkall value="1" onclick="check_all(this.form)"></td>
<td><?=subject_sort_link("pp_word")?>검색어</a></td>
<td>등록일</td>
<td>등록IP</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++) {
$word = get_text($row[pp_word]);
$list = $i % 2;
echo "<input type=hidden name=pp_id[$i] value='$row[pp_id]'>";
echo "<tr class='list$list col1 ht center'>";
echo "<td height=25><input type=checkbox name=chk[] value='$i'></td>";
echo "<td align='left'>&nbsp; <a href='$_SERVER[PHP_SELF]?sfl=pp_word&stx=$word'>$word</a></td>";
echo "<td>$row[pp_date]</td>";
echo "<td>$row[pp_ip]</td>";
echo "</tr>";
echo "<tr class='list$list col1 ht center'>";
echo "</tr>\n";
}
if ($i == 0)
echo "<tr><td colspan='$colspan' align=center height=100 bgcolor=#ffffff>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
$pagelist = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&page=");
echo "<table width=100% cellpadding=3 cellspacing=1>";
echo "<tr><td width=50%>";
if ($is_admin == "super")
echo "<input type=button class='btn1' value='선택삭제' onclick=\"btn_check(this.form, 'delete')\">";
echo "</td>";
echo "<td width=50% align=right>$pagelist</td></tr></table>\n";
if ($stx)
echo "<script>document.fsearch.sfl.value = '$sfl';</script>";
?>
</form>
<?
include_once("./admin.tail.php");
?>

178
adm/popular_rank.php Normal file
View File

@ -0,0 +1,178 @@
<?
$sub_menu = "300400";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
if (empty($fr_date)) $fr_date = $g4[time_ymd];
if (empty($to_date)) $to_date = $g4[time_ymd];
$qstr = "fr_date=$fr_date&to_date=$to_date";
$sql_common = " from $g4[popular_table] a ";
$sql_search = " where trim(pp_word) <> '' and pp_date between '$fr_date' and '$to_date' ";
$sql_group = " group by pp_word ";
$sql_order = " order by cnt desc ";
$sql = " select pp_word
$sql_common
$sql_search
$sql_group ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select pp_word, count(*) as cnt
$sql_common
$sql_search
$sql_group
$sql_order
limit $from_record, $rows ";
$result = sql_query($sql);
$listall = "<a href='$_SERVER[PHP_SELF]'>처음</a>";
$g4[title] = "인기검색어순위";
include_once("./admin.head.php");
$colspan = 3;
?>
<?
//==============================================================================
// jquery date picker
//------------------------------------------------------------------------------
// 참고) ie 에서는 년, 월 select box 를 두번씩 클릭해야 하는 오류가 있습니다.
//------------------------------------------------------------------------------
// jquery-ui.css 의 테마를 변경해서 사용할 수 있습니다.
// base, black-tie, blitzer, cupertino, dark-hive, dot-luv, eggplant, excite-bike, flick, hot-sneaks, humanity, le-frog, mint-choc, overcast, pepper-grinder, redmond, smoothness, south-street, start, sunny, swanky-purse, trontastic, ui-darkness, ui-lightness, vader
// 아래 css 는 date picker 의 화면을 맞추는 코드입니다.
?>
<link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css" rel="stylesheet" />
<style type="text/css">
<!--
.ui-datepicker { font:12px dotum; }
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 70px;}
.ui-datepicker-trigger { margin:0 0 -5px 2px; }
-->
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js"></script>
<script type="text/javascript">
/* Korean initialisation for the jQuery calendar extension. */
/* Written by DaeKwon Kang (ncrash.dk@gmail.com). */
jQuery(function($){
$.datepicker.regional['ko'] = {
closeText: '닫기',
prevText: '이전달',
nextText: '다음달',
currentText: '오늘',
monthNames: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)',
'7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'],
monthNamesShort: ['1월','2월','3월','4월','5월','6월',
'7월','8월','9월','10월','11월','12월'],
dayNames: ['일','월','화','수','목','금','토'],
dayNamesShort: ['일','월','화','수','목','금','토'],
dayNamesMin: ['일','월','화','수','목','금','토'],
weekHeader: 'Wk',
dateFormat: 'yy-mm-dd',
firstDay: 0,
isRTL: false,
showMonthAfterYear: true,
yearSuffix: ''};
$.datepicker.setDefaults($.datepicker.regional['ko']);
$('#fr_date, #to_date').datepicker({
showOn: 'button',
buttonImage: '<?=$g4[path]?>/img/calendar.gif',
buttonImageOnly: true,
buttonText: "달력",
changeMonth: true,
changeYear: true,
showButtonPanel: true,
yearRange: 'c-99:c+99',
maxDate: '+0d'
});
});
</script>
<?
//==============================================================================
?>
<table width=100% cellpadding=3 cellspacing=1>
<form name=fsearch method=get>
<tr>
<td width=50% align=left><?=$listall?> (건수 : <?=number_format($total_count)?>개)</td>
<td width=50% align=right>
기간 :
<input type='text' id='fr_date' name='fr_date' size=11 maxlength=10 value='<?=$fr_date?>' class=ed>
-
<input type='text' id='to_date' name='to_date' size=11 maxlength=10 value='<?=$to_date?>' class=ed>
<input type=image src='<?=$g4[admin_path]?>/img/btn_search.gif' align=absmiddle></td>
</tr>
</form>
</table>
<form name=fpopularrank method=post>
<input type=hidden name=sst value="<?=$sst?>">
<input type=hidden name=sod value="<?=$sod?>">
<input type=hidden name=sfl value="<?=$sfl?>">
<input type=hidden name=stx value="<?=$stx?>">
<input type=hidden name=page value="<?=$page?>">
<input type=hidden name=token value="<?=$token?>">
<table width=100% cellpadding=0 cellspacing=1>
<colgroup width=>
<colgroup width=150>
<colgroup width=150>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>검색어</td>
<td>검색회수</td>
<td>순위</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++) {
$word = get_text($row[pp_word]);
$rank = ($i + 1 + ($rows * ($page - 1)));
$list = $i % 2;
echo "<tr class='list$list col1 ht center'>";
echo "<td align='left'>&nbsp; $word</td>";
echo "<td>$row[cnt]</td>";
echo "<td>$rank</td>";
echo "</tr>";
echo "<tr class='list$list col1 ht center'>";
echo "</tr>\n";
}
if ($i == 0)
echo "<tr><td colspan='$colspan' align=center height=100 bgcolor=#ffffff>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
$pagelist = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&page=");
echo "<table width=100% cellpadding=3 cellspacing=1>";
echo "<tr><td width=50%>";
if ($is_admin == "super")
echo "<input type=button class='btn1' value='선택삭제' onclick=\"btn_check(this.form, 'delete')\">";
echo "</td>";
echo "<td width=50% align=right>$pagelist</td></tr></table>\n";
if ($stx)
echo "<script>document.fsearch.sfl.value = '$sfl';</script>";
?>
</form>
<?
include_once("./admin.tail.php");
?>

84
adm/repair.php Normal file
View File

@ -0,0 +1,84 @@
<?
$sub_menu = "100700";
include_once("./_common.php");
if ($is_admin != "super")
alert("최고관리자만 접근 가능합니다.", $g4[path]);
$g4[title] = "테이블 복구 및 최적화";
include_once("./admin.head.php");
echo "'완료' 메세지가 나오기 전에 프로그램의 실행을 중지하지 마십시오.<br>";
echo "<span id='ct'></span>";
include_once("./admin.tail.php");
flush();
// 설정일이 지난 접속자로그 삭제
$tmp_before_date = date("Y-m-d", $g4[server_time] - ($config[cf_visit_del] * 86400));
$sql = " delete from $g4[visit_table] where vi_date < '$tmp_before_date' ";
sql_query($sql);
sql_query(" OPTIMIZE TABLE `$g4[visit_table]`, `$g4[visit_sum_table]` ");
// 설정일이 지난 인기검색어 삭제
$tmp_before_date = date("Y-m-d", $g4[server_time] - ($config[cf_popular_del] * 86400));
$sql = " delete from $g4[popular_table] where pp_date < '$tmp_before_date' ";
sql_query($sql);
sql_query(" OPTIMIZE TABLE `$g4[popular_table]` ");
// 설정일이 지난 최근게시물 삭제
$sql = " delete from $g4[board_new_table] where (TO_DAYS('$g4[time_ymdhis]') - TO_DAYS(bn_datetime)) > '$config[cf_new_del]' ";
sql_query($sql);
sql_query(" OPTIMIZE TABLE `$g4[board_new_table]` ");
// 설정일이 지난 쪽지 삭제
$sql = " delete from $g4[memo_table] where (TO_DAYS('$g4[time_ymdhis]') - TO_DAYS(me_send_datetime)) > '$config[cf_memo_del]' ";
sql_query($sql);
sql_query(" OPTIMIZE TABLE `$g4[memo_table]` ");
// 탈퇴회원 자동 삭제
$sql = " select mb_id from $g4[member_table] where (TO_DAYS('$g4[time_ymdhis]') - TO_DAYS(mb_leave_date)) > '$config[cf_leave_day]' ";
$result = sql_query($sql);
while ($row=sql_fetch_array($result))
{
// 회원자료 삭제
member_delete($row[mb_id]);
}
$sql = "SHOW TABLE STATUS FROM ".$mysql_db;
$result = sql_query($sql);
while($row = sql_fetch_array($result))
{
$str = '';
$tbl = $row['Name'];
$sql1 = " SELECT COUNT(*) FROM `$tbl` ";
$result1 = @mysql_query($sql1);
if (!$result1)
{
// 테이블 복구
$sql2 = " REPAIR TABLE `$tbl` ";
sql_query($sql2);
$str .= $sql2 . "<br/>";
}
if($row['Data_free'] == 0) continue;
// 테이블 최적화
$sql3 = " OPTIMIZE TABLE `$tbl` ";
sql_query($sql3);
$str .= $sql3 . "<br/>";
echo "<script>document.getElementById('ct').innerHTML += '$str';</script>\n";
flush();
/*
for($i = 0; $i < 40 - strlen($tbl); $i ++) echo " ";
echo "\t";
for($i = 0; $i < 9 - strlen($row['Data_free']); $i ++) echo " ";
echo $row['Data_free']." OPTIMIZED\n";
*/
}
echo "<script>document.getElementById('ct').innerHTML += '<br><br>테이블 복구 및 최적화 완료.<br><br>프로그램의 실행을 끝마치셔도 좋습니다.';</script>\n";
?>

51
adm/sendmail_test.php Normal file
View File

@ -0,0 +1,51 @@
<?
$sub_menu = "100300";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
if (!$config[cf_email_use])
alert("환경설정에서 \'메일발송 사용\'에 체크하셔야 메일을 발송할 수 있습니다.");
include_once("$g4[path]/lib/mailer.lib.php");
$g4[title] = "메일 테스트";
include_once("./admin.head.php");
if ($mail) {
check_token();
$from_name = "메일검사";
$from_email = "mail@mail";
$email = explode(",", $mail);
for ($i=0; $i<count($email); $i++)
mailer($from_name, $from_email, trim($email[$i]), "[메일검사] 제목", "<span style='font-size:9pt;'>[메일검사] 내용<p>이 내용이 제대로 보인다면 보내는 메일 서버에는 이상이 없는것입니다.<p>".date("Y-m-d H:i:s")."<p>이 메일 주소로는 회신되지 않습니다.</span>", 1);
echo <<<HEREDOC
<SCRIPT type="text/javascript">
alert("{$mail} (으)로 메일을 발송 하였습니다.\\n\\n해당 주소로 메일이 왔는지 확인하여 주십시오.\\n\\n메일이 오지 않는다면 프로그램의 오류가 아닌 메일 서버(sendmail)의 오류일 가능성이 있습니다.\\n\\n이런 경우에는 웹 서버관리자에게 문의하여 주십시오.");
</SCRIPT>
HEREDOC;
}
$token = get_token();
?>
<img src='<?=$g4[admin_path]?>/img/icon_title.gif'> <span class=title><?=$g4[title]?></span>
<p>
<form name=fsendmailtest method=post>
<input type=hidden name=token value='<?=$token?>'>
<p>고객님들께서 메일이 오지 않는다고 하면 사용하는 메뉴입니다.
<p>입력한 메일주소로 테스트 메일을 발송합니다.
<p>만약 [메일검사] 라는 내용으로 메일이 도착하지 않는다면 보내는 메일서버와 받는 메일 서버중 문제가 발생했을 가능성이 있습니다.
<p>메일을 보냈는데도 도착하지 않는다면 다른 여러곳으로도 메일을 발송하여 주십시오.
<p>여러곳으로 메일을 발송하시려면 , 로 메일을 구분하십시오.
<p>받는 메일주소 : <input type=text class=ed name=mail size=40 required itemname="E-mail" value="<?=$member[mb_email]?>">
<input type=submit value=" 발 송 " class=btn1>
</form>
<?
include_once("./admin.tail.php");
?>

46
adm/session_delete.php Normal file
View File

@ -0,0 +1,46 @@
<?
$sub_menu = "100700";
include_once("./_common.php");
if ($is_admin != "super")
alert("최고관리자만 접근 가능합니다.", $g4[path]);
$g4[title] = "세션 삭제";
include_once("./admin.head.php");
echo "'완료' 메세지가 나오기 전에 프로그램의 실행을 중지하지 마십시오.<br><br>";
echo "<span id='ct'></span>";
include_once("./admin.tail.php");
flush();
$session_path = "$g4[path]/data/session"; // 세션이저장된 디렉토리
if (!$dir=@opendir($session_path)) {
echo "세션 디렉토리를 열지못했습니다.";
}
$cnt=0;
while($file=readdir($dir)) {
if (!strstr($file,'sess_')) {
continue;
}
if (strpos($file,'sess_')!=0) {
continue;
}
if (!$atime=@fileatime("$session_path/$file")) {
continue;
}
if (time() > $atime + (3600 * 6)) { // 지난시간을 초로 계산해서 적어주시면 됩니다. default : 6시간전
$cnt++;
$return = unlink("$session_path/$file");
echo "<script>document.getElementById('ct').innerHTML += '$session_path/$file<br/>';</script>\n";
flush();
if ($cnt%10==0)
echo "<script>document.getElementById('ct').innerHTML = '';</script>\n";
}
}
echo "<script>document.getElementById('ct').innerHTML += '<br><br>세션데이터 {$cnt}건 삭제 완료.<br><br>프로그램의 실행을 끝마치셔도 좋습니다.';</script>\n";
?>

77
adm/sql_write.sql Normal file
View File

@ -0,0 +1,77 @@
CREATE TABLE `__TABLE_NAME__` (
`wr_id` int(11) NOT NULL auto_increment,
`wr_num` int(11) NOT NULL default '0',
`wr_reply` varchar(10) NOT NULL default '',
`wr_parent` int(11) NOT NULL default '0',
`wr_is_comment` tinyint(4) NOT NULL default '0',
`wr_comment` int(11) NOT NULL default '0',
`wr_comment_reply` varchar(5) NOT NULL default '',
`ca_name` varchar(255) NOT NULL default '',
`wr_option` set('html1','html2','secret','mail') NOT NULL default '',
`wr_subject` varchar(255) NOT NULL default '',
`wr_content` text NOT NULL,
`wr_link1` text NOT NULL,
`wr_link2` text NOT NULL,
`wr_link1_hit` int(11) NOT NULL default '0',
`wr_link2_hit` int(11) NOT NULL default '0',
`wr_trackback` varchar(255) NOT NULL default '',
`wr_hit` int(11) NOT NULL default '0',
`wr_good` int(11) NOT NULL default '0',
`wr_nogood` int(11) NOT NULL default '0',
`mb_id` varchar(255) NOT NULL default '',
`wr_password` varchar(255) NOT NULL default '',
`wr_name` varchar(255) NOT NULL default '',
`wr_email` varchar(255) NOT NULL default '',
`wr_homepage` varchar(255) NOT NULL default '',
`wr_datetime` datetime NOT NULL default '0000-00-00 00:00:00',
`wr_last` varchar(19) NOT NULL default '',
`wr_ip` varchar(255) NOT NULL default '',
`wr_1` varchar(255) NOT NULL default '',
`wr_2` varchar(255) NOT NULL default '',
`wr_3` varchar(255) NOT NULL default '',
`wr_4` varchar(255) NOT NULL default '',
`wr_5` varchar(255) NOT NULL default '',
`wr_6` varchar(255) NOT NULL default '',
`wr_7` varchar(255) NOT NULL default '',
`wr_8` varchar(255) NOT NULL default '',
`wr_9` varchar(255) NOT NULL default '',
`wr_10` varchar(255) NOT NULL default '',
PRIMARY KEY (`wr_id`),
KEY `wr_num_reply_parent` (`wr_num`,`wr_reply`,`wr_parent`),
KEY `wr_is_comment` (`wr_is_comment`,`wr_id`)
) DEFAULT CHARSET=utf8;

342
adm/upgrade.php Normal file
View File

@ -0,0 +1,342 @@
<?
$sub_menu = "100600";
include_once("./_common.php");
check_demo();
if ($is_admin != "super")
alert("최고관리자만 접근 가능합니다.", $g4[path]);
$g4[title] = "업그레이드";
include_once("./admin.head.php");
/*
// 4.20.00
// 1:1 게시판 테이블 생성
$sql = " CREATE TABLE `$g4[oneboard_table]` (
`ob_table` varchar(20) NOT NULL,
`ob_subject` varchar(255) NOT NULL,
`ob_admin` varchar(255) NOT NULL,
`ob_skin` varchar(255) NOT NULL,
`ob_write_level` tinyint(4) NOT NULL,
`ob_upload_level` tinyint(4) NOT NULL,
`ob_use_dhtml_editor` tinyint(4) NOT NULL,
`ob_use_email` tinyint(4) NOT NULL,
`ob_table_width` smallint(6) NOT NULL,
`ob_subject_len` smallint(6) NOT NULL,
`ob_page_rows` smallint(6) NOT NULL,
`ob_image_width` smallint(6) NOT NULL,
`ob_image_head` varchar(255) NOT NULL,
`ob_image_tail` varchar(255) NOT NULL,
`ob_include_head` varchar(255) NOT NULL,
`ob_include_tail` varchar(255) NOT NULL,
`ob_content_head` text NOT NULL,
`ob_content_tail` text NOT NULL,
`ob_insert_content` text NOT NULL,
`ob_1_subj` varchar(255) NOT NULL,
`ob_2_subj` varchar(255) NOT NULL,
`ob_3_subj` varchar(255) NOT NULL,
`ob_4_subj` varchar(255) NOT NULL,
`ob_5_subj` varchar(255) NOT NULL,
`ob_6_subj` varchar(255) NOT NULL,
`ob_7_subj` varchar(255) NOT NULL,
`ob_8_subj` varchar(255) NOT NULL,
`ob_9_subj` varchar(255) NOT NULL,
`ob_10_subj` varchar(255) NOT NULL,
`ob_1` varchar(255) NOT NULL,
`ob_2` varchar(255) NOT NULL,
`ob_3` varchar(255) NOT NULL,
`ob_4` varchar(255) NOT NULL,
`ob_5` varchar(255) NOT NULL,
`ob_6` varchar(255) NOT NULL,
`ob_7` varchar(255) NOT NULL,
`ob_8` varchar(255) NOT NULL,
`ob_9` varchar(255) NOT NULL,
`ob_10` varchar(255) NOT NULL,
PRIMARY KEY (`ob_table`)
) ";
sql_query($sql, false);
*/
// 회원테이블의 주키를 mb_no 로 교체
sql_query(" ALTER TABLE `$g4[member_table]` DROP PRIMARY KEY ", false);
sql_query(" ALTER TABLE `$g4[member_table]` ADD `mb_no` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ", false);
sql_query(" ALTER TABLE `$g4[member_table]` ADD UNIQUE `mb_id` ( `mb_id` ) ", false);
// 4.11.00
// 트랙백 토큰
sql_query("CREATE TABLE `$g4[token_table]` (
`to_token` varchar(32) NOT NULL default '',
`to_datetime` datetime NOT NULL default '0000-00-00 00:00:00',
`to_ip` varchar(255) NOT NULL default '',
PRIMARY KEY (`to_token`),
KEY `to_datetime` (`to_datetime`),
KEY `to_ip` (`to_ip`)
) TYPE=MyISAM", FALSE);
// 4.09.00
// 기본환경설정 테이블 필드 추가
sql_query(" ALTER TABLE `{$g4['config_table']}` ADD `cf_1_subj` VARCHAR( 255 ) NOT NULL AFTER `cf_open_modify` ", FALSE);
sql_query(" ALTER TABLE `{$g4['config_table']}` ADD `cf_2_subj` VARCHAR( 255 ) NOT NULL AFTER `cf_1_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['config_table']}` ADD `cf_3_subj` VARCHAR( 255 ) NOT NULL AFTER `cf_2_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['config_table']}` ADD `cf_4_subj` VARCHAR( 255 ) NOT NULL AFTER `cf_3_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['config_table']}` ADD `cf_5_subj` VARCHAR( 255 ) NOT NULL AFTER `cf_4_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['config_table']}` ADD `cf_6_subj` VARCHAR( 255 ) NOT NULL AFTER `cf_5_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['config_table']}` ADD `cf_7_subj` VARCHAR( 255 ) NOT NULL AFTER `cf_6_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['config_table']}` ADD `cf_8_subj` VARCHAR( 255 ) NOT NULL AFTER `cf_7_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['config_table']}` ADD `cf_9_subj` VARCHAR( 255 ) NOT NULL AFTER `cf_8_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['config_table']}` ADD `cf_10_subj` VARCHAR( 255 ) NOT NULL AFTER `cf_9_subj` ", FALSE);
// 게시판 그룹 테이블 필드 추가
sql_query(" ALTER TABLE `{$g4['group_table']}` ADD `gr_1_subj` VARCHAR( 255 ) NOT NULL AFTER `gr_use_access` ", FALSE);
sql_query(" ALTER TABLE `{$g4['group_table']}` ADD `gr_2_subj` VARCHAR( 255 ) NOT NULL AFTER `gr_1_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['group_table']}` ADD `gr_3_subj` VARCHAR( 255 ) NOT NULL AFTER `gr_2_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['group_table']}` ADD `gr_4_subj` VARCHAR( 255 ) NOT NULL AFTER `gr_3_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['group_table']}` ADD `gr_5_subj` VARCHAR( 255 ) NOT NULL AFTER `gr_4_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['group_table']}` ADD `gr_6_subj` VARCHAR( 255 ) NOT NULL AFTER `gr_5_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['group_table']}` ADD `gr_7_subj` VARCHAR( 255 ) NOT NULL AFTER `gr_6_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['group_table']}` ADD `gr_8_subj` VARCHAR( 255 ) NOT NULL AFTER `gr_7_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['group_table']}` ADD `gr_9_subj` VARCHAR( 255 ) NOT NULL AFTER `gr_8_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['group_table']}` ADD `gr_10_subj` VARCHAR( 255 ) NOT NULL AFTER `gr_9_subj` ", FALSE);
// 게시판 테이블 필드 추가
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_sort_field` VARCHAR( 255 ) NOT NULL AFTER `bo_use_email` ", FALSE);
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_1_subj` VARCHAR( 255 ) NOT NULL AFTER `bo_sort_field` ", FALSE);
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_2_subj` VARCHAR( 255 ) NOT NULL AFTER `bo_1_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_3_subj` VARCHAR( 255 ) NOT NULL AFTER `bo_2_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_4_subj` VARCHAR( 255 ) NOT NULL AFTER `bo_3_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_5_subj` VARCHAR( 255 ) NOT NULL AFTER `bo_4_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_6_subj` VARCHAR( 255 ) NOT NULL AFTER `bo_5_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_7_subj` VARCHAR( 255 ) NOT NULL AFTER `bo_6_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_8_subj` VARCHAR( 255 ) NOT NULL AFTER `bo_7_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_9_subj` VARCHAR( 255 ) NOT NULL AFTER `bo_8_subj` ", FALSE);
sql_query(" ALTER TABLE `{$g4['board_table']}` ADD `bo_10_subj` VARCHAR( 255 ) NOT NULL AFTER `bo_9_subj` ", FALSE);
// 게시판 리스트에서 코멘트를 포함하여 최근에 올라온 글을 확인하는 시간 필드 생성
$sql = " select bo_table from $g4[board_table] ";
$res = sql_query($sql);
for($i=0;$row=sql_fetch_array($res);$i++)
{
sql_query(" ALTER TABLE `{$g4['write_prefix']}{$row[bo_table]}` ADD `wr_last` VARCHAR( 19 ) NOT NULL AFTER `wr_datetime` ", FALSE);
$sql2 = " select count(*) as cnt from `{$g4['write_prefix']}{$row[bo_table]}` where wr_last <> '' ";
$row2 = sql_fetch_array($sql2);
if (!$row2[cnt]) // 원글에만 최근시간을 반영합니다.
sql_query(" UPDATE `{$g4['write_prefix']}{$row[bo_table]}` set wr_last = wr_datetime WHERE wr_is_comment = 0 ");
}
// 4.08.00
// 정보공개를 바꾸면 일정기간 동안 변경할 수 없음
sql_query(" ALTER TABLE `{$g4[member_table]}` ADD `mb_open_date` DATE NOT NULL AFTER `mb_open` ", false);
sql_query(" ALTER TABLE `{$g4[config_table]}` ADD `cf_open_modify` INT NOT NULL AFTER `cf_stipulation` ", false);
// 게시물 추천테이블 생성
sql_query(" CREATE TABLE `{$g4[board_good_table]}` (
`bg_id` int(11) NOT NULL auto_increment,
`bo_table` varchar(20) NOT NULL default '',
`wr_id` int(11) NOT NULL default '0',
`mb_id` varchar(20) NOT NULL default '',
`bg_flag` varchar(255) NOT NULL default '',
`bg_datetime` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`bg_id`),
UNIQUE KEY `fkey1` (`bo_table`,`wr_id`,`mb_id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ", false);
// 4.07.00
// 최근게시물에 회원아이디 필드 및 인덱스 추가
sql_query(" ALTER TABLE `{$g4['board_new_table']}` ADD `mb_id` VARCHAR( 20 ) NOT NULL ", false);
sql_query(" ALTER TABLE `{$g4['board_new_table']}` ADD INDEX `mb_id` ( `mb_id` ) ", false);
$sql = " select * from $g4[board_new_table] ";
$res = sql_query($sql);
for ($i=0; $row=sql_fetch_array($res); $i++)
{
$ttmp = $g4[write_prefix].$row[bo_table];
$sql2 = " select mb_id from $ttmp where wr_id = '$row[wr_id]' ";
$row2 = sql_fetch($sql2);
$sql3 = " update $g4[board_new_table] set mb_id = '$row2[mb_id]' where bn_id = '$row[bn_id]' ";
sql_query($sql3, false);
}
/*
// 그룹접근회원테이블에 auto_increment 추가
sql_query(" ALTER TABLE $g4[group_member_table] CHANGE `gm_id` `gm_id` INT( 11 ) DEFAULT '0' NOT NULL AUTO_INCREMENT ", false);
// 로그인테이블에서 인덱스 삭제
sql_query(" ALTER TABLE `$g4[login_table]` DROP INDEX `lo_datetime` ", false);
// 회원테이블의 회원가입일시에 인덱스 추가
sql_query(" ALTER TABLE `$g4[member_table]` ADD INDEX `mb_datetime` ( `mb_datetime` ) ", false);
// 게시판설정 테이블에 업로드 갯수, 이메일 사용 필드 추가
sql_query(" ALTER TABLE `$g4[board_table]`
ADD `bo_upload_count` TINYINT NOT NULL AFTER `bo_notice` ,
ADD `bo_use_email` TINYINT NOT NULL AFTER `bo_upload_count` ", FALSE);
*/
/*
// 050831 막음
// 환경설정 테이블에 메일발송 설정 추가
sql_query(" ALTER TABLE `$g4[config_table]`
ADD `cf_email_use` TINYINT NOT NULL AFTER `cf_search_part` ,
ADD `cf_email_wr_super_admin` TINYINT NOT NULL AFTER `cf_email_use` ,
ADD `cf_email_wr_group_admin` TINYINT NOT NULL AFTER `cf_email_wr_super_admin` ,
ADD `cf_email_wr_board_admin` TINYINT NOT NULL AFTER `cf_email_wr_group_admin` ,
ADD `cf_email_wr_write` TINYINT NOT NULL AFTER `cf_email_wr_board_admin` ", FALSE);
sql_query(" ALTER TABLE `$g4[config_table]`
CHANGE `cf_comment_all_email` `cf_email_wr_comment_all` TINYINT DEFAULT '0' NOT NULL ", FALSE);
sql_query(" ALTER TABLE `$g4[config_table]`
ADD `cf_email_mb_super_admin` TINYINT NOT NULL AFTER `cf_email_wr_comment_all` ,
ADD `cf_email_mb_member` TINYINT NOT NULL AFTER `cf_email_mb_super_admin` ,
ADD `cf_email_po_super_admin` TINYINT NOT NULL AFTER `cf_email_mb_member` ", FALSE);
// 회원테이블에 SMS 수신여부 필드 추가
sql_query(" ALTER TABLE `$g4[member_table]` ADD `mb_sms` TINYINT NOT NULL AFTER `mb_mailling` ", FALSE);
// 게시판 인덱스 변경
$sql = " select bo_table from $g4[board_table] ";
$result = sql_query($sql);
while($row=sql_fetch_array($result))
{
$row2 = sql_fetch(" select * from `{$g4[write_prefix]}{$row[bo_table]}` limit 1 ");
if (!isset($row2[wr_is_comment]))
{
sql_query(" ALTER TABLE `{$g4[write_prefix]}{$row[bo_table]}` ADD `wr_is_comment` TINYINT NOT NULL AFTER `wr_parent` ", FALSE);
sql_query(" ALTER TABLE `{$g4[write_prefix]}{$row[bo_table]}` DROP INDEX `wr_comment_num` ", FALSE);
sql_query(" ALTER TABLE `{$g4[write_prefix]}{$row[bo_table]}` DROP INDEX `wr_num_reply_parent` ", FALSE);
sql_query(" ALTER TABLE `{$g4[write_prefix]}{$row[bo_table]}` DROP INDEX `wr_parent_comment` ", FALSE);
sql_query(" ALTER TABLE `{$g4[write_prefix]}{$row[bo_table]}` DROP INDEX `wr_is_comment` ", FALSE);
sql_query(" ALTER TABLE `{$g4[write_prefix]}{$row[bo_table]}` ADD INDEX `wr_is_comment` (`wr_is_comment`, `wr_num`, `wr_reply`) ", FALSE);
sql_query(" ALTER TABLE `{$g4[write_prefix]}{$row[bo_table]}` ADD INDEX `wr_num` (`wr_num`) ", FALSE);
sql_query(" ALTER TABLE `{$g4[write_prefix]}{$row[bo_table]}` ADD INDEX `wr_parent` (`wr_parent`) ", FALSE);
sql_query(" ALTER TABLE `{$g4[write_prefix]}{$row[bo_table]}` ADD INDEX `ca_name` (`ca_name`) ", FALSE);
sql_query(" UPDATE `{$g4[write_prefix]}{$row[bo_table]}` set wr_is_comment = 1 where wr_comment < 0 ", FALSE);
}
}
// 파일테이블에 이미지 폭, 높이, 타입, 일시 넣기
// getimagesize() 함수보다 속도가 빠름
sql_query(" ALTER TABLE `$g4[board_file_table]` ADD `bf_filesize` INT NOT NULL , ADD `bf_width` INT NOT NULL , ADD `bf_height` SMALLINT NOT NULL , ADD `bf_type` TINYINT NOT NULL , ADD `bf_datetime` DATETIME NOT NULL ", FALSE);
// 이메일 인증사용
sql_query(" ALTER TABLE `$g4[member_table]` ADD `mb_email_certify` DATETIME NOT NULL AFTER `mb_intercept_date` ", FALSE);
sql_query(" ALTER TABLE `$g4[config_table]` ADD `cf_use_email_certify` TINYINT NOT NULL AFTER `cf_use_copy_log` ", FALSE);
// 최근게시물 라인수
sql_query(" ALTER TABLE `$g4[config_table]` ADD `cf_new_rows` INT NOT NULL AFTER `cf_login_skin` ", FALSE);
// 포인트 테이블에 필드 추가
sql_query(" ALTER TABLE `$g4[point_table]` ADD `po_rel_table` VARCHAR( 20 ) NOT NULL , ADD `po_rel_id` VARCHAR( 20 ) NOT NULL , ADD `po_rel_action` VARCHAR( 255 ) NOT NULL ", FALSE);
// 포인트 테이블의 회원아이디 길이 변경
sql_query(" ALTER TABLE `$g4[point_table]` CHANGE `mb_id` `mb_id` VARCHAR( 20 ) NOT NULL ", FALSE);
// 포인트 테이블의 인덱스 변경
sql_query(" ALTER TABLE `$g4[point_table]` DROP INDEX `index1` , ADD INDEX `index1` ( `mb_id` , `po_rel_table` , `po_rel_id` , `po_rel_action` ) ", FALSE);
// 투표 테이블에 투표한 회원 필드 추가
sql_query(" ALTER TABLE `$g4[poll_table]` ADD `mb_ids` TEXT NOT NULL ", FALSE);
// 환경설정 테이블에 여분필드 추가
sql_query(" ALTER TABLE `$g4[config_table]` ADD `cf_1` VARCHAR( 255 ) NOT NULL , ADD `cf_2` VARCHAR( 255 ) NOT NULL , ADD `cf_3` VARCHAR( 255 ) NOT NULL , ADD `cf_4` VARCHAR( 255 ) NOT NULL , ADD `cf_5` VARCHAR( 255 ) NOT NULL , ADD `cf_6` VARCHAR( 255 ) NOT NULL , ADD `cf_7` VARCHAR( 255 ) NOT NULL , ADD `cf_8` VARCHAR( 255 ) NOT NULL , ADD `cf_9` VARCHAR( 255 ) NOT NULL , ADD `cf_10` VARCHAR( 255 ) NOT NULL ", FALSE);
// 로그인스킨 필드 삭제
sql_query(" ALTER TABLE `$g4[config_table]` DROP `cf_login_skin` ", FALSE);
// 회원가입스킨 필드를 회원관련스킨 필드로 변경
sql_query(" ALTER TABLE `$g4[config_table]` CHANGE `cf_register_skin` `cf_member_skin` VARCHAR( 255 ) NOT NULL ", FALSE);
// 내부로그인 필드 추가
sql_query(" ALTER TABLE `$g4[config_table]` ADD `cf_login_skin` VARCHAR( 255 ) NOT NULL AFTER `cf_new_skin` ", FALSE);
// 접속자 스킨 필드 추가
sql_query(" ALTER TABLE `$g4[config_table]` ADD `cf_connect_skin` VARCHAR( 255 ) NOT NULL AFTER `cf_search_skin` ", FALSE);
// 파일 설명 사용 필드 추가
sql_query(" ALTER TABLE `$g4[board_table]` ADD `bo_use_file_content` TINYINT NOT NULL AFTER `bo_use_sideview` ", FALSE);
// 파일 테이블에 내용 필드 추가 (갤러리의 경우 해당 이미지에 대한 내용을 넣음)
sql_query(" ALTER TABLE `$g4[board_file_table]` ADD `bf_content` TEXT NOT NULL ", FALSE);
// 방문자로그삭제, 인기검색어삭제 필드 추가
sql_query(" ALTER TABLE `$g4[config_table]` ADD `cf_visit_del` INT NOT NULL AFTER `cf_memo_del` , ADD `cf_popular_del` INT NOT NULL AFTER `cf_visit_del` ", FALSE);
// 검색 스킨 필드 추가
sql_query(" ALTER TABLE `$g4[config_table]` ADD `cf_search_skin` VARCHAR( 255 ) NOT NULL AFTER `cf_new_skin` ", FALSE);
// 최근게시물 스킨 필드 추가
sql_query(" ALTER TABLE `$g4[config_table]` ADD `cf_new_skin` VARCHAR( 255 ) NOT NULL AFTER `cf_nick_modify` ", FALSE);
// 약관 필드명 변경
sql_query(" ALTER TABLE `$g4[config_table]` CHANGE `cf_provision` `cf_stipulation` TEXT NOT NULL ", FALSE);
// 게시판 글자 제한
sql_query(" ALTER TABLE `$g4[board_table]` ADD `bo_write_min` INT NOT NULL AFTER `bo_count_comment` , ADD `bo_write_max` INT NOT NULL AFTER `bo_write_min` , ADD `bo_comment_min` INT NOT NULL AFTER `bo_write_max` , ADD `bo_comment_max` INT NOT NULL AFTER `bo_comment_min` ", FALSE);
// 인기검색어 테이블 생성
$sql = " CREATE TABLE $g4[popular_table] (
pp_id int(11) NOT NULL auto_increment,
pp_word varchar(50) NOT NULL default '',
pp_date date NOT NULL default '0000-00-00',
pp_ip varchar(50) NOT NULL default '',
PRIMARY KEY (pp_id),
UNIQUE KEY index1 (pp_date,pp_word,pp_ip)
) TYPE=MyISAM ";
sql_query($sql, FALSE);
sql_query(" ALTER TABLE `$g4[board_new_table]` ADD `wr_parent` INT NOT NULL AFTER `wr_id` ", FALSE);
sql_query(" ALTER TABLE `$g4[board_new_table]` CHANGE `wr_id` `wr_id` INT NOT NULL ", FALSE);
sql_query(" ALTER TABLE `$g4[poll_table]` ADD `po_point` INT NOT NULL AFTER `po_level` ", FALSE);
sql_query(" ALTER TABLE `$g4[point_table]` ADD `po_point` INT NOT NULL AFTER `po_level` ", FALSE);
$sql = " select bo_table from $g4[board_table] ";
$result = sql_query($sql);
while($row=sql_fetch_array($result))
{
sql_query(" ALTER TABLE `{$g4[write_prefix]}{$row[bo_table]}` ADD `wr_comment_reply` VARCHAR( 255 ) NOT NULL AFTER `wr_comment` ", FALSE);
}
sql_query(" ALTER TABLE `$g4[config_table]` ADD `cf_use_copy_log` TINYINT NOT NULL AFTER `cf_use_norobot` ", FALSE);
sql_query(" ALTER TABLE `$g4[config_table]` ADD `cf_register_skin` VARCHAR( 255 ) DEFAULT 'basic' NOT NULL AFTER `cf_intercept_ip` ", FALSE);
sql_query(" ALTER TABLE `$g4[board_table]` ADD `bo_use_sideview` TINYINT NOT NULL AFTER `bo_disable_tags` ", FALSE);
// 회원메일테이블 생성
$sql = " CREATE TABLE $g4[mail_table] (
ma_id int(11) NOT NULL auto_increment,
ma_subject varchar(255) NOT NULL default '',
ma_content mediumtext NOT NULL,
ma_time datetime NOT NULL default '0000-00-00 00:00:00',
ma_ip varchar(255) NOT NULL default '',
ma_last_option text NOT NULL,
PRIMARY KEY (ma_id)
) TYPE=MyISAM ";
sql_query($sql, FALSE);
// auth table 생성
$sql = " CREATE TABLE $g4[auth_table] (
mb_id varchar(255) NOT NULL default '',
au_menu varchar(20) NOT NULL default '',
au_auth set('r','w','d') NOT NULL default '',
PRIMARY KEY (mb_id,au_menu)
) TYPE=MyISAM ";
sql_query($sql, FALSE);
*/
echo "UPGRADE 완료.";
include_once("./admin.tail.php");
?>

32
adm/version.php Normal file
View File

@ -0,0 +1,32 @@
<?
//
// 조병완(korone)님 , 남규아빠(eagletalon)님께서 만들어 주셨습니다.
//
$sub_menu = "100400";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$g4[title] = "버전확인";
include_once("./admin.head.php");
include_once("$g4[path]/lib/mailer.lib.php");
echo "현재버전 : <b>";
$args = "head -1 ".$g4[path]."/HISTORY";
system($args);
echo "</b>";
?>
<table width=100% border="0" align="left" cellpadding="0" cellspacing="0">
<tr>
<td>
<textarea name="textarea" style='width:100%; line-height:150%; padding:10px;' rows="25" class=tx readonly><?=implode("", file("$g4[path]/HISTORY"));?></textarea>
</td>
</tr>
</table>
<?
include_once("./admin.tail.php");
?>

42
adm/visit.sub.php Normal file
View File

@ -0,0 +1,42 @@
<?
if (!defined("_GNUBOARD_")) exit;
include_once("$g4[path]/lib/visit.lib.php");
if (empty($fr_date)) $fr_date = $g4[time_ymd];
if (empty($to_date)) $to_date = $g4[time_ymd];
$qstr = "fr_date=$fr_date&to_date=$to_date";
?>
<table width=100% cellpadding=3 cellspacing=1>
<form name=fvisit method=get>
<tr>
<td>
기간 :
<input type='text' name='fr_date' size=11 maxlength=10 value='<?=$fr_date?>' class=ed>
-
<input type='text' name='to_date' size=11 maxlength=10 value='<?=$to_date?>' class=ed>
&nbsp;
<input type=button class=btn1 value=' 접속자 ' onclick="fvisit_submit('visit_list.php');">
<input type=button class=btn1 value=' 도메인 ' onclick="fvisit_submit('visit_domain.php');">
<input type=button class=btn1 value=' 브라우저 ' onclick="fvisit_submit('visit_browser.php');">
<input type=button class=btn1 value=' OS ' onclick="fvisit_submit('visit_os.php');">
<input type=button class=btn1 value=' 시간 ' onclick="fvisit_submit('visit_hour.php');">
<input type=button class=btn1 value=' 요일 ' onclick="fvisit_submit('visit_week.php');">
<input type=button class=btn1 value=' 일 ' onclick="fvisit_submit('visit_date.php');">
<input type=button class=btn1 value=' 월 ' onclick="fvisit_submit('visit_month.php');">
<input type=button class=btn1 value=' 년 ' onclick="fvisit_submit('visit_year.php');">
</td>
</tr>
</form>
</table>
<script type='text/javascript'>
function fvisit_submit(act)
{
var f = document.fvisit;
f.action = act;
f.submit();
}
</script>

94
adm/visit_browser.php Normal file
View File

@ -0,0 +1,94 @@
<?
$sub_menu = "200800";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$g4[title] = "브라우저별 접속자현황";
include_once("./admin.head.php");
include_once("./visit.sub.php");
$colspan = 5;
?>
<table width=100% cellpadding=0 cellspacing=1 border=0>
<colgroup width=100>
<colgroup width=200>
<colgroup width=100>
<colgroup width=100>
<colgroup width=''>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>순위</td>
<td>브라우저</td>
<td>방문자수</td>
<td>비율(%)</td>
<td>그래프</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
$max = 0;
$sum_count = 0;
$sql = " select * from $g4[visit_table]
where vi_date between '$fr_date' and '$to_date' ";
$result = sql_query($sql);
while ($row=sql_fetch_array($result)) {
$s = get_brow($row[vi_agent]);
$arr[$s]++;
if ($arr[$s] > $max) $max = $arr[$s];
$sum_count++;
}
$i = 0;
$k = 0;
$save_count = -1;
$tot_count = 0;
if (count($arr)) {
arsort($arr);
foreach ($arr as $key=>$value) {
$count = $arr[$key];
if ($save_count != $count) {
$i++;
$no = $i;
$save_count = $count;
} else {
$no = "";
}
$rate = ($count / $sum_count * 100);
$s_rate = number_format($rate, 1);
$bar = (int)($count / $max * 100);
$graph = "<img src='{$g4[admin_path]}/img/graph.gif' width='$bar%' height='18'>";
$list = ($k++%2);
echo "
<tr class='list$list ht center'>
<td>$no</td>
<td>$key</td>
<td>$count</td>
<td>$s_rate</td>
<td align=left>$graph</td>
</tr>";
}
echo "
<tr><td colspan='$colspan' class='line2'></td></tr>
<tr class='bgcol2 bold col1 ht center'>
<td colspan=2>합계</td>
<td>$sum_count</td>
<td colspan=2>&nbsp;</td>
</tr>";
} else {
echo "<tr><td colspan='$colspan' height=100 align=center>자료가 없습니다.</td></tr>";
}
?>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
</table>
<?
include_once("./admin.tail.php");
?>

83
adm/visit_date.php Normal file
View File

@ -0,0 +1,83 @@
<?
$sub_menu = "200800";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$g4[title] = "일별 접속자현황";
include_once("./admin.head.php");
include_once("./visit.sub.php");
$colspan = 4;
?>
<table width=100% cellpadding=0 cellspacing=1 border=0>
<colgroup width=100>
<colgroup width=100>
<colgroup width=100>
<colgroup width=''>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>년-월-일</td>
<td>방문자수</td>
<td>비율(%)</td>
<td>그래프</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
$max = 0;
$sum_count = 0;
$sql = " select vs_date, vs_count as cnt
from $g4[visit_sum_table]
where vs_date between '$fr_date' and '$to_date'
order by vs_date desc ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$arr[$row[vs_date]] = $row[cnt];
if ($row[cnt] > $max) $max = $row[cnt];
$sum_count += $row[cnt];
}
$i = 0;
$k = 0;
$save_count = -1;
$tot_count = 0;
if (count($arr)) {
foreach ($arr as $key=>$value) {
$count = $value;
$rate = ($count / $sum_count * 100);
$s_rate = number_format($rate, 1);
$bar = (int)($count / $max * 100);
$graph = "<img src='{$g4[admin_path]}/img/graph.gif' width='$bar%' height='18'>";
$list = ($k++%2);
echo "
<tr class='list$list ht center'>
<td><a href='./visit_list.php?fr_date=$key&to_date=$key' class=tt>$key</a></td>
<td>".number_format($value)."</td>
<td>$s_rate</td>
<td align=left>$graph</td>
</tr>";
}
echo "
<tr><td colspan='$colspan' class='line2'></td></tr>
<tr class='bgcol2 bold col1 ht center'>
<td>합계</td>
<td>".number_format($sum_count)."</td>
<td colspan=2>&nbsp;</td>
</tr>";
} else {
echo "<tr><td colspan='$colspan' height=100 align=center>자료가 없습니다.</td></tr>";
}
?>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
</table>
<?
include_once("./admin.tail.php");
?>

103
adm/visit_domain.php Normal file
View File

@ -0,0 +1,103 @@
<?
$sub_menu = "200800";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$g4[title] = "도메인별 접속자현황";
include_once("./admin.head.php");
include_once("./visit.sub.php");
$colspan = 5;
?>
<table width=100% cellpadding=0 cellspacing=1 border=0>
<colgroup width=100>
<colgroup width=200>
<colgroup width=100>
<colgroup width=100>
<colgroup width=''>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>순위</td>
<td>접속 도메인</td>
<td>방문자수</td>
<td>비율(%)</td>
<td>그래프</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
$max = 0;
$sum_count = 0;
$sql = " select * from $g4[visit_table]
where vi_date between '$fr_date' and '$to_date' ";
$result = sql_query($sql);
while ($row=sql_fetch_array($result)) {
$str = $row[vi_referer];
preg_match("/^http[s]*:\/\/([\.\-\_0-9a-zA-Z]*)\//", $str, $match);
$s = $match[1];
$s = preg_replace("/^(www\.|search\.|dirsearch\.|dir\.search\.|dir\.|kr\.search\.|myhome\.)(.*)/", "\\2", $s);
$arr[$s]++;
if ($arr[$s] > $max) $max = $arr[$s];
$sum_count++;
}
$i = 0;
$k = 0;
$save_count = -1;
$tot_count = 0;
if (count($arr)) {
arsort($arr);
foreach ($arr as $key=>$value) {
$count = $arr[$key];
if ($save_count != $count) {
$i++;
$no = $i;
$save_count = $count;
} else {
$no = "";
}
if (!$key) {
$link = "";
$key = "직접";
} else {
$link = "<a href='./visit_list.php?$qstr&domain=$key' title='상세보기'>";
}
$rate = ($count / $sum_count * 100);
$s_rate = number_format($rate, 1);
$bar = (int)($count / $max * 100);
$graph = "<img src='{$g4[admin_path]}/img/graph.gif' width='$bar%' height='18'>";
$list = ($k++%2);
echo "
<tr class='list$list ht center'>
<td>$no</td>
<td align=left>$link$key</a></td>
<td>$count</td>
<td>$s_rate</td>
<td align=left>$graph</td>
</tr>";
}
echo "
<tr><td colspan='$colspan' class='line2'></td></tr>
<tr class='bgcol2 bold col1 ht center'>
<td colspan=2>합계</td>
<td>$sum_count</td>
<td colspan=2>&nbsp;</td>
</tr>";
} else {
echo "<tr><td colspan='$colspan' height=100 align=center>자료가 없습니다.</td></tr>";
}
?>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
</table>
<?
include_once("./admin.tail.php");
?>

82
adm/visit_hour.php Normal file
View File

@ -0,0 +1,82 @@
<?
$sub_menu = "200800";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$g4[title] = "시간별 접속자현황";
include_once("./admin.head.php");
include_once("./visit.sub.php");
$colspan = 4;
?>
<table width=100% cellpadding=0 cellspacing=1 border=0>
<colgroup width=100>
<colgroup width=100>
<colgroup width=100>
<colgroup width=''>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>시간</td>
<td>방문자수</td>
<td>비율(%)</td>
<td>그래프</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
$max = 0;
$sum_count = 0;
$sql = " select SUBSTRING(vi_time,1,2) as vi_hour, count(vi_id) as cnt
from $g4[visit_table]
where vi_date between '$fr_date' and '$to_date'
group by vi_hour
order by vi_hour ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$arr[$row[vi_hour]] = $row[cnt];
if ($row[cnt] > $max) $max = $row[cnt];
$sum_count += $row[cnt];
}
$k = 0;
if ($i) {
for ($i=0; $i<24; $i++) {
$hour = sprintf("%02d", $i);
$count = (int)$arr[$hour];
$rate = ($count / $sum_count * 100);
$s_rate = number_format($rate, 1);
$bar = (int)($count / $max * 100);
$graph = "<img src='{$g4[admin_path]}/img/graph.gif' width='$bar%' height='18'>";
$list = ($k++%2);
echo "
<tr class='list$list ht center'>
<td>$hour</td>
<td>".number_format($count)."</td>
<td>$s_rate</td>
<td align=left>$graph</td>
</tr>";
}
echo "
<tr><td colspan='$colspan' class='line2'></td></tr>
<tr class='bgcol2 bold col1 ht center'>
<td>합계</td>
<td>".number_format($sum_count)."</td>
<td colspan=2>&nbsp;</td>
</tr>";
} else {
echo "<tr><td colspan='$colspan' height=100 align=center>자료가 없습니다.</td></tr>";
}
?>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
</table><br><br>
<?
include_once("./admin.tail.php");
?>

115
adm/visit_list.php Normal file
View File

@ -0,0 +1,115 @@
<?
$sub_menu = "200800";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$g4[title] = "접속자현황";
include_once("./admin.head.php");
include_once("./visit.sub.php");
$colspan = 5;
?>
<table width=100% cellpadding=0 cellspacing=1 border=0>
<colgroup width=100>
<colgroup width=350>
<colgroup width=100>
<colgroup width=100>
<colgroup width=''>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>IP</td>
<td>접속 경로</td>
<td>브라우저</td>
<td>OS</td>
<td>일시</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
//unset($br); // 브라우저
//unset($os); // OS
$sql_common = " from $g4[visit_table] ";
$sql_search = " where vi_date between '$fr_date' and '$to_date' ";
if ($domain) {
$sql_search .= " and vi_referer like '%$domain%' ";
}
$sql = " select count(*) as cnt
$sql_common
$sql_search ";
$row = sql_fetch($sql);
$total_count = $row[cnt];
$rows = $config[cf_page_rows];
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
if ($page == "") $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함
$sql = " select *
$sql_common
$sql_search
order by vi_id desc
limit $from_record, $rows ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$brow = get_brow($row[vi_agent]);
$os = get_os($row[vi_agent]);
$link = "";
$referer = "";
$title = "";
if ($row[vi_referer]) {
$referer = get_text(cut_str($row[vi_referer], 255, ""));
$referer = urldecode($referer);
if (strtolower($g4['charset']) == 'utf-8') {
if (!is_utf8($referer)) {
$referer = iconv('euc-kr', 'utf-8', $referer);
}
}
else {
if (is_utf8($referer)) {
$referer = iconv('utf-8', 'euc-kr', $referer);
}
}
$title = str_replace(array("<", ">"), array("&lt;", "&gt;"), $referer);
$link = "<a href='$row[vi_referer]' target=_blank title='$title '>";
}
if ($is_admin == 'super')
$ip = $row[vi_ip];
else
$ip = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", "\\1.♡.\\3.\\4", $row[vi_ip]);
if ($brow == '기타') { $brow = "<span title='$row[vi_agent]'>$brow</span>"; }
if ($os == '기타') { $os = "<span title='$row[vi_agent]'>$os</span>"; }
$list = ($i%2);
echo "
<tr class='list$list col1 ht center'>
<td>$ip</td>
<td align=left><nobr style='display:block; overflow:hidden; width:350;'>$link$title</a></nobr></td>
<td>$brow</td>
<td>$os</td>
<td>$row[vi_date] $row[vi_time]</td>
</tr>";
}
if ($i == 0)
echo "<tr><td colspan='$colspan' height=100 align=center>자료가 없습니다.</td></tr>";
echo "<tr><td colspan='$colspan' class='line2'></td></tr>";
echo "</table>";
$page = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$qstr&domain=$domain&page=");
if ($page) {
echo "<table width=100% cellpadding=3 cellspacing=1><tr><td align=right>$page</td></tr></table>";
}
include_once("./admin.tail.php");
?>

84
adm/visit_month.php Normal file
View File

@ -0,0 +1,84 @@
<?
$sub_menu = "200800";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$g4[title] = "월별 접속자현황";
include_once("./admin.head.php");
include_once("./visit.sub.php");
$colspan = 4;
?>
<table width=100% cellpadding=0 cellspacing=1 border=0>
<colgroup width=100>
<colgroup width=100>
<colgroup width=100>
<colgroup width=''>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>년-월</td>
<td>방문자수</td>
<td>비율(%)</td>
<td>그래프</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
$max = 0;
$sum_count = 0;
$sql = " select SUBSTRING(vs_date,1,7) as vs_month, SUM(vs_count) as cnt
from $g4[visit_sum_table]
where vs_date between '$fr_date' and '$to_date'
group by vs_month
order by vs_month desc ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$arr[$row[vs_month]] = $row[cnt];
if ($row[cnt] > $max) $max = $row[cnt];
$sum_count += $row[cnt];
}
$i = 0;
$k = 0;
$save_count = -1;
$tot_count = 0;
if (count($arr)) {
foreach ($arr as $key=>$value) {
$count = $value;
$rate = ($count / $sum_count * 100);
$s_rate = number_format($rate, 1);
$bar = (int)($count / $max * 100);
$graph = "<img src='{$g4[admin_path]}/img/graph.gif' width='$bar%' height='18'>";
$list = ($k++%2);
echo "
<tr class='list$list ht center'>
<td><a href='./visit_date.php?fr_date=$key-01&to_date=$key-31' class=tt>$key</a></td>
<td>".number_format($value)."</td>
<td>$s_rate</td>
<td align=left>$graph</td>
</tr>";
}
echo "
<tr><td colspan='$colspan' class='line2'></td></tr>
<tr class='bgcol2 bold col1 ht center'>
<td>합계</td>
<td>".number_format($sum_count)."</td>
<td colspan=2>&nbsp;</td>
</tr>";
} else {
echo "<tr><td colspan='$colspan' height=100 align=center>자료가 없습니다.</td></tr>";
}
?>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
</table>
<?
include_once("./admin.tail.php");
?>

98
adm/visit_os.php Normal file
View File

@ -0,0 +1,98 @@
<?
$sub_menu = "200800";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$g4[title] = "OS별 접속자현황";
include_once("./admin.head.php");
include_once("./visit.sub.php");
$colspan = 5;
?>
<table width=100% cellpadding=0 cellspacing=1 border=0>
<colgroup width=100>
<colgroup width=200>
<colgroup width=100>
<colgroup width=100>
<colgroup width=''>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>순위</td>
<td>OS</td>
<td>방문자수</td>
<td>비율(%)</td>
<td>그래프</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
$max = 0;
$sum_count = 0;
$sql = " select * from $g4[visit_table]
where vi_date between '$fr_date' and '$to_date' ";
$result = sql_query($sql);
while ($row=sql_fetch_array($result)) {
$s = get_os($row[vi_agent]);
$arr[$s]++;
if ($arr[$s] > $max) $max = $arr[$s];
$sum_count++;
}
$i = 0;
$k = 0;
$save_count = -1;
$tot_count = 0;
if (count($arr)) {
arsort($arr);
foreach ($arr as $key=>$value) {
$count = $arr[$key];
if ($save_count != $count) {
$i++;
$no = $i;
$save_count = $count;
} else {
$no = "";
}
if (!$key) {
$key = "직접";
}
$rate = ($count / $sum_count * 100);
$s_rate = number_format($rate, 1);
$bar = (int)($count / $max * 100);
$graph = "<img src='{$g4[admin_path]}/img/graph.gif' width='$bar%' height='18'>";
$list = ($k++%2);
echo "
<tr class='list$list ht center'>
<td>$no</td>
<td>$key</td>
<td>$count</td>
<td>$s_rate</td>
<td align=left>$graph</td>
</tr>";
}
echo "
<tr><td colspan='$colspan' class='line2'></td></tr>
<tr class='bgcol2 bold col1 ht center'>
<td colspan=2>합계</td>
<td>$sum_count</td>
<td colspan=2>&nbsp;</td>
</tr>";
} else {
echo "<tr><td colspan='$colspan' height=100 align=center>자료가 없습니다.</td></tr>";
}
?>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
</table>
<?
include_once("./admin.tail.php");
?>

78
adm/visit_week.php Normal file
View File

@ -0,0 +1,78 @@
<?
$sub_menu = "200800";
include_once("./_common.php");
auth_check($auth[$sub_menu], "r");
$g4[title] = "요일별 접속자현황";
include_once("./admin.head.php");
include_once("./visit.sub.php");
$colspan = 4;
?>
<table width=100% cellpadding=0 cellspacing=1 border=0>
<colgroup width=100>
<colgroup width=100>
<colgroup width=100>
<colgroup width=''>
<tr><td colspan='<?=$colspan?>' class='line1'></td></tr>
<tr class='bgcol1 bold col1 ht center'>
<td>요일</td>
<td>방문자수</td>
<td>비율(%)</td>
<td>그래프</td>
</tr>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
<?
$weekday = array ('월', '화', '수', '목', '금', '토', '일');
$sum_count = 0;
$sql = " select WEEKDAY(vs_date) as weekday_date, SUM(vs_count) as cnt
from $g4[visit_sum_table]
where vs_date between '$fr_date' and '$to_date'
group by weekday_date
order by weekday_date ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
$arr[$row[weekday_date]] = $row[cnt];
$sum_count += $row[cnt];
}
$k = 0;
if ($i) {
for ($i=0; $i<7; $i++) {
$count = (int)$arr[$i];
$rate = ($count / $sum_count * 100);
$s_rate = number_format($rate, 1);
$graph = "<img src='{$g4[admin_path]}/img/graph.gif' width='$rate%' height='18'>";
$list = ($k++%2);
echo "
<tr class='list$list ht center'>
<td>$weekday[$i]</td>
<td>$count</td>
<td>$s_rate</td>
<td align=left>$graph</td>
</tr>";
}
echo "
<tr><td colspan='$colspan' class='line2'></td></tr>
<tr class='bgcol2 bold col1 ht center'>
<td>합계</td>
<td>$sum_count</td>
<td colspan=2>&nbsp;</td>
</tr>";
} else {
echo "<tr><td colspan='$colspan' height=100 align=center>자료가 없습니다.</td></tr>";
}
?>
<tr><td colspan='<?=$colspan?>' class='line2'></td></tr>
</table>
<?
include_once("./admin.tail.php");
?>

Some files were not shown because too many files have changed in this diff Show More