Compare commits

..
9 Commits
20 changed files with 140 additions and 33 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ if (!defined('_GNUBOARD_')) exit;
<!-- <p>실행시간 : <?php echo get_microtime() - $begin_time; ?> --> <!-- <p>실행시간 : <?php echo get_microtime() - $begin_time; ?> -->
<script src="<?php echo G5_ADMIN_URL ?>/admin.js"></script> <script src="<?php echo G5_ADMIN_URL ?>/admin.js?ver=<?php echo G5_JS_VER; ?>"></script>
<script> <script>
$(function(){ $(function(){
var hide_menu = false; var hide_menu = false;
+1 -1
View File
@@ -8,7 +8,7 @@ $g5['title'] = '게시판 복사';
include_once(G5_PATH.'/head.sub.php'); include_once(G5_PATH.'/head.sub.php');
?> ?>
<script src="<?php echo G5_ADMIN_URL ?>/admin.js"></script> <script src="<?php echo G5_ADMIN_URL ?>/admin.js?ver=<?php echo G5_JS_VER; ?>"></script>
<div class="new_win"> <div class="new_win">
<h1><?php echo $g5['title']; ?></h1> <h1><?php echo $g5['title']; ?></h1>
+1 -1
View File
@@ -1,4 +1,4 @@
<? <?php
$sub_menu = "200100"; $sub_menu = "200100";
include_once("./_common.php"); include_once("./_common.php");
+1 -1
View File
@@ -1,4 +1,4 @@
<? <?php
$sub_menu = "200100"; $sub_menu = "200100";
include_once("./_common.php"); include_once("./_common.php");
+6 -3
View File
@@ -18,6 +18,9 @@ if (is_numeric($fg_no))
else else
$sql_group = ""; $sql_group = "";
$st = clean_xss_tags($st);
$sv = clean_xss_tags($sv);
if ($st == 'all') { if ($st == 'all') {
$sql_search = "and (fo_name like '%{$sv}%' or fo_content like '%{$sv}%')"; $sql_search = "and (fo_name like '%{$sv}%' or fo_content like '%{$sv}%')";
} else if ($st == 'name') { } else if ($st == 'name') {
@@ -60,7 +63,7 @@ function book_all_checked(chk)
function book_del(fo_no) function book_del(fo_no)
{ {
if (confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n그래도 삭제하시겠습니까?")) if (confirm("한번 삭제한 자료는 복구할 방법이 없습니다.\n\n그래도 삭제하시겠습니까?"))
location.href = "./form_update.php?w=d&fo_no=" + fo_no + "&page=<?php echo $page?>&fg_no=<?php echo $fg_no?>&st=<?php echo $st?>&sv=<?php echo $sv?>"; location.href = "./form_update.php?w=d&fo_no=" + fo_no + "&page=<?php echo $page?>&fg_no=<?php echo $fg_no?>&st=<?php echo get_text($st); ?>&sv=<?php echo get_text($sv); ?>";
} }
function multi_update(sel) function multi_update(sel)
@@ -127,7 +130,7 @@ function multi_update(sel)
<option value="content"<?php echo get_selected('content', $st); ?>>이모티콘</option> <option value="content"<?php echo get_selected('content', $st); ?>>이모티콘</option>
</select> </select>
<label for="sv" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label> <label for="sv" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
<input type="text" name="sv" value="<?php echo $sv;?>" id="sv" required class="frm_input required" > <input type="text" name="sv" value="<?php echo get_text($sv) ;?>" id="sv" required class="frm_input required" >
<input type="submit" value="검색" class="btn_submit"> <input type="submit" value="검색" class="btn_submit">
</form> </form>
</div> </div>
@@ -181,7 +184,7 @@ function multi_update(sel)
<span class="sound_only">등록 </span><?php echo date('Y-m-d', strtotime($res['fo_datetime']))?> <span class="sound_only">등록 </span><?php echo date('Y-m-d', strtotime($res['fo_datetime']))?>
</div> </div>
<div class="li_cmd"> <div class="li_cmd">
<a href="./form_write.php?w=u&amp;fo_no=<?php echo $res['fo_no']?>&amp;page=<?php echo $page;?>&amp;fg_no=<?php echo $fg_no;?>&amp;st=<?php echo $st;?>&amp;sv=<?php echo $sv;?>">수정</a> <a href="./form_write.php?w=u&amp;fo_no=<?php echo $res['fo_no']?>&amp;page=<?php echo $page;?>&amp;fg_no=<?php echo $fg_no;?>&amp;st=<?php echo get_text($st);?>&amp;sv=<?php echo get_text($sv);?>">수정</a>
<a href="javascript:void(book_del('<?php echo $res['fo_no']?>'));">삭제</a> <a href="javascript:void(book_del('<?php echo $res['fo_no']?>'));">삭제</a>
<a href="./sms_write.php?fo_no=<?php echo $res['fo_no']?>">보내기</a> <a href="./sms_write.php?fo_no=<?php echo $res['fo_no']?>">보내기</a>
</div> </div>
+8 -8
View File
@@ -14,7 +14,7 @@ add_javascript('<script src="'.G5_PLUGIN_URL.'/jqplot/plugins/jqplot.categoryAxi
add_javascript('<script src="'.G5_PLUGIN_URL.'/jqplot/plugins/jqplot.pointLabels.min.js"></script>', 0); add_javascript('<script src="'.G5_PLUGIN_URL.'/jqplot/plugins/jqplot.pointLabels.min.js"></script>', 0);
add_javascript('<!--[if lt IE 9]><script src="'.G5_PLUGIN_URL.'/jqplot/excanvas.js"></script><![endif]-->', 0); add_javascript('<!--[if lt IE 9]><script src="'.G5_PLUGIN_URL.'/jqplot/excanvas.js"></script><![endif]-->', 0);
if (!($graph == 'line' || $graph == 'bar')) if (!($graph == 'line' || $graph == 'bar'))
$graph = 'line'; $graph = 'line';
if ($graph == 'bar') { if ($graph == 'bar') {
@@ -49,7 +49,7 @@ foreach($period_array as $key=>$value) {
break; break;
} }
} }
if (!$is_period) if (!$is_period)
$period = '오늘'; $period = '오늘';
$day = $period_array[$period][0]; $day = $period_array[$period][0];
@@ -64,15 +64,15 @@ if ($period == '오늘') {
$from = $yesterday; $from = $yesterday;
$to = $from; $to = $from;
} else if ($period == '내일') { } else if ($period == '내일') {
$from = date('Y-m-d', G5_SERVER_TIME + (86400 * 2)); $from = date('Y-m-d', G5_SERVER_TIME + (86400 * 2));
$to = $from; $to = $from;
} else { } else {
$from = date('Y-m-d', G5_SERVER_TIME - (86400 * $period_array[$period][1])); $from = date('Y-m-d', G5_SERVER_TIME - (86400 * $period_array[$period][1]));
$to = $yesterday; $to = $yesterday;
} }
$sql_bo_table = ''; $sql_bo_table = '';
if ($bo_table) if ($bo_table)
$sql_bo_table = "and bo_table = '$bo_table'"; $sql_bo_table = "and bo_table = '$bo_table'";
switch ($day) { switch ($day) {
@@ -130,7 +130,7 @@ switch ($day) {
<form> <form>
<select name="bo_table"> <select name="bo_table">
<option value="">전체게시판</a> <option value="">전체게시판</a>
<?php <?php
$sql = " select bo_table, bo_subject from {$g5['board_table']} order by bo_count_write desc "; $sql = " select bo_table, bo_subject from {$g5['board_table']} order by bo_count_write desc ";
$result = sql_query($sql); $result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) { for($i=0; $row=sql_fetch_array($result); $i++) {
@@ -179,7 +179,7 @@ $(document).ready(function(){
var line1 = [<?php echo implode($line1, ','); ?>]; var line1 = [<?php echo implode($line1, ','); ?>];
var line2 = [<?php echo implode($line2, ','); ?>]; var line2 = [<?php echo implode($line2, ','); ?>];
var plot1 = $.jqplot ('chart1', [line1, line2], { var plot1 = $.jqplot ('chart1', [line1, line2], {
seriesDefaults: { seriesDefaults: {
<?php if ($graph == 'bar') { ?> <?php if ($graph == 'bar') { ?>
renderer:$.jqplot.BarRenderer, renderer:$.jqplot.BarRenderer,
<?php } ?> <?php } ?>
@@ -205,6 +205,6 @@ $(document).ready(function(){
} }
?> ?>
<? <?php
include_once ('./admin.tail.php'); include_once ('./admin.tail.php');
?> ?>
+13
View File
@@ -0,0 +1,13 @@
<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/json.lib.php');
if(!$bo_table)
die(json_encode(array('error'=>'게시판 정보가 올바르지 않습니다.', 'url'=>G5_URL)));
set_session('ss_write_'.$bo_table.'_token', '');
$token = get_write_token($bo_table);
die(json_encode(array('error'=>'', 'token'=>$token, 'url'=>'')));
?>
+3
View File
@@ -3,6 +3,9 @@ include_once('./_common.php');
include_once(G5_LIB_PATH.'/naver_syndi.lib.php'); include_once(G5_LIB_PATH.'/naver_syndi.lib.php');
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php'); include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
// 토큰체크
check_write_token($bo_table);
$g5['title'] = '게시글 저장'; $g5['title'] = '게시글 저장';
$msg = array(); $msg = array();
+1 -1
View File
@@ -5,7 +5,7 @@
********************/ ********************/
define('G5_VERSION', '그누보드5'); define('G5_VERSION', '그누보드5');
define('G5_GNUBOARD_VER', '5.2.2'); define('G5_GNUBOARD_VER', '5.2.4');
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음 // 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
define('_GNUBOARD_', true); define('_GNUBOARD_', true);
+6
View File
@@ -0,0 +1,6 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
define('G5_JS_VER', '161020');
define('G5_CSS_VER', '161020');
?>
+5 -5
View File
@@ -55,9 +55,9 @@ if($config['cf_add_meta'])
<?php <?php
if (defined('G5_IS_ADMIN')) { if (defined('G5_IS_ADMIN')) {
if(!defined('_THEME_PREVIEW_')) if(!defined('_THEME_PREVIEW_'))
echo '<link rel="stylesheet" href="'.G5_ADMIN_URL.'/css/admin.css">'.PHP_EOL; echo '<link rel="stylesheet" href="'.G5_ADMIN_URL.'/css/admin.css?ver='.G5_CSS_VER.'">'.PHP_EOL;
} else { } else {
echo '<link rel="stylesheet" href="'.G5_CSS_URL.'/'.(G5_IS_MOBILE?'mobile':'default').'.css">'.PHP_EOL; echo '<link rel="stylesheet" href="'.G5_CSS_URL.'/'.(G5_IS_MOBILE?'mobile':'default').'.css?ver='.G5_CSS_VER.'">'.PHP_EOL;
} }
?> ?>
<!--[if lte IE 8]> <!--[if lte IE 8]>
@@ -79,9 +79,9 @@ var g5_admin_url = "<?php echo G5_ADMIN_URL; ?>";
<?php } ?> <?php } ?>
</script> </script>
<script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script> <script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script>
<script src="<?php echo G5_JS_URL ?>/jquery.menu.js"></script> <script src="<?php echo G5_JS_URL ?>/jquery.menu.js?ver=<?php echo G5_JS_VER; ?>"></script>
<script src="<?php echo G5_JS_URL ?>/common.js"></script> <script src="<?php echo G5_JS_URL ?>/common.js?ver=<?php echo G5_JS_VER; ?>"></script>
<script src="<?php echo G5_JS_URL ?>/wrest.js"></script> <script src="<?php echo G5_JS_URL ?>/wrest.js?ver=<?php echo G5_JS_VER; ?>"></script>
<?php <?php
if(G5_IS_MOBILE) { if(G5_IS_MOBILE) {
echo '<script src="'.G5_JS_URL.'/modernizr.custom.70111.js"></script>'.PHP_EOL; // overflow scroll 감지 echo '<script src="'.G5_JS_URL.'/modernizr.custom.70111.js"></script>'.PHP_EOL; // overflow scroll 감지
+49
View File
@@ -689,4 +689,53 @@ $(function(){
return false; return false;
} }
}); });
});
function get_write_token(bo_table)
{
var token = "";
$.ajax({
type: "POST",
url: g5_bbs_url+"/write_token.php",
data: { bo_table: bo_table },
cache: false,
async: false,
dataType: "json",
success: function(data) {
if(data.error) {
alert(data.error);
if(data.url)
document.location.href = data.url;
return false;
}
token = data.token;
}
});
return token;
}
$(function() {
$(document).on("click", "form[name=fwrite] input:submit", function() {
var f = this.form;
var bo_table = f.bo_table.value;
var token = get_write_token(bo_table);
if(!token) {
alert("토큰 정보가 올바르지 않습니다.");
return false;
}
var $f = $(f);
if(typeof f.token === "undefined")
$f.prepend('<input type="hidden" name="token" value="">');
$f.find("input[name=token]").val(token);
return true;
});
}); });
+35 -2
View File
@@ -712,7 +712,7 @@ function get_member($mb_id, $fields='*')
// 제목별로 컬럼 정렬하는 QUERY STRING // 제목별로 컬럼 정렬하는 QUERY STRING
function subject_sort_link($col, $query_string='', $flag='asc') function subject_sort_link($col, $query_string='', $flag='asc')
{ {
global $sst, $sod, $sfl, $stx, $page; global $sst, $sod, $sfl, $stx, $page, $sca;
$q1 = "sst=$col"; $q1 = "sst=$col";
if ($flag == 'asc') if ($flag == 'asc')
@@ -744,6 +744,7 @@ function subject_sort_link($col, $query_string='', $flag='asc')
$arr_query[] = $q2; $arr_query[] = $q2;
$arr_query[] = 'sfl='.$sfl; $arr_query[] = 'sfl='.$sfl;
$arr_query[] = 'stx='.$stx; $arr_query[] = 'stx='.$stx;
$arr_query[] = 'sca='.$sca;
$arr_query[] = 'page='.$page; $arr_query[] = 'page='.$page;
$qstr = implode("&amp;", $arr_query); $qstr = implode("&amp;", $arr_query);
@@ -2423,6 +2424,8 @@ class html_process {
if(!trim($link[1])) if(!trim($link[1]))
continue; continue;
$link[1] = preg_replace('#\.css([\'\"]?>)$#i', '.css?ver='.G5_CSS_VER.'$1', $link[1]);
$stylesheet .= PHP_EOL.$link[1]; $stylesheet .= PHP_EOL.$link[1];
} }
} }
@@ -2447,6 +2450,8 @@ class html_process {
if(!trim($js[1])) if(!trim($js[1]))
continue; continue;
$js[1] = preg_replace('#\.js([\'\"]?>)$#i', '.js?ver='.G5_JS_VER.'$1', $js[1]);
$javascript .= $php_eol.$js[1]; $javascript .= $php_eol.$js[1];
$php_eol = PHP_EOL; $php_eol = PHP_EOL;
} }
@@ -2464,7 +2469,10 @@ class html_process {
<body> <body>
전에 스킨의 자바스크립트가 위치하도록 하게 한다. 전에 스킨의 자바스크립트가 위치하도록 하게 한다.
*/ */
$buffer = preg_replace('#(</head>[^<]*<body[^>]*>)#', "$javascript\n$1", $buffer); $nl = '';
if($javascript)
$nl = "\n";
$buffer = preg_replace('#(</head>[^<]*<body[^>]*>)#', "$javascript{$nl}$1", $buffer);
return $buffer; return $buffer;
} }
@@ -3226,4 +3234,29 @@ class str_encrypt
return $result; return $result;
} }
} }
// 불법접근을 막도록 토큰을 생성하면서 토큰값을 리턴
function get_write_token($bo_table)
{
$token = md5(uniqid(rand(), true));
set_session('ss_write_'.$bo_table.'_token', $token);
return $token;
}
// POST로 넘어온 토큰과 세션에 저장된 토큰 비교
function check_write_token($bo_table)
{
if(!$bo_table)
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
$token = get_session('ss_write_'.$bo_table.'_token');
set_session('ss_write_'.$bo_table.'_token', '');
if(!$token || !$_REQUEST['token'] || $token != $_REQUEST['token'])
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
return true;
}
?> ?>
+1 -1
View File
@@ -77,7 +77,7 @@ if( count($faq_master_list) ){
<?php <?php
// 하단 HTML // 하단 HTML
echo '<div id="faq_thtml">'.conv_content($fm['fm_tail_html'], 1).'</div>'; echo '<div id="faq_thtml">'.conv_content($fm['fm_mobile_tail_html'], 1).'</div>';
?> ?>
<div id="faq_sch"> <div id="faq_sch">
+1 -1
View File
@@ -21,7 +21,7 @@ if(defined('G5_THEME_PATH')) {
<div id="ft_copy"> <div id="ft_copy">
<div id="ft_company"> <div id="ft_company">
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=company">회사소개</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=company">회사소개</a>
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=privacy">개인정보취급방침</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=privacy">개인정보처리방침</a>
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=provision">서비스이용약관</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=provision">서비스이용약관</a>
</div> </div>
Copyright &copy; <b>소유하신 도메인.</b> All rights reserved.<br> Copyright &copy; <b>소유하신 도메인.</b> All rights reserved.<br>
+1 -1
View File
@@ -29,7 +29,7 @@ if (G5_IS_MOBILE) {
<div id="ft_copy"> <div id="ft_copy">
<div> <div>
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=company">회사소개</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=company">회사소개</a>
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=privacy">개인정보취급방침</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=privacy">개인정보처리방침</a>
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=provision">서비스이용약관</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=provision">서비스이용약관</a>
Copyright &copy; <b>소유하신 도메인.</b> All rights reserved.<br> Copyright &copy; <b>소유하신 도메인.</b> All rights reserved.<br>
<a href="#hd" id="ft_totop">상단으로</a> <a href="#hd" id="ft_totop">상단으로</a>
+4 -4
View File
@@ -46,7 +46,7 @@ if($config['cf_add_meta'])
echo $config['cf_add_meta'].PHP_EOL; echo $config['cf_add_meta'].PHP_EOL;
?> ?>
<title><?php echo $g5_head_title; ?></title> <title><?php echo $g5_head_title; ?></title>
<link rel="stylesheet" href="<?php echo G5_THEME_CSS_URL; ?>/<?php echo G5_IS_MOBILE ? 'mobile' : 'default'; ?>.css"> <link rel="stylesheet" href="<?php echo G5_THEME_CSS_URL; ?>/<?php echo G5_IS_MOBILE ? 'mobile' : 'default'; ?>.css?ver=<?php echo G5_CSS_VER; ?>">
<!--[if lte IE 8]> <!--[if lte IE 8]>
<script src="<?php echo G5_JS_URL ?>/html5.js"></script> <script src="<?php echo G5_JS_URL ?>/html5.js"></script>
<![endif]--> <![endif]-->
@@ -63,9 +63,9 @@ var g5_editor = "<?php echo ($config['cf_editor'] && $board['bo_use_dhtml_edi
var g5_cookie_domain = "<?php echo G5_COOKIE_DOMAIN ?>"; var g5_cookie_domain = "<?php echo G5_COOKIE_DOMAIN ?>";
</script> </script>
<script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script> <script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script>
<script src="<?php echo G5_JS_URL ?>/jquery.menu.js"></script> <script src="<?php echo G5_JS_URL ?>/jquery.menu.js?ver=<?php echo G5_JS_VER; ?>"></script>
<script src="<?php echo G5_JS_URL ?>/common.js"></script> <script src="<?php echo G5_JS_URL ?>/common.js?ver=<?php echo G5_JS_VER; ?>"></script>
<script src="<?php echo G5_JS_URL ?>/wrest.js"></script> <script src="<?php echo G5_JS_URL ?>/wrest.js?ver=<?php echo G5_JS_VER; ?>"></script>
<?php <?php
if(G5_IS_MOBILE) { if(G5_IS_MOBILE) {
echo '<script src="'.G5_JS_URL.'/modernizr.custom.70111.js"></script>'.PHP_EOL; // overflow scroll 감지 echo '<script src="'.G5_JS_URL.'/modernizr.custom.70111.js"></script>'.PHP_EOL; // overflow scroll 감지
@@ -77,7 +77,7 @@ if( count($faq_master_list) ){
<?php <?php
// 하단 HTML // 하단 HTML
echo '<div id="faq_thtml">'.conv_content($fm['fm_tail_html'], 1).'</div>'; echo '<div id="faq_thtml">'.conv_content($fm['fm_mobile_tail_html'], 1).'</div>';
?> ?>
<div id="faq_sch"> <div id="faq_sch">
+1 -1
View File
@@ -16,7 +16,7 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
<div id="ft_copy"> <div id="ft_copy">
<div id="ft_company"> <div id="ft_company">
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=company">회사소개</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=company">회사소개</a>
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=privacy">개인정보취급방침</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=privacy">개인정보처리방침</a>
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=provision">서비스이용약관</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=provision">서비스이용약관</a>
</div> </div>
Copyright &copy; <b>소유하신 도메인.</b> All rights reserved.<br> Copyright &copy; <b>소유하신 도메인.</b> All rights reserved.<br>
+1 -1
View File
@@ -24,7 +24,7 @@ if (G5_IS_MOBILE) {
<div id="ft_copy"> <div id="ft_copy">
<div> <div>
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=company">회사소개</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=company">회사소개</a>
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=privacy">개인정보취급방침</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=privacy">개인정보처리방침</a>
<a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=provision">서비스이용약관</a> <a href="<?php echo G5_BBS_URL; ?>/content.php?co_id=provision">서비스이용약관</a>
Copyright &copy; <b>소유하신 도메인.</b> All rights reserved.<br> Copyright &copy; <b>소유하신 도메인.</b> All rights reserved.<br>
<a href="#hd" id="ft_totop">상단으로</a> <a href="#hd" id="ft_totop">상단으로</a>