Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6cc2bfdd50 | ||
|
|
101d5995fa | ||
|
|
ecb6226599 | ||
|
|
50edf32875 | ||
|
|
68feb602ff | ||
|
|
7b4a11b99d | ||
|
|
3883924258 | ||
|
|
d6d6773fbb | ||
|
|
1cc2b141f9 | ||
|
|
28d1001d1b | ||
|
|
ab1d514eb4 | ||
|
|
a2bad15bfe | ||
|
|
b069485c53 | ||
|
|
67126bcbe1 | ||
|
|
81444b42b1 | ||
|
|
dad97445f8 | ||
|
|
05a88d12de | ||
|
|
ff4ac1d626 | ||
|
|
7a7af424ce | ||
|
|
ae75f5bf7a | ||
|
|
86f8c1a1c1 | ||
|
|
a5d959deb8 | ||
|
|
f5b7b3000c | ||
|
|
fff7e074ff | ||
|
|
c1adf30b05 | ||
|
|
a8292a51bd | ||
|
|
b28796dd28 | ||
|
|
8dd2fe58e6 | ||
|
|
1395a8f338 | ||
|
|
799aefada2 | ||
|
|
87bb2f1d8a | ||
|
|
6fe20b0a13 | ||
|
|
31705f32c9 | ||
|
|
8ba373a951 | ||
|
|
8067a20d32 | ||
|
|
e72b71ce12 | ||
|
|
596ad4baa6 | ||
|
|
1600f63dee | ||
|
|
fa9aa8da19 | ||
|
|
85e075a5c6 | ||
|
|
1e7d17fd68 | ||
|
|
6ccb8905a0 | ||
|
|
ebac40312f | ||
|
|
3c0cde3fe2 | ||
|
|
3cf0546711 | ||
|
|
120d8cf564 | ||
|
|
992d3d93f4 | ||
|
|
30e0b93ecf | ||
|
|
2581bdba9b | ||
|
|
d982361541 | ||
|
|
e82ebd7ada | ||
|
|
2d1af9a3b2 | ||
|
|
da29b6d0bb | ||
|
|
4493674762 | ||
|
|
2e0b99f65c | ||
|
|
cc5eb6e520 | ||
|
|
b855bbfb96 | ||
|
|
93753162be | ||
|
|
726863de44 | ||
|
|
69ec7348b8 | ||
|
|
d8521d4543 | ||
|
|
e6eab2d040 | ||
|
|
2ad151c0dd | ||
|
|
4c17f79783 | ||
|
|
e329192586 | ||
|
|
f96c3558e8 | ||
|
|
f2a1af5f46 | ||
|
|
aec86e4360 | ||
|
|
6a934c7a36 | ||
|
|
ccfe419bbd | ||
|
|
4b0969d244 | ||
|
|
a5e5531471 | ||
|
|
5a3c2b628d | ||
|
|
b5152b62e8 | ||
|
|
de59f07a66 | ||
|
|
32e024f52e | ||
|
|
ffc43056b4 | ||
|
|
6016db4a95 | ||
|
|
30f6f09372 | ||
|
|
d10a1667c7 | ||
|
|
d560892a80 | ||
|
|
4e11c1fc1f | ||
|
|
54c69dcf35 | ||
|
|
7ccf17b479 | ||
|
|
0e2dbb6145 | ||
|
|
83b85b5d66 | ||
|
|
f68ba794ec | ||
|
|
76c1bde119 | ||
|
|
312fc5daf3 | ||
|
|
080370323a | ||
|
|
c419e2751f | ||
|
|
6977e9d4b5 | ||
|
|
e3ed8a1af3 | ||
|
|
22aad37bfb | ||
|
|
f230dc3522 | ||
|
|
b60daff8f0 | ||
|
|
58878593dc | ||
|
|
863f6011ac | ||
|
|
cee88a0f6f | ||
|
|
27b1a5d8f8 | ||
|
|
7d494115b3 | ||
|
|
0954beced9 | ||
|
|
2534921446 |
+1
-1
@@ -101,7 +101,7 @@ function imageview(id, w, h)
|
||||
<h1><?php echo $config['cf_title'] ?></h1>
|
||||
<div id="hd_top">
|
||||
<button type="button" id="btn_gnb" class="btn_gnb_close <?php echo $adm_menu_cookie['btn_gnb'];?>">메뉴</button>
|
||||
<div id="logo"><a href="<?php echo correct_goto_url(G5_ADMIN_URL); ?>"><img src="<?php echo G5_ADMIN_URL ?>/img/logo.png" alt="<?php echo $config['cf_title'] ?> 관리자"></a></div>
|
||||
<div id="logo"><a href="<?php echo correct_goto_url(G5_ADMIN_URL); ?>"><img src="<?php echo G5_ADMIN_URL ?>/img/logo.png" alt="<?php echo get_text($config['cf_title']); ?> 관리자"></a></div>
|
||||
|
||||
<div id="tnb">
|
||||
<ul>
|
||||
|
||||
+1
-1
@@ -108,7 +108,7 @@ function get_ajax_token()
|
||||
}
|
||||
|
||||
$(function() {
|
||||
$(document).on("click", "form input:submit", function() {
|
||||
$(document).on("click", "form input:submit, form button:submit", function() {
|
||||
var f = this.form;
|
||||
var token = get_ajax_token();
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ include_once(G5_PATH.'/head.sub.php');
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col"><label for="target_subject">게시판 제목<strong class="sound_only">필수</strong></label></th>
|
||||
<td><input type="text" name="target_subject" value="[복사본] <?php echo $board['bo_subject'] ?>" id="target_subject" required class="required frm_input" maxlength="120"></td>
|
||||
<td><input type="text" name="target_subject" value="[복사본] <?php echo get_sanitize_input($board['bo_subject']); ?>" id="target_subject" required class="required frm_input" maxlength="120"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">복사 유형</th>
|
||||
|
||||
@@ -11,6 +11,8 @@ check_admin_token();
|
||||
$target_table = trim($_POST['target_table']);
|
||||
$target_subject = trim($_POST['target_subject']);
|
||||
|
||||
$target_subject = strip_tags(clean_xss_attributes($target_subject));
|
||||
|
||||
if (!preg_match('/[A-Za-z0-9_]{1,20}/', $target_table)) {
|
||||
alert('게시판 TABLE명은 공백없이 영문자, 숫자, _ 만 사용 가능합니다. (20자 이내)');
|
||||
}
|
||||
|
||||
@@ -26,6 +26,9 @@ sql_query(" delete from {$g5['board_file_table']} where bo_table = '{$tmp_bo_tab
|
||||
// 게시판 테이블 DROP
|
||||
sql_query(" drop table {$g5['write_prefix']}{$tmp_bo_table} ", FALSE);
|
||||
|
||||
// 좋아요 테이블에서 기록 삭제
|
||||
sql_query(" delete from {$g5['board_good_table']} where bo_table = '{$tmp_bo_table}' ");
|
||||
|
||||
delete_cache_latest($tmp_bo_table);
|
||||
|
||||
// 게시판 폴더 전체 삭제
|
||||
|
||||
@@ -60,6 +60,11 @@ if(!is_include_path_check($bo_include_tail, 1)) {
|
||||
alert('하단 파일 경로에 포함시킬수 없는 문자열이 있습니다.');
|
||||
}
|
||||
|
||||
if( function_exists('filter_input_include_path') ){
|
||||
$bo_include_head = filter_input_include_path($bo_include_head);
|
||||
$bo_include_tail = filter_input_include_path($bo_include_tail);
|
||||
}
|
||||
|
||||
$board_path = G5_DATA_PATH.'/file/'.$bo_table;
|
||||
|
||||
// 게시판 디렉토리 생성
|
||||
@@ -76,12 +81,12 @@ $f = @fopen($file, 'w');
|
||||
// 분류에 & 나 = 는 사용이 불가하므로 2바이트로 바꾼다.
|
||||
$src_char = array('&', '=');
|
||||
$dst_char = array('&', '〓');
|
||||
$bo_category_list = str_replace($src_char, $dst_char, $bo_category_list);
|
||||
$bo_category_list = isset($_POST['bo_category_list']) ? str_replace($src_char, $dst_char, $_POST['bo_category_list']) : '';
|
||||
//https://github.com/gnuboard/gnuboard5/commit/f5f4925d4eb28ba1af728e1065fc2bdd9ce1da58 에 따른 조치
|
||||
$str_bo_category_list = isset($_POST['bo_category_list']) ? preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\/\^\*]/", "", $_POST['bo_category_list']) : '';
|
||||
$str_bo_category_list = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\/\^\*]/", "", $bo_category_list);
|
||||
|
||||
$_POST['bo_subject'] = strip_tags($_POST['bo_subject']);
|
||||
$_POST['bo_mobile_subject'] = strip_tags($_POST['bo_mobile_subject']);
|
||||
$_POST['bo_subject'] = strip_tags(clean_xss_attributes($_POST['bo_subject']));
|
||||
$_POST['bo_mobile_subject'] = strip_tags(clean_xss_attributes($_POST['bo_mobile_subject']));
|
||||
|
||||
$sql_common = " gr_id = '{$gr_id}',
|
||||
bo_subject = '{$_POST['bo_subject']}',
|
||||
@@ -199,7 +204,7 @@ if ($w == '') {
|
||||
$file = file('./sql_write.sql');
|
||||
$file = get_db_create_replace($file);
|
||||
|
||||
$sql = implode($file, "\n");
|
||||
$sql = implode("\n", $file);
|
||||
|
||||
$create_table = $g5['write_prefix'] . $bo_table;
|
||||
|
||||
@@ -289,7 +294,7 @@ if (is_checked('chk_grp_write_point')) $grp_fields .= " , bo_write_poin
|
||||
if (is_checked('chk_grp_comment_point')) $grp_fields .= " , bo_comment_point = '{$bo_comment_point}' ";
|
||||
if (is_checked('chk_grp_download_point')) $grp_fields .= " , bo_download_point = '{$bo_download_point}' ";
|
||||
if (is_checked('chk_grp_category_list')) {
|
||||
$grp_fields .= " , bo_category_list = '{$bo_category_list}' ";
|
||||
$grp_fields .= " , bo_category_list = '{$str_bo_category_list}' ";
|
||||
$grp_fields .= " , bo_use_category = '{$bo_use_category}' ";
|
||||
}
|
||||
if (is_checked('chk_grp_use_sideview')) $grp_fields .= " , bo_use_sideview = '{$bo_use_sideview}' ";
|
||||
@@ -378,7 +383,7 @@ if (is_checked('chk_all_write_point')) $all_fields .= " , bo_write_poin
|
||||
if (is_checked('chk_all_comment_point')) $all_fields .= " , bo_comment_point = '{$bo_comment_point}' ";
|
||||
if (is_checked('chk_all_download_point')) $all_fields .= " , bo_download_point = '{$bo_download_point}' ";
|
||||
if (is_checked('chk_all_category_list')) {
|
||||
$all_fields .= " , bo_category_list = '{$bo_category_list}' ";
|
||||
$all_fields .= " , bo_category_list = '{$str_bo_category_list}' ";
|
||||
$all_fields .= " , bo_use_category = '{$bo_use_category}' ";
|
||||
}
|
||||
if (is_checked('chk_all_use_sideview')) $all_fields .= " , bo_use_sideview = '{$bo_use_sideview}' ";
|
||||
|
||||
@@ -33,7 +33,7 @@ if ($_POST['act_button'] == "선택수정") {
|
||||
alert('최고관리자가 아닌 경우 다른 관리자의 게시판('.$board_table[$k].')은 수정이 불가합니다.');
|
||||
}
|
||||
|
||||
$p_bo_subject = is_array($_POST['bo_subject']) ? strip_tags($_POST['bo_subject'][$k]) : '';
|
||||
$p_bo_subject = is_array($_POST['bo_subject']) ? strip_tags(clean_xss_attributes($_POST['bo_subject'][$k])) : '';
|
||||
|
||||
$sql = " update {$g5['board_table']}
|
||||
set gr_id = '".sql_real_escape_string(strip_tags($_POST['gr_id'][$k]))."',
|
||||
|
||||
@@ -16,7 +16,7 @@ if (!preg_match("/^([A-Za-z0-9_]{1,10})$/", $_POST['gr_id']))
|
||||
|
||||
if (!$gr_subject) alert('그룹 제목을 입력하세요.');
|
||||
|
||||
$gr_subject = isset($_POST['gr_subject']) ? strip_tags($_POST['gr_subject']) : '';
|
||||
$gr_subject = isset($_POST['gr_subject']) ? strip_tags(clean_xss_attributes($_POST['gr_subject'])) : '';
|
||||
|
||||
$sql_common = " gr_subject = '{$gr_subject}',
|
||||
gr_device = '{$_POST['gr_device']}',
|
||||
|
||||
@@ -124,10 +124,10 @@ $colspan = 10;
|
||||
<tr class="<?php echo $bg; ?>">
|
||||
<td class="td_chk">
|
||||
<input type="hidden" name="group_id[<?php echo $i ?>]" value="<?php echo $row['gr_id'] ?>">
|
||||
<label for="chk_<?php echo $i; ?>" class="sound_only"><?php echo $row['gr_subject'] ?> 그룹</label>
|
||||
<label for="chk_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['gr_subject']); ?> 그룹</label>
|
||||
<input type="checkbox" name="chk[]" value="<?php echo $i ?>" id="chk_<?php echo $i ?>">
|
||||
</td>
|
||||
<td class="td_left"><a href="<?php echo get_pretty_url(G5_GROUP_DIR, $row['gr_id']); ?>"><?php echo $row['gr_id'] ?></a></td>
|
||||
<td class="td_left"><a href="<?php echo G5_BBS_URL ?>/group.php?gr_id=<?php echo $row['gr_id'] ?>"><?php echo $row['gr_id'] ?></a></td>
|
||||
<td class="td_input">
|
||||
<label for="gr_subject_<?php echo $i; ?>" class="sound_only">그룹제목</label>
|
||||
<input type="text" name="gr_subject[<?php echo $i ?>]" value="<?php echo get_text($row['gr_subject']) ?>" id="gr_subject_<?php echo $i ?>" class="tbl_input">
|
||||
@@ -135,9 +135,9 @@ $colspan = 10;
|
||||
<td class="td_mng td_input">
|
||||
<?php if ($is_admin == 'super'){ ?>
|
||||
<label for="gr_admin_<?php echo $i; ?>" class="sound_only">그룹관리자</label>
|
||||
<input type="text" name="gr_admin[<?php echo $i ?>]" value="<?php echo $row['gr_admin'] ?>" id="gr_admin_<?php echo $i ?>" class="tbl_input" size="10" maxlength="20">
|
||||
<input type="text" name="gr_admin[<?php echo $i ?>]" value="<?php echo get_sanitize_input($row['gr_admin']); ?>" id="gr_admin_<?php echo $i ?>" class="tbl_input" size="10" maxlength="20">
|
||||
<?php }else{ ?>
|
||||
<input type="hidden" name="gr_admin[<?php echo $i ?>]" value="<?php echo $row['gr_admin'] ?>"><?php echo $row['gr_admin'] ?>
|
||||
<input type="hidden" name="gr_admin[<?php echo $i ?>]" value="<?php echo get_sanitize_input($row['gr_admin']); ?>"><?php echo get_text($row['gr_admin']); ?>
|
||||
<?php } ?>
|
||||
</td>
|
||||
<td class="td_num"><a href="./board_list.php?sfl=a.gr_id&stx=<?php echo $row['gr_id'] ?>"><?php echo $row2['cnt'] ?></a></td>
|
||||
|
||||
@@ -19,8 +19,8 @@ for ($i=0; $i<$count; $i++)
|
||||
{
|
||||
$k = $_POST['chk'][$i];
|
||||
$gr_id = preg_replace('/[^a-z0-9_]/i', '', $_POST['group_id'][$k]);
|
||||
$gr_subject = is_array($_POST['gr_subject']) ? strip_tags($_POST['gr_subject'][$k]) : '';
|
||||
$gr_admin = is_array($_POST['gr_admin']) ? strip_tags($_POST['gr_admin'][$k]) : '';
|
||||
$gr_subject = is_array($_POST['gr_subject']) ? strip_tags(clean_xss_attributes($_POST['gr_subject'][$k])) : '';
|
||||
$gr_admin = is_array($_POST['gr_admin']) ? strip_tags(clean_xss_attributes($_POST['gr_admin'][$k])) : '';
|
||||
|
||||
if($_POST['act_button'] == '선택수정') {
|
||||
$sql = " update {$g5['group_table']}
|
||||
|
||||
@@ -85,7 +85,7 @@ $colspan = 4;
|
||||
<label for="chk_<?php echo $i; ?>" class="sound_only"><?php echo $row['gr_subject'] ?> 그룹</label>
|
||||
<input type="checkbox" name="chk[]" value="<?php echo $row['gm_id'] ?>" id="chk_<?php echo $i ?>">
|
||||
</td>
|
||||
<td class="td_grid"><a href="<?php echo get_pretty_url(G5_GROUP_DIR, $row['gr_id']); ?>"><?php echo $row['gr_id'] ?></a></td>
|
||||
<td class="td_grid"><a href="<?php echo G5_BBS_URL; ?>/group.php?gr_id=<?php echo $row['gr_id'] ?>"><?php echo $row['gr_id'] ?></a></td>
|
||||
<td class="td_category"><?php echo $row['gr_subject'] ?></td>
|
||||
<td class="td_datetime"><?php echo $row['gm_datetime'] ?></td>
|
||||
</tr>
|
||||
|
||||
+34
-17
@@ -271,6 +271,13 @@ if(!isset($member['mb_scrap_cnt'])) {
|
||||
ADD `mb_scrap_cnt` int(11) NOT NULL DEFAULT '0' AFTER `mb_memo_cnt`", true);
|
||||
}
|
||||
|
||||
// 아이코드 토큰키 추가
|
||||
if( ! isset($config['cf_icode_token_key']) ){
|
||||
$sql = "ALTER TABLE `{$g5['config_table']}`
|
||||
ADD COLUMN `cf_icode_token_key` VARCHAR(100) NOT NULL DEFAULT '' AFTER `cf_icode_server_port`; ";
|
||||
sql_query($sql, false);
|
||||
}
|
||||
|
||||
if(!$config['cf_faq_skin']) $config['cf_faq_skin'] = "basic";
|
||||
if(!$config['cf_mobile_faq_skin']) $config['cf_mobile_faq_skin'] = "basic";
|
||||
|
||||
@@ -321,7 +328,7 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row"><label for="cf_title">홈페이지 제목<strong class="sound_only">필수</strong></label></th>
|
||||
<td colspan="3"><input type="text" name="cf_title" value="<?php echo $config['cf_title'] ?>" id="cf_title" required class="required frm_input" size="40"></td>
|
||||
<td colspan="3"><input type="text" name="cf_title" value="<?php echo get_sanitize_input($config['cf_title']); ?>" id="cf_title" required class="required frm_input" size="40"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="cf_admin">최고관리자<strong class="sound_only">필수</strong></label></th>
|
||||
@@ -1257,29 +1264,29 @@ include_once('_rewrite_config_form.php');
|
||||
<tr>
|
||||
<th scope="row"><label for="cf_sms_type">SMS 전송유형</label></th>
|
||||
<td>
|
||||
<?php echo help("전송유형을 SMS로 선택하시면 최대 80바이트까지 전송하실 수 있으며<br>LMS로 선택하시면 90바이트 이하는 SMS로, 그 이상은 1500바이트까지 LMS로 전송됩니다.<br>요금은 건당 SMS는 16원, LMS는 48원입니다."); ?>
|
||||
<?php echo help("전송유형을 SMS로 선택하시면 최대 80바이트까지 전송하실 수 있으며<br>LMS로 선택하시면 90바이트 이하는 SMS로, 그 이상은 ".G5_ICODE_LMS_MAX_LENGTH."바이트까지 LMS로 전송됩니다.<br>요금은 건당 SMS는 16원, LMS는 48원입니다."); ?>
|
||||
<select id="cf_sms_type" name="cf_sms_type">
|
||||
<option value="" <?php echo get_selected($config['cf_sms_type'], ''); ?>>SMS</option>
|
||||
<option value="LMS" <?php echo get_selected($config['cf_sms_type'], 'LMS'); ?>>LMS</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="cf_icode_id">아이코드 회원아이디</label></th>
|
||||
<tr class="icode_old_version">
|
||||
<th scope="row"><label for="cf_icode_id">아이코드 회원아이디<br>(구버전)</label></th>
|
||||
<td>
|
||||
<?php echo help("아이코드에서 사용하시는 회원아이디를 입력합니다."); ?>
|
||||
<input type="text" name="cf_icode_id" value="<?php echo $config['cf_icode_id']; ?>" id="cf_icode_id" class="frm_input" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="cf_icode_pw">아이코드 비밀번호</label></th>
|
||||
<tr class="icode_old_version">
|
||||
<th scope="row"><label for="cf_icode_pw">아이코드 비밀번호<br>(구버전)</label></th>
|
||||
<td>
|
||||
<?php echo help("아이코드에서 사용하시는 비밀번호를 입력합니다."); ?>
|
||||
<input type="password" name="cf_icode_pw" value="<?php echo $config['cf_icode_pw']; ?>" id="cf_icode_pw" class="frm_input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">요금제</th>
|
||||
<tr class="icode_old_version <?php if(!(isset($userinfo['payment']) && $userinfo['payment'])){ echo 'cf_tr_hide'; } ?>">
|
||||
<th scope="row">요금제<br>(구버전)</th>
|
||||
<td>
|
||||
<input type="hidden" name="cf_icode_server_ip" value="<?php echo $config['cf_icode_server_ip']; ?>">
|
||||
<?php
|
||||
@@ -1296,21 +1303,31 @@ include_once('_rewrite_config_form.php');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">아이코드 SMS 신청<br>회원가입</th>
|
||||
<td>
|
||||
<a href="http://icodekorea.com/res/join_company_fix_a.php?sellid=sir2" target="_blank" class="btn_frmline">아이코드 회원가입</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if ($userinfo['payment'] == 'A') { ?>
|
||||
<tr>
|
||||
<th scope="row">충전 잔액</th>
|
||||
<?php if ($userinfo['payment'] == 'A') { ?>
|
||||
<tr class="icode_old_version">
|
||||
<th scope="row">충전 잔액<br>(구버전)</th>
|
||||
<td>
|
||||
<?php echo number_format($userinfo['coin']); ?> 원.
|
||||
<a href="http://www.icodekorea.com/smsbiz/credit_card_amt.php?icode_id=<?php echo $config['cf_icode_id']; ?>&icode_passwd=<?php echo $config['cf_icode_pw']; ?>" target="_blank" class="btn_frmline">충전하기</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
<tr class="icode_json_version">
|
||||
<th scope="row"><label for="cf_icode_token_key">아이코드 토큰키<br>(JSON버전)</label></th>
|
||||
<td>
|
||||
<?php echo help("아이코드 JSON 버전의 경우 아이코드 토큰키를 입력시 실행됩니다.<br>SMS 전송유형을 LMS로 설정시 90바이트 이내는 SMS, 90 ~ 2000 바이트는 LMS 그 이상은 절삭 되어 LMS로 발송됩니다."); ?>
|
||||
<input type="text" name="cf_icode_token_key" value="<?php echo $config['cf_icode_token_key']; ?>" id="cf_icode_token_key" class="frm_input" size="40">
|
||||
<?php echo help("아이코드 사이트 -> 토큰키관리 메뉴에서 생성한 토큰키를 입력합니다."); ?>
|
||||
<br>
|
||||
서버아이피 : <?php echo $_SERVER['SERVER_ADDR']; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">아이코드 SMS 신청<br>회원가입</th>
|
||||
<td>
|
||||
<a href="http://icodekorea.com/res/join_company_fix_a.php?sellid=sir2" target="_blank" class="btn_frmline">아이코드 회원가입</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -26,7 +26,7 @@ if(!$_POST['cf_cert_use']) {
|
||||
|
||||
$cf_social_servicelist = !empty($_POST['cf_social_servicelist']) ? implode(',', $_POST['cf_social_servicelist']) : '';
|
||||
|
||||
$_POST['cf_title'] = strip_tags($_POST['cf_title']);
|
||||
$_POST['cf_title'] = strip_tags(clean_xss_attributes($_POST['cf_title']));
|
||||
|
||||
$check_keys = array('cf_lg_mid', 'cf_lg_mert_key', 'cf_cert_kcb_cd', 'cf_cert_kcp_cd', 'cf_editor', 'cf_recaptcha_site_key', 'cf_recaptcha_secret_key', 'cf_naver_clientid', 'cf_naver_secret', 'cf_facebook_appid', 'cf_facebook_secret', 'cf_twitter_key', 'cf_twitter_secret', 'cf_google_clientid', 'cf_google_secret', 'cf_googl_shorturl_apikey', 'cf_kakao_rest_key', 'cf_kakao_client_secret', 'cf_kakao_js_apikey', 'cf_payco_clientid', 'cf_payco_secret');
|
||||
|
||||
@@ -36,6 +36,8 @@ foreach( $check_keys as $key ){
|
||||
}
|
||||
}
|
||||
|
||||
$_POST['cf_icode_server_port'] = isset($_POST['cf_icode_server_port']) ? preg_replace('/[^0-9]/', '', $_POST['cf_icode_server_port']) : '7295';
|
||||
|
||||
$sql = " update {$g5['config_table']}
|
||||
set cf_title = '{$_POST['cf_title']}',
|
||||
cf_admin = '{$_POST['cf_admin']}',
|
||||
@@ -143,6 +145,7 @@ $sql = " update {$g5['config_table']}
|
||||
cf_sms_type = '{$_POST['cf_sms_type']}',
|
||||
cf_icode_id = '{$_POST['cf_icode_id']}',
|
||||
cf_icode_pw = '{$_POST['cf_icode_pw']}',
|
||||
cf_icode_token_key = '{$_POST['cf_icode_token_key']}',
|
||||
cf_icode_server_ip = '{$_POST['cf_icode_server_ip']}',
|
||||
cf_icode_server_port = '{$_POST['cf_icode_server_port']}',
|
||||
cf_googl_shorturl_apikey = '{$_POST['cf_googl_shorturl_apikey']}',
|
||||
|
||||
@@ -21,7 +21,7 @@ if ($w == "" || $w == "u")
|
||||
}
|
||||
|
||||
$co_id = preg_replace('/[^a-z0-9_]/i', '', $co_id);
|
||||
$co_subject = strip_tags($co_subject);
|
||||
$co_subject = strip_tags(clean_xss_attributes($co_subject));
|
||||
$co_include_head = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($co_include_head, 0, 255));
|
||||
$co_include_tail = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($co_include_tail, 0, 255));
|
||||
$co_tag_filter_use = isset($_POST['co_tag_filter_use']) ? (int) $_POST['co_tag_filter_use'] : 1;
|
||||
@@ -71,6 +71,11 @@ if( $co_include_tail && ! is_include_path_check($co_include_tail, 1) ){
|
||||
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.';
|
||||
}
|
||||
|
||||
if( function_exists('filter_input_include_path') ){
|
||||
$co_include_head = filter_input_include_path($co_include_head);
|
||||
$co_include_tail = filter_input_include_path($co_include_tail);
|
||||
}
|
||||
|
||||
$co_seo_title = exist_seo_title_recursive('content', generate_seo_title($co_subject), $g5['content_table'], $co_id);
|
||||
|
||||
$sql_common = " co_include_head = '$co_include_head',
|
||||
|
||||
@@ -528,6 +528,10 @@ td.td_grpset {width:160px;border-left:1px solid #e9ecee;text-align:center}
|
||||
.is_rewrite .info-success{color:#155724}
|
||||
.is_rewrite .info-warning{color:#856404}
|
||||
|
||||
.icode_old_version th{background-color:#FFFCED}
|
||||
.icode_json_version th{background-color:#F6F1FF}
|
||||
.cf_tr_hide {display:none}
|
||||
|
||||
/* 관리권한설정 */
|
||||
#add_admin fieldset {margin-top:20px;overflow:auto;padding:2px 6px;line-height:1.4;resize:vertical}
|
||||
|
||||
|
||||
@@ -147,6 +147,22 @@ if(!isset($member['mb_memo_cnt'])) {
|
||||
$is_check = true;
|
||||
}
|
||||
|
||||
// 스크랩 읽은 수 추가
|
||||
if(!isset($member['mb_scrap_cnt'])) {
|
||||
sql_query(" ALTER TABLE `{$g5['member_table']}`
|
||||
ADD `mb_scrap_cnt` int(11) NOT NULL DEFAULT '0' AFTER `mb_memo_cnt`", true);
|
||||
|
||||
$is_check = true;
|
||||
}
|
||||
|
||||
// 짧은 URL 주소를 사용 여부 필드 추가
|
||||
if (!isset($config['cf_bbs_rewrite'])) {
|
||||
sql_query(" ALTER TABLE `{$g5['config_table']}`
|
||||
ADD `cf_bbs_rewrite` tinyint(4) NOT NULL DEFAULT '0' AFTER `cf_link_target` ", true);
|
||||
|
||||
$is_check = true;
|
||||
}
|
||||
|
||||
// 파일테이블에 추가 칼럼
|
||||
|
||||
$sql = " SHOW COLUMNS FROM `{$g5['board_file_table']}` LIKE 'bf_fileurl' ";
|
||||
|
||||
+5
-3
@@ -68,15 +68,17 @@ $result = sql_query($sql);
|
||||
$num = $i + 1;
|
||||
|
||||
$bg = 'bg'.($i%2);
|
||||
|
||||
$fa_subject = conv_content($row['fa_subject'], 1);
|
||||
?>
|
||||
|
||||
<tr class="<?php echo $bg; ?>">
|
||||
<td class="td_num"><?php echo $num; ?></td>
|
||||
<td class="td_left"><?php echo stripslashes($row['fa_subject']); ?></td>
|
||||
<td class="td_left"><?php echo $fa_subject; ?></td>
|
||||
<td class="td_num"><?php echo $row['fa_order']; ?></td>
|
||||
<td class="td_mng td_mng_m">
|
||||
<a href="./faqform.php?w=u&fm_id=<?php echo $row['fm_id']; ?>&fa_id=<?php echo $row['fa_id']; ?>" class="btn btn_03"><span class="sound_only"><?php echo stripslashes($row['fa_subject']); ?> </span>수정</a>
|
||||
<a href="./faqformupdate.php?w=d&fm_id=<?php echo $row['fm_id']; ?>&fa_id=<?php echo $row['fa_id']; ?>" onclick="return delete_confirm(this);" class="btn btn_02"><span class="sound_only"><?php echo stripslashes($row['fa_subject']); ?> </span>삭제</a>
|
||||
<a href="./faqform.php?w=u&fm_id=<?php echo $row['fm_id']; ?>&fa_id=<?php echo $row['fa_id']; ?>" class="btn btn_03"><span class="sound_only"><?php echo $fa_subject; ?> </span>수정</a>
|
||||
<a href="./faqformupdate.php?w=d&fm_id=<?php echo $row['fm_id']; ?>&fa_id=<?php echo $row['fa_id']; ?>" onclick="return delete_confirm(this);" class="btn btn_02"><span class="sound_only"><?php echo $fa_subject; ?> </span>삭제</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ check_admin_token();
|
||||
if ($fm_himg_del) @unlink(G5_DATA_PATH."/faq/{$fm_id}_h");
|
||||
if ($fm_timg_del) @unlink(G5_DATA_PATH."/faq/{$fm_id}_t");
|
||||
|
||||
$fm_subject = strip_tags($fm_subject);
|
||||
$fm_subject = strip_tags(clean_xss_attributes($fm_subject));
|
||||
|
||||
$sql_common = " set fm_subject = '$fm_subject',
|
||||
fm_head_html = '$fm_head_html',
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ include_once('./admin.head.php');
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row"><label for="ma_subject">메일 제목<strong class="sound_only">필수</strong></label></th>
|
||||
<td><input type="text" name="ma_subject" value="<?php echo $ma['ma_subject'] ?>" id="ma_subject" required class="required frm_input" size="100"></td>
|
||||
<td><input type="text" name="ma_subject" value="<?php echo get_sanitize_input($ma['ma_subject']); ?>" id="ma_subject" required class="required frm_input" size="100"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="ma_content">메일 내용<strong class="sound_only">필수</strong></label></th>
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ auth_check($auth[$sub_menu], 'w');
|
||||
check_admin_token();
|
||||
|
||||
$ma_id = isset($_POST['ma_id']) ? (int) $_POST['ma_id'] : 0;
|
||||
$ma_subject = isset($_POST['ma_subject']) ? strip_tags($_POST['ma_subject']) : '';
|
||||
$ma_subject = isset($_POST['ma_subject']) ? strip_tags(clean_xss_attributes($_POST['ma_subject'])) : '';
|
||||
|
||||
if ($w == '')
|
||||
{
|
||||
|
||||
+3
-3
@@ -159,11 +159,11 @@ function add_menu_list(name, link, code)
|
||||
list += "<option value=\"0\">사용안함</option>";
|
||||
list += "</select>";
|
||||
list += "</td>";
|
||||
list += "<td class=\"td_mngsmall\">";
|
||||
list += "<td class=\"td_mng\">";
|
||||
<?php if($new == 'new') { ?>
|
||||
list += "<button type=\"button\" class=\"btn_add_submenu btn\">추가</button>";
|
||||
list += "<button type=\"button\" class=\"btn_add_submenu btn_03\">추가</button>\n";
|
||||
<?php } ?>
|
||||
list += "<button type=\"button\" class=\"btn_del_menu btn\">삭제</button>";
|
||||
list += "<button type=\"button\" class=\"btn_del_menu btn_02\">삭제</button>";
|
||||
list += "</td>";
|
||||
list += "</tr>";
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ if($sql) {
|
||||
<?php }
|
||||
switch($type) {
|
||||
case 'group':
|
||||
$link = get_pretty_url(G5_GROUP_DIR, $row['id']);
|
||||
$link = G5_BBS_URL.'/group.php?gr_id='.$row['id'];
|
||||
break;
|
||||
case 'board':
|
||||
$link = get_pretty_url($row['id']);
|
||||
|
||||
@@ -21,11 +21,11 @@ for ($i=0; $i<$count; $i++)
|
||||
{
|
||||
$_POST = array_map_deep('trim', $_POST);
|
||||
|
||||
$_POST['me_link'][$i] = is_array($_POST['me_link']) ? clean_xss_tags($_POST['me_link'][$i], 1) : '';
|
||||
$_POST['me_link'][$i] = is_array($_POST['me_link']) ? clean_xss_tags(clean_xss_attributes($_POST['me_link'][$i], 1)) : '';
|
||||
|
||||
$code = is_array($_POST['code']) ? strip_tags($_POST['code'][$i]) : '';
|
||||
$me_name = is_array($_POST['me_name']) ? strip_tags($_POST['me_name'][$i]) : '';
|
||||
$me_link = (preg_match('/^javascript/i', $_POST['me_link'][$i]) || preg_match('/script:/i', $_POST['me_link'][$i])) ? G5_URL : strip_tags($_POST['me_link'][$i]);
|
||||
$me_link = (preg_match('/^javascript/i', $_POST['me_link'][$i]) || preg_match('/script:/i', $_POST['me_link'][$i])) ? G5_URL : strip_tags(clean_xss_attributes($_POST['me_link'][$i]));
|
||||
|
||||
if(!$code || !$me_name || !$me_link)
|
||||
continue;
|
||||
|
||||
@@ -12,7 +12,7 @@ else
|
||||
|
||||
check_admin_token();
|
||||
|
||||
$nw_subject = isset($_POST['nw_subject']) ? strip_tags($_POST['nw_subject']) : '';
|
||||
$nw_subject = isset($_POST['nw_subject']) ? strip_tags(clean_xss_attributes($_POST['nw_subject'])) : '';
|
||||
|
||||
$sql_common = " nw_device = '{$_POST['nw_device']}',
|
||||
nw_begin_time = '{$_POST['nw_begin_time']}',
|
||||
|
||||
@@ -6,9 +6,9 @@ auth_check($auth[$sub_menu], 'w');
|
||||
|
||||
check_admin_token();
|
||||
|
||||
$mb_id = strip_tags($_POST['mb_id']);
|
||||
$po_point = strip_tags($_POST['po_point']);
|
||||
$po_content = strip_tags($_POST['po_content']);
|
||||
$mb_id = strip_tags(clean_xss_attributes($_POST['mb_id']));
|
||||
$po_point = strip_tags(clean_xss_attributes($_POST['po_point']));
|
||||
$po_content = strip_tags(clean_xss_attributes($_POST['po_content']));
|
||||
$expire = preg_replace('/[^0-9]/', '', $_POST['po_expire_term']);
|
||||
|
||||
$mb = get_member($mb_id);
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ include_once('./admin.head.php');
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row"><label for="po_subject">투표 제목<strong class="sound_only">필수</strong></label></th>
|
||||
<td><input type="text" name="po_subject" value="<?php echo $po['po_subject'] ?>" id="po_subject" required class="required frm_input" size="80" maxlength="125"></td>
|
||||
<td><input type="text" name="po_subject" value="<?php echo get_sanitize_input($po['po_subject']); ?>" id="po_subject" required class="required frm_input" size="80" maxlength="125"></td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
|
||||
@@ -40,7 +40,7 @@ foreach( $_POST as $key=>$value ){
|
||||
if( empty($value) ) continue;
|
||||
|
||||
if( in_array($key, $check_keys) ) {
|
||||
$_POST[$key] = strip_tags($value);
|
||||
$_POST[$key] = strip_tags(clean_xss_attributes($value));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -133,7 +133,7 @@ if(!isset($qaconfig['qa_include_head'])) {
|
||||
<tr>
|
||||
<th scope="row"><label for="qa_title">타이틀<strong class="sound_only">필수</strong></label></th>
|
||||
<td>
|
||||
<input type="text" name="qa_title" value="<?php echo $qaconfig['qa_title'] ?>" id="qa_title" required class="required frm_input" size="40">
|
||||
<input type="text" name="qa_title" value="<?php echo get_sanitize_input($qaconfig['qa_title']); ?>" id="qa_title" required class="required frm_input" size="40">
|
||||
<a href="<?php echo G5_BBS_URL; ?>/qalist.php" class="btn_frmline">1:1문의 바로가기</a>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -141,7 +141,7 @@ if(!isset($qaconfig['qa_include_head'])) {
|
||||
<th scope="row"><label for="qa_category">분류<strong class="sound_only">필수</strong></label></th>
|
||||
<td>
|
||||
<?php echo help('분류와 분류 사이는 | 로 구분하세요. (예: 질문|답변) 첫자로 #은 입력하지 마세요. (예: #질문|#답변 [X])') ?>
|
||||
<input type="text" name="qa_category" value="<?php echo $qaconfig['qa_category'] ?>" id="qa_category" required class="required frm_input" size="70">
|
||||
<input type="text" name="qa_category" value="<?php echo get_sanitize_input($qaconfig['qa_category']); ?>" id="qa_category" required class="required frm_input" size="70">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -184,21 +184,21 @@ if(!isset($qaconfig['qa_include_head'])) {
|
||||
<th scope="row"><label for="qa_send_number">SMS 발신번호</label></th>
|
||||
<td>
|
||||
<?php echo help('SMS 알림 전송시 발신번호로 사용됩니다.'); ?>
|
||||
<input type="text" name="qa_send_number" value="<?php echo $qaconfig['qa_send_number'] ?>" id="qa_send_number" class="frm_input" size="30">
|
||||
<input type="text" name="qa_send_number" value="<?php echo get_sanitize_input($qaconfig['qa_send_number']); ?>" id="qa_send_number" class="frm_input" size="30">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="qa_admin_hp">관리자 휴대폰번호</label></th>
|
||||
<td>
|
||||
<?php echo help('관리자 휴대폰번호를 입력하시면 문의글 등록시 등록하신 번호로 SMS 알림이 전송됩니다.<br>SMS 알림을 사용하지 않으시면 알림이 전송되지 않습니다.'); ?>
|
||||
<input type="text" name="qa_admin_hp" value="<?php echo $qaconfig['qa_admin_hp'] ?>" id="qa_admin_hp" class="frm_input" size="30">
|
||||
<input type="text" name="qa_admin_hp" value="<?php echo get_sanitize_input($qaconfig['qa_admin_hp']); ?>" id="qa_admin_hp" class="frm_input" size="30">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="qa_admin_email">관리자 이메일</label></th>
|
||||
<td>
|
||||
<?php echo help('관리자 이메일을 입력하시면 문의글 등록시 등록하신 이메일로 알림이 전송됩니다.'); ?>
|
||||
<input type="text" name="qa_admin_email" value="<?php echo $qaconfig['qa_admin_email'] ?>" id="qa_admin_email" class="frm_input" size="50">
|
||||
<input type="text" name="qa_admin_email" value="<?php echo get_sanitize_input($qaconfig['qa_admin_email']); ?>" id="qa_admin_email" class="frm_input" size="50">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
@@ -12,6 +12,12 @@ $error_msg = '';
|
||||
|
||||
$qaconfig = get_qa_config();
|
||||
|
||||
$check_keys = array('qa_title', 'qa_category', 'qa_skin', 'qa_mobile_skin', 'qa_use_email', 'qa_req_email', 'qa_use_hp', 'qa_req_hp', 'qa_use_sms', 'qa_send_number', 'qa_admin_hp', 'qa_admin_email', 'qa_subject_len', 'qa_mobile_subject_len', 'qa_page_rows', 'qa_mobile_page_rows', 'qa_image_width', 'qa_upload_size');
|
||||
|
||||
foreach($check_keys as $key){
|
||||
$$key = $_POST[$key] = isset($_POST[$key]) ? strip_tags(clean_xss_attributes($_POST[$key])) : '';
|
||||
}
|
||||
|
||||
$qa_include_head = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($qa_include_head, 0, 255));
|
||||
$qa_include_tail = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($qa_include_tail, 0, 255));
|
||||
|
||||
@@ -50,7 +56,10 @@ if( $qa_include_tail && ! is_include_path_check($qa_include_tail, 1) ){
|
||||
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.';
|
||||
}
|
||||
|
||||
$_POST['qa_title'] = strip_tags($_POST['qa_title']);
|
||||
if( function_exists('filter_input_include_path') ){
|
||||
$qa_include_head = filter_input_include_path($qa_include_head);
|
||||
$qa_include_tail = filter_input_include_path($qa_include_tail);
|
||||
}
|
||||
|
||||
$sql = " update {$g5['qa_config_table']}
|
||||
set qa_title = '{$_POST['qa_title']}',
|
||||
|
||||
+38
-12
@@ -9,6 +9,14 @@ $g5['title'] = "SMS 기본설정";
|
||||
if (!$config['cf_icode_server_ip']) $config['cf_icode_server_ip'] = '211.172.232.124';
|
||||
if (!$config['cf_icode_server_port']) $config['cf_icode_server_port'] = '7295';
|
||||
|
||||
// 아이코드 토큰키 추가
|
||||
if( ! isset($config['cf_icode_token_key']) ){
|
||||
$sql = "ALTER TABLE `{$g5['config_table']}`
|
||||
ADD COLUMN `cf_icode_token_key` VARCHAR(100) NOT NULL DEFAULT '' AFTER `cf_icode_server_port`; ";
|
||||
sql_query($sql, false);
|
||||
$config['cf_icode_token_key'] = '';
|
||||
}
|
||||
|
||||
if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw'])
|
||||
{
|
||||
$userinfo = get_icode_userinfo($config['cf_icode_id'], $config['cf_icode_pw']);
|
||||
@@ -23,7 +31,7 @@ if (!$sms5['cf_skin'])
|
||||
include_once(G5_ADMIN_PATH.'/admin.head.php');
|
||||
|
||||
?>
|
||||
<?php if (!$config['cf_icode_pw']) { ?>
|
||||
<?php if (!($config['cf_icode_pw'] || $config['cf_icode_token_key'])) { ?>
|
||||
<div class="local_desc01 local_desc">
|
||||
<p>
|
||||
SMS 기능을 사용하시려면 먼저 아이코드에 서비스 신청을 하셔야 합니다.<br>
|
||||
@@ -47,22 +55,31 @@ if ($config['cf_sms_use'] == 'icode') { // 아이코드 사용
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row"><label for="cf_icode_id">아이코드 회원아이디<strong class="sound_only"> 필수</strong></label></th>
|
||||
<th scope="row"><label for="cf_sms_type">SMS 전송유형</label></th>
|
||||
<td>
|
||||
<?php echo help("전송유형을 SMS로 선택하시면 최대 80바이트까지 전송하실 수 있으며<br>LMS로 선택하시면 90바이트 이하는 SMS로, 그 이상은 ".G5_ICODE_LMS_MAX_LENGTH."바이트까지 LMS로 전송됩니다.<br>요금은 건당 SMS는 16원, LMS는 48원입니다."); ?>
|
||||
<select id="cf_sms_type" name="cf_sms_type">
|
||||
<option value="" <?php echo get_selected($config['cf_sms_type'], ''); ?>>SMS</option>
|
||||
<option value="LMS" <?php echo get_selected($config['cf_sms_type'], 'LMS'); ?>>LMS</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="icode_old_version">
|
||||
<th scope="row"><label for="cf_icode_id">아이코드 회원아이디<br>(구버전)<strong class="sound_only"> 필수</strong></label></th>
|
||||
<td>
|
||||
<?php echo help("아이코드에서 사용하시는 회원아이디를 입력합니다."); ?>
|
||||
<input type="text" name="cf_icode_id" value="<?php echo $config['cf_icode_id']; ?>" id="cf_icode_id" required class="frm_input required">
|
||||
<input type="text" name="cf_icode_id" value="<?php echo $config['cf_icode_id']; ?>" id="cf_icode_id" class="frm_input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="cf_icode_pw">아이코드 비밀번호<strong class="sound_only"> 필수</strong></label></th>
|
||||
<tr class="icode_old_version">
|
||||
<th scope="row"><label for="cf_icode_pw">아이코드 비밀번호<br>(구버전)<strong class="sound_only"> 필수</strong></label></th>
|
||||
<td>
|
||||
<?php echo help("아이코드에서 사용하시는 비밀번호를 입력합니다."); ?>
|
||||
<input type="password" name="cf_icode_pw" value="<?php echo $config['cf_icode_pw']; ?>" id="cf_icode_pw" required class="frm_input required">
|
||||
<?php if (!$config['cf_icode_pw']) { ?>현재 비밀번호가 입력되어 있지 않습니다.<?php } ?>
|
||||
<input type="password" name="cf_icode_pw" value="<?php echo $config['cf_icode_pw']; ?>" id="cf_icode_pw" class="frm_input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">요금제</th>
|
||||
<tr class="icode_old_version <?php if(!(isset($userinfo['payment']) && $userinfo['payment'])){ echo 'cf_tr_hide'; } ?>">
|
||||
<th scope="row">요금제<br>(구버전)</th>
|
||||
<td>
|
||||
<?php
|
||||
if ($userinfo['payment'] == 'A') {
|
||||
@@ -72,21 +89,30 @@ if ($config['cf_sms_use'] == 'icode') { // 아이코드 사용
|
||||
echo '정액제';
|
||||
echo '<input type="hidden" name="cf_icode_server_port" value="7296">';
|
||||
} else {
|
||||
echo '가입해주세요.';
|
||||
echo '<input type="hidden" name="cf_icode_server_port" value="7295">';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if ($userinfo['payment'] == 'A') { ?>
|
||||
<tr>
|
||||
<th scope="row">충전 잔액</th>
|
||||
<tr class="icode_old_version">
|
||||
<th scope="row">충전 잔액<br>(구버전)</th>
|
||||
<td>
|
||||
<?php echo number_format($userinfo['coin'])?> 원
|
||||
<a href="http://www.icodekorea.com/smsbiz/credit_card_amt.php?icode_id=<?php echo $config['cf_icode_id']; ?>&icode_passwd=<?php echo $config['cf_icode_pw']; ?>" target="_blank" class="btn_frmline">충전하기</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
<tr class="icode_json_version">
|
||||
<th scope="row"><label for="cf_icode_token_key">아이코드 토큰키<br>(JSON버전)</label></th>
|
||||
<td>
|
||||
<?php echo help("아이코드 JSON 버전의 경우 아이코드 토큰키를 입력시 실행됩니다.<br>SMS 전송유형을 LMS로 설정시 90바이트 이내는 SMS, 90 ~ 2000 바이트는 LMS 그 이상은 절삭 되어 LMS로 발송됩니다."); ?>
|
||||
<input type="text" name="cf_icode_token_key" value="<?php echo $config['cf_icode_token_key']; ?>" id="cf_icode_token_key" class="frm_input" size="40">
|
||||
<?php echo help("아이코드 사이트 -> 토큰키관리 메뉴에서 생성한 토큰키를 입력합니다."); ?>
|
||||
<br>
|
||||
서버아이피 : <?php echo $_SERVER['SERVER_ADDR']; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="cf_phone">회신번호<strong class="sound_only"> 필수</strong></label></th>
|
||||
<td>
|
||||
|
||||
@@ -15,6 +15,7 @@ if(!check_vaild_callback($cf_phone))
|
||||
alert('회신번호가 올바르지 않습니다.');
|
||||
|
||||
$userinfo = get_icode_userinfo($cf_icode_id, $cf_icode_pw);
|
||||
$cf_icode_server_port = isset($cf_icode_server_port) ? preg_replace('/[^0-9]/', '', $cf_icode_server_port) : '7295';
|
||||
|
||||
if ($userinfo['code'] == '202')
|
||||
alert('아이코드 아이디와 패스워드가 맞지 않습니다.');
|
||||
@@ -33,10 +34,12 @@ sql_query($sql);
|
||||
// 아이코드 설정
|
||||
$sql = " update {$g5['config_table']}
|
||||
set cf_sms_use = '$cf_sms_use',
|
||||
cf_sms_type = '$cf_sms_type',
|
||||
cf_icode_id = '$cf_icode_id',
|
||||
cf_icode_pw = '$cf_icode_pw',
|
||||
cf_icode_server_ip = '$cf_icode_server_ip',
|
||||
cf_icode_server_port = '$cf_icode_server_port' ";
|
||||
cf_icode_server_port = '$cf_icode_server_port',
|
||||
cf_icode_token_key = '$cf_icode_token_key'";
|
||||
sql_query($sql);
|
||||
|
||||
goto_url("./config.php");
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
.sms5_box {position:relative;padding:10px;border-radius:5px;background:#fbec99}
|
||||
.sms5_box .box_ico {position:absolute;top:20px;left:-7px;width:7px;height:13px;background:url('../img/box_ico.gif') no-repeat}
|
||||
.sms5_box .box_txt {border:0;background:transparent;word-break:break-all;resize:none;overflow:hidden}
|
||||
.sms5_box textarea.box_txt.is_overview{overflow:visible;min-height:130px}
|
||||
.sms5_box .box_square {width:100px;height:90px}
|
||||
|
||||
#write_wrap {z-index:9}
|
||||
|
||||
@@ -4,8 +4,8 @@ include_once("./_common.php");
|
||||
|
||||
auth_check($auth[$sub_menu], "w");
|
||||
|
||||
$fo_name = isset($fo_name) ? strip_tags($fo_name) : '';
|
||||
$fo_content = isset($fo_content) ? strip_tags($fo_content) : '';
|
||||
$fo_name = isset($fo_name) ? strip_tags(clean_xss_attributes($fo_name)) : '';
|
||||
$fo_content = isset($fo_content) ? strip_tags(clean_xss_attributes($fo_content)) : '';
|
||||
|
||||
$g5['title'] = "이모티콘 업데이트";
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ auth_check($auth[$sub_menu], "w");
|
||||
|
||||
$g5['title'] = "이모티콘 ";
|
||||
|
||||
$fg_no = isset($fg_no) ? (int) $fg_no : '';
|
||||
|
||||
if ($w == 'u' && is_numeric($fo_no)) {
|
||||
$write = sql_fetch("select * from {$g5['sms5_form_table']} where fo_no='$fo_no'");
|
||||
$g5['title'] .= '수정';
|
||||
@@ -48,7 +50,7 @@ include_once(G5_ADMIN_PATH.'/admin.head.php');
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="fo_name">제목<strong class="sound_only"> 필수</strong></label></th>
|
||||
<td><input type="text" name="fo_name" id="fo_name" required value="<?php echo $write['fo_name']?>" class="frm_input required" size="70"></td>
|
||||
<td><input type="text" name="fo_name" id="fo_name" required value="<?php echo get_sanitize_input($write['fo_name']); ?>" class="frm_input required" size="70"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">메세지</th>
|
||||
|
||||
@@ -224,8 +224,8 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
|
||||
?>
|
||||
<script>
|
||||
act = window.open('sms_ing.php', 'act', 'width=300, height=200');
|
||||
act.close();
|
||||
//act = window.open('sms_ing.php', 'act', 'width=300, height=200');
|
||||
//act.close();
|
||||
location.href = 'history_view.php?wr_no=<?php echo $wr_no?>&wr_renum=<?php echo $new_wr_renum?>';
|
||||
</script>
|
||||
<?php
|
||||
|
||||
@@ -60,8 +60,8 @@ function re_send()
|
||||
if (!confirm('전송에 실패한 SMS 를 재전송 하시겠습니까?'))
|
||||
return;
|
||||
|
||||
act = window.open('sms_ing.php', 'act', 'width=300, height=200');
|
||||
act.focus();
|
||||
//act = window.open('sms_ing.php', 'act', 'width=300, height=200');
|
||||
//act.focus();
|
||||
|
||||
location.href = './history_send.php?w=f&page=<?php echo $page?>&st=<?php echo $st?>&sv=<?php echo $sv?>&wr_no=<?php echo $wr_no?>&wr_renum=<?php echo $wr_renum?>';
|
||||
<?php } ?>
|
||||
@@ -104,7 +104,7 @@ function all_send()
|
||||
|
||||
<div id="con_sms" class="sms5_box">
|
||||
<span class="box_ico"></span>
|
||||
<textarea class="box_txt" readonly><?php echo $write['wr_message'];?></textarea>
|
||||
<textarea class="box_txt is_overview" readonly><?php echo $write['wr_message'];?></textarea>
|
||||
</div>
|
||||
|
||||
<?php if ($write['wr_re_total'] && !$wr_renum) { ?>
|
||||
|
||||
@@ -53,6 +53,7 @@ eval("\$file = \"$file\";");
|
||||
$f = explode(";", $file);
|
||||
for ($i=0; $i<count($f); $i++) {
|
||||
if (trim($f[$i]) == "") continue;
|
||||
$f[$i] = get_db_create_replace($f[$i]);
|
||||
sql_query($f[$i]) or die(mysqli_error());
|
||||
}
|
||||
// 테이블 생성 ------------------------------------
|
||||
|
||||
@@ -16,6 +16,8 @@ if ($page < 1) $page = 1;
|
||||
$bg_no = isset($bg_no) ? (int) $bg_no : 0;
|
||||
$st = isset($st) ? preg_replace('/[^a-z0-9]/i', '', $st) : '';
|
||||
|
||||
$sql_korean = $sql_group = $sql_search = $sql_no_hp = '';
|
||||
|
||||
if (is_numeric($bg_no))
|
||||
$sql_group = " and bg_no='$bg_no' ";
|
||||
else
|
||||
@@ -127,9 +129,9 @@ function no_hp_click(val)
|
||||
<label for="bg_no" class="sound_only">그룹명</label>
|
||||
<select name="bg_no" id="bg_no" onchange="location.href='<?php echo $_SERVER['SCRIPT_NAME']?>?bg_no='+this.value;">
|
||||
<option value=""<?php echo get_selected('', $bg_no); ?>> 전체 </option>
|
||||
<option value="<?php echo $no_group['bg_no']?>"<?php echo get_selected($bg_no, $no_group['bg_no']); ?>> <?php echo $no_group['bg_name']?> (<?php echo number_format($no_group['bg_count'])?> 명) </option>
|
||||
<option value="<?php echo $no_group['bg_no']?>"<?php echo get_selected($no_group['bg_no'], $bg_no); ?>> <?php echo $no_group['bg_name']?> (<?php echo number_format($no_group['bg_count'])?> 명) </option>
|
||||
<?php for($i=0; $i<count($group); $i++) {?>
|
||||
<option value="<?php echo $group[$i]['bg_no']?>"<?php echo get_selected($bg_no, $group[$i]['bg_no']);?>> <?php echo $group[$i]['bg_name']?> (<?php echo number_format($group[$i]['bg_count'])?> 명) </option>
|
||||
<option value="<?php echo $group[$i]['bg_no']?>"<?php echo get_selected($group[$i]['bg_no'], $bg_no);?>> <?php echo $group[$i]['bg_name']?> (<?php echo number_format($group[$i]['bg_count'])?> 명) </option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
<input type="checkbox" name="no_hp" id="no_hp" <?php echo $no_hp_checked?> onclick="no_hp_click(this.checked)">
|
||||
|
||||
@@ -129,7 +129,7 @@ function num_group_submit(f)
|
||||
<select name="select_bg_no_999" id="select_bg_no_999" onchange="move(<?php echo $no_group['bg_no']?>, '<?php echo $no_group['bg_name']?>', this);" >
|
||||
<option value=""></option>
|
||||
<?php for ($i=0; $i<count($group); $i++) { ?>
|
||||
<option value="<?php echo $group[$i]['bg_no']?>"> <?php echo $group[$i]['bg_name']?> </option>
|
||||
<option value="<?php echo $group[$i]['bg_no']?>"> <?php echo get_sanitize_input($group[$i]['bg_name']); ?> </option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</td>
|
||||
@@ -150,7 +150,7 @@ function num_group_submit(f)
|
||||
</td>
|
||||
<td>
|
||||
<label for="bg_name_<?php echo $i; ?>" class="sound_only">그룹명</label>
|
||||
<input type="text" name="bg_name[<?php echo $i; ?>]" value="<?php echo $group[$i]['bg_name']?>" id="bg_name_<?php echo $i; ?>" class="frm_input">
|
||||
<input type="text" name="bg_name[<?php echo $i; ?>]" value="<?php echo get_sanitize_input($group[$i]['bg_name']); ?>" id="bg_name_<?php echo $i; ?>" class="frm_input">
|
||||
</td>
|
||||
<td class="td_num"><?php echo number_format($group[$i]['bg_count'])?></td>
|
||||
<td class="td_num"><?php echo number_format($group[$i]['bg_member'])?></td>
|
||||
|
||||
@@ -11,7 +11,7 @@ if ($w == 'u') // 업데이트
|
||||
// 실제 번호를 넘김
|
||||
$k = $_POST['chk'][$i];
|
||||
$bg_no = (int) $_POST['bg_no'][$k];
|
||||
$bg_name = strip_tags($_POST['bg_name'][$k]);
|
||||
$bg_name = strip_tags(clean_xss_attributes($_POST['bg_name'][$k]));
|
||||
|
||||
if (!is_numeric($bg_no))
|
||||
alert('그룹 고유번호가 없습니다.');
|
||||
@@ -23,11 +23,11 @@ if ($w == 'u') // 업데이트
|
||||
if (!strlen(trim($bg_name)))
|
||||
alert('그룹명을 입력해주세요');
|
||||
|
||||
$res = sql_fetch("select bg_name from {$g5['sms5_book_group_table']} where bg_no<>'$bg_no' and bg_name='$bg_name'");
|
||||
$res = sql_fetch("select bg_name from {$g5['sms5_book_group_table']} where bg_no<>'$bg_no' and bg_name='".sql_real_escape_string($bg_name)."'");
|
||||
if ($res)
|
||||
alert('같은 그룹명이 존재합니다.');
|
||||
|
||||
sql_query("update {$g5['sms5_book_group_table']} set bg_name='".addslashes($bg_name)."' where bg_no='$bg_no'");
|
||||
sql_query("update {$g5['sms5_book_group_table']} set bg_name='".sql_real_escape_string($bg_name)."' where bg_no='$bg_no'");
|
||||
}
|
||||
}
|
||||
else if ($w == 'de') // 그룹삭제
|
||||
@@ -63,7 +63,7 @@ else if ($w == 'em') // 비우기
|
||||
}
|
||||
else // 등록
|
||||
{
|
||||
$bg_name = strip_tags($bg_name);
|
||||
$bg_name = strip_tags(clean_xss_attributes($bg_name));
|
||||
|
||||
if (!strlen(trim($bg_name)))
|
||||
alert('그룹명을 입력해주세요');
|
||||
@@ -72,7 +72,7 @@ else // 등록
|
||||
if ($res)
|
||||
alert('같은 그룹명이 존재합니다.');
|
||||
|
||||
sql_query("insert into {$g5['sms5_book_group_table']} set bg_name='".addslashes($bg_name)."'");
|
||||
sql_query("insert into {$g5['sms5_book_group_table']} set bg_name='$bg_name'");
|
||||
}
|
||||
|
||||
goto_url('./num_group.php');
|
||||
|
||||
@@ -149,7 +149,7 @@ CREATE TABLE `{$g5['sms5_write_table']}` (
|
||||
`wr_no` int(11) NOT NULL default '1',
|
||||
`wr_renum` int(11) NOT NULL default '0',
|
||||
`wr_reply` varchar(255) NOT NULL default '',
|
||||
`wr_message` varchar(255) NOT NULL default '',
|
||||
`wr_message` text NOT NULL,
|
||||
`wr_booking` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||
`wr_total` int(11) NOT NULL default '0',
|
||||
`wr_re_total` int(11) NOT NULL default '0',
|
||||
|
||||
@@ -266,8 +266,8 @@ function sms5_chk_send(f)
|
||||
|
||||
w = document.body.clientWidth/2 - 200;
|
||||
h = document.body.clientHeight/2 - 100;
|
||||
act = window.open('sms_ing.php', 'act', 'width=300, height=200, left=' + w + ', top=' + h);
|
||||
act.focus();
|
||||
//act = window.open('sms_ing.php', 'act', 'width=300, height=200, left=' + w + ', top=' + h);
|
||||
//act.focus();
|
||||
|
||||
f.send_list.value = list;
|
||||
return true;
|
||||
@@ -407,6 +407,7 @@ function byte_check(wr_message, sms_bytes)
|
||||
var conts = document.getElementById(wr_message);
|
||||
var bytes = document.getElementById(sms_bytes);
|
||||
var max_bytes = document.getElementById("sms_max_bytes");
|
||||
var lms_max_length = <?php echo G5_ICODE_LMS_MAX_LENGTH;?>
|
||||
|
||||
var i = 0;
|
||||
var cnt = 0;
|
||||
@@ -427,14 +428,14 @@ function byte_check(wr_message, sms_bytes)
|
||||
|
||||
<?php if($config['cf_sms_type'] == 'LMS') { ?>
|
||||
if(cnt > 90)
|
||||
max_bytes.innerHTML = 1500;
|
||||
max_bytes.innerHTML = lms_max_length;
|
||||
else
|
||||
max_bytes.innerHTML = 90;
|
||||
|
||||
if (cnt > 1500)
|
||||
if (cnt > lms_max_length)
|
||||
{
|
||||
exceed = cnt - 1500;
|
||||
alert('메시지 내용은 1500바이트를 넘을수 없습니다.\n\n작성하신 메세지 내용은 '+ exceed +'byte가 초과되었습니다.\n\n초과된 부분은 자동으로 삭제됩니다.');
|
||||
exceed = cnt - lms_max_length;
|
||||
alert('메시지 내용은 '+ lms_max_length +'바이트를 넘을수 없습니다.\n\n작성하신 메세지 내용은 '+ exceed +'byte가 초과되었습니다.\n\n초과된 부분은 자동으로 삭제됩니다.');
|
||||
var tcnt = 0;
|
||||
var xcnt = 0;
|
||||
var tmp = conts.value;
|
||||
@@ -447,7 +448,7 @@ function byte_check(wr_message, sms_bytes)
|
||||
tcnt += 1;
|
||||
}
|
||||
|
||||
if (tcnt > 1500) {
|
||||
if (tcnt > lms_max_length) {
|
||||
tmp = tmp.substring(0,i);
|
||||
break;
|
||||
} else {
|
||||
|
||||
@@ -7,6 +7,8 @@ while ($res = sql_fetch_array($qry)) array_push($group, $res);
|
||||
|
||||
$res = sql_fetch("select count(*) as cnt from `{$g5['sms5_form_table']}` where fg_no=0");
|
||||
$no_count = $res['cnt'];
|
||||
|
||||
$fg_no = isset($fg_no) ? (int) $fg_no : '';
|
||||
?>
|
||||
|
||||
<form name="emo_frm">
|
||||
|
||||
@@ -6,8 +6,24 @@ auth_check($auth[$sub_menu], "w");
|
||||
|
||||
check_admin_token();
|
||||
|
||||
$result = sql_query("describe `{$g5['sms5_write_table']}`");
|
||||
while ($row = sql_fetch_array($result)){
|
||||
if( $row['Field'] === 'wr_message' && $row['Type'] === 'varchar(255)' ){
|
||||
sql_query("ALTER TABLE `{$g5['sms5_write_table']}` MODIFY wr_message TEXT NOT NULL;", false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$g5['title'] = "문자전송중";
|
||||
|
||||
if ($config['cf_sms_use'] != 'icode') {
|
||||
alert('기본환경설정에서 icode sms 사용이 비활성화 되어 있습니다.');
|
||||
}
|
||||
|
||||
if ( ! (($config['cf_icode_id'] && $config['cf_icode_pw']) || $config['cf_icode_token_key']) ) {
|
||||
alert('아이코드 설정값이 존재하지 않습니다.');
|
||||
}
|
||||
|
||||
$wr_reply = preg_replace('#[^0-9\-]#', '', trim($wr_reply));
|
||||
$wr_message = clean_xss_tags(trim($wr_message));
|
||||
|
||||
@@ -94,12 +110,12 @@ while ($row = array_shift($send_list))
|
||||
$hp = get_hp($item[$i][1], 0);
|
||||
$name = $item[$i][0];
|
||||
|
||||
if(!$hp) continue;
|
||||
if(!$hp) continue 2;
|
||||
|
||||
if ($wr_overlap && array_overlap($hps, $hp)) {
|
||||
$overlap++;
|
||||
array_push( $duplicate_data['hp'], $row['bk_hp'] );
|
||||
continue;
|
||||
continue 2;
|
||||
}
|
||||
|
||||
array_push($list, array('bk_hp' => $hp, 'bk_name' => $name));
|
||||
@@ -111,12 +127,12 @@ while ($row = array_shift($send_list))
|
||||
$row = sql_fetch("select * from {$g5['sms5_book_table']} where bk_no='$item[$i]'");
|
||||
$row['bk_hp'] = get_hp($row['bk_hp'], 0);
|
||||
|
||||
if(!$row['bk_hp']) continue;
|
||||
if(!$row['bk_hp']) continue 2;
|
||||
|
||||
if ($wr_overlap && array_overlap($hps, $row['bk_hp'])) {
|
||||
$overlap++;
|
||||
array_push( $duplicate_data['hp'], $row['bk_hp'] );
|
||||
continue;
|
||||
continue 2;
|
||||
}
|
||||
array_push($list, $row);
|
||||
array_push($hps, $row['bk_hp']);
|
||||
@@ -141,14 +157,11 @@ if ($wr_by && $wr_bm && $wr_bd && $wr_bh && $wr_bi) {
|
||||
$booking = '';
|
||||
}
|
||||
|
||||
if ($config['cf_sms_use'] != 'icode') {
|
||||
alert('기본환경설정에서 icode sms 사용이 비활성화 되어 있습니다.');
|
||||
}
|
||||
|
||||
include_once(G5_ADMIN_PATH.'/admin.head.php');
|
||||
|
||||
$reply = str_replace('-', '', trim($wr_reply));
|
||||
$wr_message = conv_unescape_nl($wr_message);
|
||||
$db_wr_message = conv_unescape_nl($wr_message);
|
||||
$wr_message = conv_unescape_nl(stripslashes($wr_message));
|
||||
|
||||
$SMS = new SMS5;
|
||||
|
||||
@@ -186,7 +199,7 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
|
||||
if($result) {
|
||||
$result = $SMS->Send();
|
||||
|
||||
|
||||
if ($result) //SMS 서버에 접속했습니다.
|
||||
{
|
||||
foreach ($SMS->Result as $result)
|
||||
@@ -242,7 +255,7 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
}
|
||||
}
|
||||
|
||||
sql_query("insert into {$g5['sms5_write_table']} set wr_no='$wr_no', wr_renum=0, wr_reply='$wr_reply', wr_message='$wr_message', wr_success='$wr_success', wr_failure='$wr_failure', wr_memo='$str_serialize', wr_booking='$wr_booking', wr_total='$wr_total', wr_datetime='".G5_TIME_YMDHIS."'");
|
||||
sql_query("insert into {$g5['sms5_write_table']} set wr_no='$wr_no', wr_renum=0, wr_reply='$wr_reply', wr_message='$db_wr_message', wr_success='$wr_success', wr_failure='$wr_failure', wr_memo='$str_serialize', wr_booking='$wr_booking', wr_total='$wr_total', wr_datetime='".G5_TIME_YMDHIS."'");
|
||||
}
|
||||
} else {
|
||||
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
|
||||
@@ -260,7 +273,7 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
else
|
||||
$wr_no = 1;
|
||||
|
||||
sql_query("insert into {$g5['sms5_write_table']} set wr_no='$wr_no', wr_renum=0, wr_reply='$wr_reply', wr_message='$wr_message', wr_booking='$wr_booking', wr_total='$wr_total', wr_datetime='".G5_TIME_YMDHIS."'");
|
||||
sql_query("insert into {$g5['sms5_write_table']} set wr_no='$wr_no', wr_renum=0, wr_reply='$wr_reply', wr_message='$db_wr_message', wr_booking='$wr_booking', wr_total='$wr_total', wr_datetime='".G5_TIME_YMDHIS."'");
|
||||
|
||||
$wr_success = 0;
|
||||
$wr_failure = 0;
|
||||
@@ -324,11 +337,16 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
|
||||
function win_close_alert($msg) {
|
||||
|
||||
$html = "<script>
|
||||
act = window.open('sms_ing.php', 'act', 'width=300, height=200');
|
||||
act.close();
|
||||
alert('$msg');
|
||||
history.back();</script>";
|
||||
$html = "<script>".PHP_EOL;
|
||||
//$html .= "act = window.open('sms_ing.php', 'act', 'width=300, height=200');".PHP_EOL;
|
||||
//$html .= "act.close();".PHP_EOL;
|
||||
$html .= "alert('$msg');
|
||||
if ('referrer' in document) {
|
||||
window.location = document.referrer;
|
||||
} else {
|
||||
window.history.back();
|
||||
}
|
||||
</script>";
|
||||
|
||||
echo $html;
|
||||
exit;
|
||||
@@ -336,8 +354,8 @@ function win_close_alert($msg) {
|
||||
|
||||
?>
|
||||
<script>
|
||||
act = window.open('sms_ing.php', 'act', 'width=300, height=200');
|
||||
act.close();
|
||||
//act = window.open('sms_ing.php', 'act', 'width=300, height=200');
|
||||
//act.close();
|
||||
location.href = 'history_view.php?wr_no=<?php echo $wr_no?>';
|
||||
</script>
|
||||
<?php
|
||||
|
||||
@@ -29,7 +29,7 @@ if(!in_array($type, $arr_type)) {
|
||||
}
|
||||
|
||||
if($type == 'board') {
|
||||
$keys = array('bo_gallery_cols', 'bo_gallery_width', 'bo_gallery_height', 'bo_mobile_gallery_width', 'bo_mobile_gallery_height', 'bo_image_width');
|
||||
$keys = run_replace('theme_config_load_keys', array('bo_gallery_cols', 'bo_gallery_width', 'bo_gallery_height', 'bo_mobile_gallery_width', 'bo_mobile_gallery_height', 'bo_image_width'), $type);
|
||||
$tconfig = get_theme_config_value($config['cf_theme'], implode(',', $keys));
|
||||
|
||||
$i = 0;
|
||||
@@ -43,7 +43,7 @@ if($type == 'board') {
|
||||
if($i == 0)
|
||||
$data['error'] = '적용할 게시판 이미지 설정이 없습니다.';
|
||||
} else if($type == 'conf_skin') {
|
||||
$keys = array('cf_new_skin', 'cf_mobile_new_skin', 'cf_search_skin', 'cf_mobile_search_skin', 'cf_connect_skin', 'cf_mobile_connect_skin', 'cf_faq_skin', 'cf_mobile_faq_skin');
|
||||
$keys = run_replace('theme_config_load_keys', array('cf_new_skin', 'cf_mobile_new_skin', 'cf_search_skin', 'cf_mobile_search_skin', 'cf_connect_skin', 'cf_mobile_connect_skin', 'cf_faq_skin', 'cf_mobile_faq_skin'), $type);
|
||||
|
||||
$tconfig = get_theme_config_value($config['cf_theme'], implode(',', $keys));
|
||||
|
||||
@@ -58,7 +58,7 @@ if($type == 'board') {
|
||||
if($i == 0)
|
||||
$data['error'] = '적용할 기본환경 스킨 설정이 없습니다.';
|
||||
} else if($type == 'conf_member') {
|
||||
$keys = array('cf_member_skin', 'cf_mobile_member_skin');
|
||||
$keys = run_replace('theme_config_load_keys', array('cf_member_skin', 'cf_mobile_member_skin'), $type);
|
||||
|
||||
$tconfig = get_theme_config_value($config['cf_theme'], implode(',', $keys));
|
||||
|
||||
|
||||
@@ -68,5 +68,7 @@ if($_POST['set_default_skin'] == 1) {
|
||||
}
|
||||
}
|
||||
|
||||
run_event('adm_theme_update', $theme, $_POST['set_default_skin']);
|
||||
|
||||
die('');
|
||||
?>
|
||||
@@ -88,5 +88,5 @@ delete_cache_latest($bo_table);
|
||||
|
||||
run_event('bbs_delete_comment', $comment_id, $board);
|
||||
|
||||
goto_url(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$write['wr_parent'].'&page='.$page. $qstr);
|
||||
goto_url(short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$write['wr_parent'].'&page='.$page. $qstr));
|
||||
?>
|
||||
|
||||
@@ -83,6 +83,8 @@ if(isset($_POST['js']) && $_POST['js'] === "on") {
|
||||
$row = sql_fetch($sql);
|
||||
|
||||
$count = $row['count'];
|
||||
|
||||
run_event('bbs_increase_good_json', $bo_table, $wr_id, $good);
|
||||
|
||||
print_result($error, $count);
|
||||
}
|
||||
@@ -147,6 +149,8 @@ if(isset($_POST['js']) && $_POST['js'] === "on") {
|
||||
$status = '비추천';
|
||||
|
||||
$href = get_pretty_url($bo_table, $wr_id);
|
||||
|
||||
run_event('bbs_increase_good_html', $bo_table, $wr_id, $good, $href);
|
||||
|
||||
alert("이 글을 $status 하셨습니다.", '', false);
|
||||
}
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ $sql .= " order by bo_order ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$lt_style = "";
|
||||
if ($i%2==1) $lt_style = "margin-left:2%";
|
||||
if ($i%3 !== 0) $lt_style = "margin-left:2%";
|
||||
else $lt_style = "";
|
||||
?>
|
||||
<div style="float:left;<?php echo $lt_style ?>" class="lt_wr">
|
||||
|
||||
@@ -76,7 +76,8 @@ for ($i=0; $i<count($member_list['id']); $i++) {
|
||||
// 보내는 회원 쪽지 INSERT
|
||||
$sql = " insert into {$g5['memo_table']} ( me_recv_mb_id, me_send_mb_id, me_send_datetime, me_memo, me_read_datetime, me_send_id, me_type , me_send_ip ) values ( '$recv_mb_id', '{$member['mb_id']}', '".G5_TIME_YMDHIS."', '{$_POST['me_memo']}', '0000-00-00 00:00:00', '$me_id', 'send', '{$_SERVER['REMOTE_ADDR']}' ) ";
|
||||
sql_query($sql);
|
||||
|
||||
|
||||
$member_list['me_id'][$i] = $me_id;
|
||||
}
|
||||
|
||||
// 실시간 쪽지 알림 기능
|
||||
@@ -93,16 +94,14 @@ if ($member_list) {
|
||||
$redirect_url = G5_HTTP_BBS_URL."/memo.php?kind=send";
|
||||
$str_nick_list = implode(',', $member_list['nick']);
|
||||
|
||||
run_event('memo_form_update_after', $member_list, $str_nick_list, $redirect_url);
|
||||
run_event('memo_form_update_after', $member_list, $str_nick_list, $redirect_url, $_POST['me_memo']);
|
||||
|
||||
alert($str_nick_list." 님께 쪽지를 전달하였습니다.", $redirect_url, false);
|
||||
} else {
|
||||
|
||||
$redirect_url = G5_HTTP_BBS_URL."/memo_form.php";
|
||||
|
||||
run_event('memo_form_update_failed', $member_list, $redirect_url);
|
||||
|
||||
exit;
|
||||
run_event('memo_form_update_failed', $member_list, $redirect_url, $_POST['me_memo']);
|
||||
|
||||
alert("회원아이디 오류 같습니다.", $redirect_url, false);
|
||||
}
|
||||
|
||||
+6
-3
@@ -31,14 +31,17 @@ else
|
||||
alert($kind.' 값을 넘겨주세요.');
|
||||
}
|
||||
|
||||
$g5['title'] = $t.' 쪽지 보기';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$sql = " select * from {$g5['memo_table']}
|
||||
where me_id = '$me_id'
|
||||
and me_{$kind}_mb_id = '{$member['mb_id']}' ";
|
||||
$memo = sql_fetch($sql);
|
||||
|
||||
set_session('ss_memo_delete_token', $token = uniqid(time()));
|
||||
$del_link = 'memo_delete.php?me_id='.$memo['me_id'].'&token='.$token.'&kind='.$kind;
|
||||
|
||||
$g5['title'] = $t.' 쪽지 보기';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
// 이전 쪽지
|
||||
$sql = " select me.*, a.rownum from `{$g5['memo_table']}` as me inner join ( select me_id , (@rownum:=@rownum+1) as rownum from `{$g5['memo_table']}` as memo, (select @rownum:=0) tmp where me_{$kind}_mb_id = '{$member['mb_id']}' and memo.me_type = '$kind' order by me_id desc ) as a on a.me_id = me.me_id where me.me_id < '$me_id' and me.me_{$kind}_mb_id = '{$member['mb_id']}' and me.me_type = '$kind' order by me.me_id desc limit 1 ";
|
||||
|
||||
|
||||
@@ -192,6 +192,8 @@ while ($row = sql_fetch_array($result))
|
||||
|
||||
sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write + '$count_write' where bo_table = '$move_bo_table' ");
|
||||
sql_query(" update {$g5['board_table']} set bo_count_comment = bo_count_comment + '$count_comment' where bo_table = '$move_bo_table' ");
|
||||
|
||||
run_event('bbs_move_copy', $row2, $move_bo_table, $insert_id, $next_wr_num, $sw);
|
||||
|
||||
delete_cache_latest($move_bo_table);
|
||||
}
|
||||
|
||||
+7
-7
@@ -8,24 +8,25 @@ if ($is_admin != 'super')
|
||||
|
||||
$board = array();
|
||||
$save_bo_table = array();
|
||||
$save_wr_id = array();
|
||||
|
||||
for($i=0;$i<count($_POST['chk_bn_id']);$i++)
|
||||
{
|
||||
// 실제 번호를 넘김
|
||||
$k = $_POST['chk_bn_id'][$i];
|
||||
|
||||
$bo_table = $_POST['bo_table'][$k];
|
||||
$wr_id = $_POST['wr_id'][$k];
|
||||
$bo_table = isset($_POST['bo_table'][$k]) ? preg_replace('/[^a-z0-9_]/i', '', $_POST['bo_table'][$k]) : '';
|
||||
$wr_id = isset($_POST['wr_id'][$k]) ? preg_replace('/[^0-9]/i', '', $_POST['wr_id'][$k]) : 0;
|
||||
|
||||
$save_bo_table[] = $bo_table;
|
||||
$save_bo_table[$i] = $bo_table;
|
||||
$save_wr_id[$i] = $wr_id;
|
||||
|
||||
$write_table = $g5['write_prefix'].$bo_table;
|
||||
|
||||
if ($board['bo_table'] != $bo_table)
|
||||
$board = sql_fetch(" select bo_subject, bo_write_point, bo_comment_point, bo_notice from {$g5['board_table']} where bo_table = '$bo_table' ");
|
||||
|
||||
$sql = " select * from $write_table where wr_id = '$wr_id' ";
|
||||
$write = sql_fetch($sql);
|
||||
$write = get_write($write_table, $wr_id);
|
||||
if (!$write) continue;
|
||||
|
||||
// 원글 삭제
|
||||
@@ -138,12 +139,11 @@ for($i=0;$i<count($_POST['chk_bn_id']);$i++)
|
||||
}
|
||||
}
|
||||
|
||||
$save_bo_table = array_unique($save_bo_table);
|
||||
foreach ($save_bo_table as $key=>$value) {
|
||||
delete_cache_latest($value);
|
||||
}
|
||||
|
||||
run_event('bbs_new_delete', $chk_bn_id, $save_bo_table);
|
||||
run_event('bbs_new_delete', $chk_bn_id, $save_bo_table, $save_wr_id);
|
||||
|
||||
goto_url("new.php?sfl=$sfl&stx=$stx&page=$page");
|
||||
?>
|
||||
@@ -3,6 +3,10 @@ include_once('./_common.php');
|
||||
|
||||
$g5['title'] = '비밀번호 입력';
|
||||
|
||||
if( isset($comment_id) ){
|
||||
$comment_id = (int) $comment_id;
|
||||
}
|
||||
|
||||
switch ($w) {
|
||||
case 'u' :
|
||||
$action = G5_HTTP_BBS_URL.'/write.php';
|
||||
|
||||
@@ -14,6 +14,7 @@ $msg = array();
|
||||
|
||||
// 1:1문의 설정값
|
||||
$qaconfig = get_qa_config();
|
||||
$qa_id = isset($qa_id) ? (int) $qa_id : 0;
|
||||
|
||||
if(trim($qaconfig['qa_category'])) {
|
||||
if($w != 'a') {
|
||||
|
||||
+10
-1
@@ -12,10 +12,13 @@ set_session("ss_cert_no", "");
|
||||
set_session("ss_cert_hash", "");
|
||||
set_session("ss_cert_type", "");
|
||||
|
||||
$is_social_login_modify = false;
|
||||
|
||||
if( $provider && function_exists('social_nonce_is_valid') ){ //모바일로 소셜 연결을 했다면
|
||||
if( social_nonce_is_valid(get_session("social_link_token"), $provider) ){ //토큰값이 유효한지 체크
|
||||
$w = 'u'; //회원 수정으로 처리
|
||||
$_POST['mb_id'] = $member['mb_id'];
|
||||
$is_social_login_modify = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,8 +78,14 @@ if ($w == "") {
|
||||
// 수정 후 다시 이 폼으로 돌아오기 위해 임시로 저장해 놓음
|
||||
set_session("ss_tmp_password", $_POST[mb_password]);
|
||||
*/
|
||||
|
||||
if($_POST['mb_id'] && ! (isset($_POST['mb_password']) && $_POST['mb_password'])){
|
||||
if( ! $is_social_login_modify ){
|
||||
alert('비밀번호를 입력해 주세요.');
|
||||
}
|
||||
}
|
||||
|
||||
if ($_POST['mb_password']) {
|
||||
if (isset($_POST['mb_password'])) {
|
||||
// 수정된 정보를 업데이트후 되돌아 온것이라면 비밀번호가 암호화 된채로 넘어온것임
|
||||
if ($_POST['is_update']) {
|
||||
$tmp_password = $_POST['mb_password'];
|
||||
|
||||
@@ -119,6 +119,7 @@ else
|
||||
}
|
||||
|
||||
$comment_action_url = https_url(G5_BBS_DIR)."/write_comment_update.php";
|
||||
$comment_common_url = short_url_clean(G5_BBS_URL.'/board.php?'.clean_query_string($_SERVER['QUERY_STRING']));
|
||||
|
||||
include_once($board_skin_path.'/view_comment.skin.php');
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ if (substr_count($wr_content, "&#") > 50) {
|
||||
$w = $_POST["w"];
|
||||
$wr_name = trim($_POST['wr_name']);
|
||||
$wr_email = '';
|
||||
$reply_array = array();
|
||||
|
||||
if (!empty($_POST['wr_email']))
|
||||
$wr_email = get_email_address(trim($_POST['wr_email']));
|
||||
|
||||
@@ -85,9 +87,7 @@ if ($w == 'c') // 댓글 입력
|
||||
// 댓글 답변
|
||||
if ($comment_id)
|
||||
{
|
||||
$sql = " select wr_id, wr_parent, wr_comment, wr_comment_reply from $write_table
|
||||
where wr_id = '$comment_id' ";
|
||||
$reply_array = sql_fetch($sql);
|
||||
$reply_array = get_write($write_table, $comment_id, true);
|
||||
if (!$reply_array['wr_id'])
|
||||
alert('답변할 댓글이 없습니다.\\n\\n답변하는 동안 댓글이 삭제되었을 수 있습니다.');
|
||||
|
||||
@@ -341,7 +341,7 @@ delete_cache_latest($bo_table);
|
||||
|
||||
$redirect_url = short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr['wr_parent'].'&'.$qstr.'&#c_'.$comment_id);
|
||||
|
||||
run_event('comment_update_after', $board, $wr_id, $w, $qstr, $redirect_url);
|
||||
run_event('comment_update_after', $board, $wr_id, $w, $qstr, $redirect_url, $comment_id, $reply_array);
|
||||
|
||||
goto_url($redirect_url);
|
||||
?>
|
||||
|
||||
+37
-6
@@ -38,7 +38,7 @@ function g5_path()
|
||||
$server_script_filename = preg_replace('/\/+/', '/', str_replace('\\', '/', $_SERVER['SCRIPT_FILENAME']));
|
||||
$tilde_remove = preg_replace('/^\/\~[^\/]+(.*)$/', '$1', $server_script_name);
|
||||
$document_root = str_replace($tilde_remove, '', $server_script_filename);
|
||||
$pattern = '/' . preg_quote($document_root, '/') . '/i';
|
||||
$pattern = '/.*?' . preg_quote($document_root, '/') . '/i';
|
||||
$root = preg_replace($pattern, '', $result['path']);
|
||||
$port = ($_SERVER['SERVER_PORT'] == 80 || $_SERVER['SERVER_PORT'] == 443) ? '' : ':'.$_SERVER['SERVER_PORT'];
|
||||
$http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 's' : '') . '://';
|
||||
@@ -216,10 +216,6 @@ ini_set("session.gc_divisor", 100); // session.gc_divisor는 session.gc_probabil
|
||||
session_set_cookie_params(0, '/');
|
||||
ini_set("session.cookie_domain", G5_COOKIE_DOMAIN);
|
||||
|
||||
@session_start();
|
||||
//==============================================================================
|
||||
|
||||
|
||||
//==============================================================================
|
||||
// 공용 변수
|
||||
//------------------------------------------------------------------------------
|
||||
@@ -227,6 +223,41 @@ ini_set("session.cookie_domain", G5_COOKIE_DOMAIN);
|
||||
// 기본적으로 사용하는 필드만 얻은 후 상황에 따라 필드를 추가로 얻음
|
||||
$config = get_config();
|
||||
|
||||
// 본인인증 또는 쇼핑몰 사용시에만 secure; SameSite=None 로 설정합니다.
|
||||
if( $config['cf_cert_use'] || (defined('G5_YOUNGCART_VER') && G5_YOUNGCART_VER) ) {
|
||||
// Chrome 80 버전부터 아래 이슈 대응
|
||||
// https://developers-kr.googleblog.com/2020/01/developers-get-ready-for-new.html?fbclid=IwAR0wnJFGd6Fg9_WIbQPK3_FxSSpFLqDCr9bjicXdzy--CCLJhJgC9pJe5ss
|
||||
if(!function_exists('session_start_samesite')) {
|
||||
function session_start_samesite($options = array())
|
||||
{
|
||||
global $g5;
|
||||
|
||||
$res = @session_start($options);
|
||||
|
||||
// IE 브라우저 또는 엣지브라우저 일때는 secure; SameSite=None, http 환경에서는 설정하지 않습니다.
|
||||
if( preg_match('/Edge/i', $_SERVER['HTTP_USER_AGENT']) || preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || preg_match('~Trident/7.0(; Touch)?; rv:11.0~',$_SERVER['HTTP_USER_AGENT']) || ! (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ){
|
||||
return $res;
|
||||
}
|
||||
|
||||
$headers = headers_list();
|
||||
krsort($headers);
|
||||
foreach ($headers as $header) {
|
||||
if (!preg_match('~^Set-Cookie: PHPSESSID=~', $header)) continue;
|
||||
$header = preg_replace('~; secure(; HttpOnly)?$~', '', $header) . '; secure; SameSite=None';
|
||||
header($header, false);
|
||||
$g5['session_cookie_samesite'] = 'none';
|
||||
break;
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
||||
session_start_samesite();
|
||||
} else {
|
||||
@session_start();
|
||||
}
|
||||
//==============================================================================
|
||||
|
||||
define('G5_HTTP_BBS_URL', https_url(G5_BBS_DIR, false));
|
||||
define('G5_HTTPS_BBS_URL', https_url(G5_BBS_DIR, true));
|
||||
if ($config['cf_editor'])
|
||||
@@ -432,7 +463,7 @@ if ($bo_table) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($gr_id) {
|
||||
if ($gr_id && !is_array($gr_id)) {
|
||||
$group = get_group($gr_id);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
********************/
|
||||
|
||||
define('G5_VERSION', '그누보드5');
|
||||
define('G5_GNUBOARD_VER', '5.4.0.4');
|
||||
define('G5_GNUBOARD_VER', '5.4.2.4');
|
||||
|
||||
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
||||
define('_GNUBOARD_', true);
|
||||
|
||||
+4
-3
@@ -104,7 +104,8 @@ border:1px solid #558ab7 !important;
|
||||
/* 메인메뉴 */
|
||||
#gnb {position:relative;background:#fff}
|
||||
#gnb > h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#gnb .gnb_wrap {margin:0 auto;position:relative;z-index:3}
|
||||
#gnb .gnb_wrap {margin:0 auto;position:relative}
|
||||
#gnb .gnb_wrap:hover, #gnb .gnb_wrap:focus, #gnb .gnb_wrap:active{z-index:3}
|
||||
#gnb #gnb_1dul {font-size:1.083em;padding:0;border-bottom:1px solid #e0e2e5;zoom:1}
|
||||
#gnb ul:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#gnb .gnb_1dli {float:left;line-height:55px;padding:0px;position:relative}
|
||||
@@ -157,10 +158,10 @@ box-shadow:0 2px 5px rgba(0,0,0,0.2)}
|
||||
/* 중간 레이아웃 */
|
||||
#wrapper {}
|
||||
#container_wr:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#container_wr {z-index:2;margin:0 auto;height:100%;zoom:1}
|
||||
#container_wr {margin:0 auto;height:100%;zoom:1}
|
||||
#aside {float:right;width:235px;padding:0;height:100%;margin:20px 0 20px 20px}
|
||||
|
||||
#container {z-index:1;position:relative;float:left;min-height:500px;height:auto !important;margin:20px 0;height:500px;font-size:1em;width:930px;zoom:1}
|
||||
#container {position:relative;float:left;min-height:500px;height:auto !important;margin:20px 0;height:500px;font-size:1em;width:930px;zoom:1}
|
||||
#container:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#container_title {font-size:1.333em;margin:0 auto;font-weight:bold}
|
||||
#container_title span {margin:0 auto 10px;display:block;line-height:30px}
|
||||
|
||||
+1
-1
@@ -215,7 +215,7 @@ a.btn_b03, .btn_b03 {display:inline-block;line-height:28px;border:0;background:t
|
||||
a.btn_b03:hover, .btn_b03:hover {}
|
||||
a.btn_admin {display:inline-block;color:#d13f4a;font-size:1.4em;text-decoration:none;vertical-align:middle} /* 관리자 전용 버튼 */
|
||||
a.btn_admin:focus, a.btn_admin:hover {}
|
||||
.fix_btn {position:fixed;bottom:65px;right:15px;background:#3a8afd;width:50px;height:50px;color:#fff;text-align:center;border-radius:50% !important;font-size:1.8em;line-height:50px !important;-webkit-box-shadow:1px 2px 5px rgba(191, 191, 191, 0.4);
|
||||
.fix_btn {position:fixed;z-index:99;bottom:65px;right:15px;background:#3a8afd;width:50px;height:50px;color:#fff;text-align:center;border-radius:50% !important;font-size:1.8em;line-height:50px !important;-webkit-box-shadow:1px 2px 5px rgba(191, 191, 191, 0.4);
|
||||
-moz-box-shadow:1px 2px 5px rgba(191, 191, 191, 0.4);
|
||||
box-shadow:1px 2px 5px rgba(191, 191, 191, 0.4)}
|
||||
a.btn,.btn {line-height:35px;width:30px;height:35px;padding:0 5px;text-align:center;font-weight:bold;border:0;font-size:1.4em;
|
||||
|
||||
@@ -7,7 +7,7 @@ add_replace('invalid_password', 'g54_return_invalid_password', 10, 3);
|
||||
|
||||
function g54_return_invalid_password($bool, $type, $wr){
|
||||
if($type === 'write' && $bool === false && $wr['wr_password'] && isset($_POST['wr_password'])) {
|
||||
if(G5_STRING_ENCRYPT_FUNCTION === 'create_hash' && strlen($wr['wr_password']) === G5_MYSQL_PASSWORD_LENGTH) {
|
||||
if(G5_STRING_ENCRYPT_FUNCTION === 'create_hash' && (strlen($wr['wr_password']) === G5_MYSQL_PASSWORD_LENGTH || strlen($wr['wr_password']) === 16)) {
|
||||
if( sql_password($_POST['wr_password']) === $wr['wr_password'] ){
|
||||
$bool = true;
|
||||
}
|
||||
@@ -22,7 +22,7 @@ function g54_check_bbs_password($type, $wr, $qstr=''){
|
||||
|
||||
global $bo_table, $w;
|
||||
|
||||
if(G5_STRING_ENCRYPT_FUNCTION === 'create_hash' && strlen($wr['wr_password']) === G5_MYSQL_PASSWORD_LENGTH) {
|
||||
if(G5_STRING_ENCRYPT_FUNCTION === 'create_hash' && (strlen($wr['wr_password']) === G5_MYSQL_PASSWORD_LENGTH || strlen($wr['wr_password']) === 16)) {
|
||||
if( sql_password($_POST['wr_password']) === $wr['wr_password'] ){
|
||||
if ($w == 's') {
|
||||
$ss_name = 'ss_secret_'.$bo_table.'_'.$wr['wr_num'];
|
||||
|
||||
@@ -13,6 +13,12 @@ define('G5_SMS5_ADMIN_DIR', 'sms_admin');
|
||||
define('G5_SMS5_ADMIN_PATH', G5_ADMIN_PATH.'/'.G5_SMS5_ADMIN_DIR);
|
||||
define('G5_SMS5_ADMIN_URL', G5_ADMIN_URL.'/'.G5_SMS5_ADMIN_DIR);
|
||||
|
||||
define('ICODE_JSON_SOCKET_HOST', '211.172.232.124');
|
||||
define('ICODE_JSON_SOCKET_PORT', '9201');
|
||||
|
||||
define('G5_ICODE_LMS_MAX_LENGTH', 1500); // 구버전 LMS 최대길이
|
||||
define('G5_ICODE_JSON_MAX_LENGTH', 2000); // JSON 버전 LMS 최대길이
|
||||
|
||||
// SMS 테이블명
|
||||
$g5['sms5_prefix'] = 'sms5_';
|
||||
$g5['sms5_config_table'] = $g5['sms5_prefix'] . 'config';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
define('G5_JS_VER', '171222');
|
||||
define('G5_CSS_VER', '171222');
|
||||
define('G5_JS_VER', '191202');
|
||||
define('G5_CSS_VER', '191202');
|
||||
?>
|
||||
+1
-1
@@ -337,7 +337,7 @@ for($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
// 게시판 테이블 생성
|
||||
$bo_table = $row['bo_table'];
|
||||
$file = file(G5_ADMIN_PATH.'/sql_write.sql');
|
||||
$sql = implode($file, "\n");
|
||||
$sql = implode("\n", $file);
|
||||
|
||||
$create_table = $g5['write_prefix'] . $bo_table;
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
run_event('pre_head');
|
||||
|
||||
if(defined('G5_THEME_PATH')) {
|
||||
require_once(G5_THEME_PATH.'/head.php');
|
||||
return;
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
// 이 파일은 새로운 파일 생성시 반드시 포함되어야 함
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
run_event('head_sub');
|
||||
|
||||
// 테마 head.sub.php 파일
|
||||
if(!defined('G5_IS_ADMIN') && defined('G5_THEME_PATH') && is_file(G5_THEME_PATH.'/head.sub.php')) {
|
||||
require_once(G5_THEME_PATH.'/head.sub.php');
|
||||
|
||||
@@ -24,7 +24,9 @@ include_once(G5_PATH.'/head.php');
|
||||
// 이 함수가 바로 최신글을 추출하는 역할을 합니다.
|
||||
// 사용방법 : latest(스킨, 게시판아이디, 출력라인, 글자수);
|
||||
// 테마의 스킨을 사용하려면 theme/basic 과 같이 지정
|
||||
echo latest('pic_list', 'free', 4, 23);
|
||||
echo latest('pic_list', 'free', 4, 23); // 최소설치시 자동생성되는 자유게시판
|
||||
echo latest('pic_list', 'qa', 4, 23); // 최소설치시 자동생성되는 질문답변게시판
|
||||
echo latest('pic_list', 'notice', 4, 23); // 최소설치시 자동생성되는 공지사항게시판
|
||||
?>
|
||||
</div>
|
||||
<div class="latest_wr">
|
||||
@@ -33,7 +35,7 @@ include_once(G5_PATH.'/head.php');
|
||||
// 이 함수가 바로 최신글을 추출하는 역할을 합니다.
|
||||
// 사용방법 : latest(스킨, 게시판아이디, 출력라인, 글자수);
|
||||
// 테마의 스킨을 사용하려면 theme/basic 과 같이 지정
|
||||
echo latest('pic_block', 'gallery', 4, 23);
|
||||
echo latest('pic_block', 'gallery', 4, 23); // 최소설치시 자동생성되는 갤러리게시판
|
||||
?>
|
||||
<!-- } 사진 최신글2 끝 -->
|
||||
</div>
|
||||
|
||||
@@ -292,7 +292,7 @@ for ($i=0; $i<count($tmp_bo_table); $i++)
|
||||
// 게시판 테이블 생성
|
||||
$file = file("../".G5_ADMIN_DIR."/sql_write.sql");
|
||||
$file = get_db_create_replace($file);
|
||||
$sql = implode($file, "\n");
|
||||
$sql = implode("\n", $file);
|
||||
|
||||
$create_table = $table_prefix.'write_' . $tmp_bo_table[$i];
|
||||
|
||||
|
||||
@@ -0,0 +1,388 @@
|
||||
/* This is the core CSS of Tooltipster */
|
||||
|
||||
/* GENERAL STRUCTURE RULES (do not edit this section) */
|
||||
|
||||
.tooltipster-base {
|
||||
/* this ensures that a constrained height set by functionPosition,
|
||||
if greater that the natural height of the tooltip, will be enforced
|
||||
in browsers that support display:flex */
|
||||
display: flex;
|
||||
pointer-events: none;
|
||||
/* this may be overriden in JS for fixed position origins */
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.tooltipster-box {
|
||||
/* see .tooltipster-base. flex-shrink 1 is only necessary for IE10-
|
||||
and flex-basis auto for IE11- (at least) */
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.tooltipster-content {
|
||||
/* prevents an overflow if the user adds padding to the div */
|
||||
box-sizing: border-box;
|
||||
/* these make sure we'll be able to detect any overflow */
|
||||
max-height: 100%;
|
||||
max-width: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.tooltipster-ruler {
|
||||
/* these let us test the size of the tooltip without overflowing the window */
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
overflow: hidden;
|
||||
position: fixed;
|
||||
right: 0;
|
||||
top: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/* ANIMATIONS */
|
||||
|
||||
/* Open/close animations */
|
||||
|
||||
/* fade */
|
||||
|
||||
.tooltipster-fade {
|
||||
opacity: 0;
|
||||
-webkit-transition-property: opacity;
|
||||
-moz-transition-property: opacity;
|
||||
-o-transition-property: opacity;
|
||||
-ms-transition-property: opacity;
|
||||
transition-property: opacity;
|
||||
}
|
||||
.tooltipster-fade.tooltipster-show {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* grow */
|
||||
|
||||
.tooltipster-grow {
|
||||
-webkit-transform: scale(0,0);
|
||||
-moz-transform: scale(0,0);
|
||||
-o-transform: scale(0,0);
|
||||
-ms-transform: scale(0,0);
|
||||
transform: scale(0,0);
|
||||
-webkit-transition-property: -webkit-transform;
|
||||
-moz-transition-property: -moz-transform;
|
||||
-o-transition-property: -o-transform;
|
||||
-ms-transition-property: -ms-transform;
|
||||
transition-property: transform;
|
||||
-webkit-backface-visibility: hidden;
|
||||
}
|
||||
.tooltipster-grow.tooltipster-show {
|
||||
-webkit-transform: scale(1,1);
|
||||
-moz-transform: scale(1,1);
|
||||
-o-transform: scale(1,1);
|
||||
-ms-transform: scale(1,1);
|
||||
transform: scale(1,1);
|
||||
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
|
||||
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
-moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
-ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
-o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
}
|
||||
|
||||
/* swing */
|
||||
|
||||
.tooltipster-swing {
|
||||
opacity: 0;
|
||||
-webkit-transform: rotateZ(4deg);
|
||||
-moz-transform: rotateZ(4deg);
|
||||
-o-transform: rotateZ(4deg);
|
||||
-ms-transform: rotateZ(4deg);
|
||||
transform: rotateZ(4deg);
|
||||
-webkit-transition-property: -webkit-transform, opacity;
|
||||
-moz-transition-property: -moz-transform;
|
||||
-o-transition-property: -o-transform;
|
||||
-ms-transition-property: -ms-transform;
|
||||
transition-property: transform;
|
||||
}
|
||||
.tooltipster-swing.tooltipster-show {
|
||||
opacity: 1;
|
||||
-webkit-transform: rotateZ(0deg);
|
||||
-moz-transform: rotateZ(0deg);
|
||||
-o-transform: rotateZ(0deg);
|
||||
-ms-transform: rotateZ(0deg);
|
||||
transform: rotateZ(0deg);
|
||||
-webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 1);
|
||||
-webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
|
||||
-moz-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
|
||||
-ms-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
|
||||
-o-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
|
||||
transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
|
||||
}
|
||||
|
||||
/* fall */
|
||||
|
||||
.tooltipster-fall {
|
||||
-webkit-transition-property: top;
|
||||
-moz-transition-property: top;
|
||||
-o-transition-property: top;
|
||||
-ms-transition-property: top;
|
||||
transition-property: top;
|
||||
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
|
||||
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
-moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
-ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
-o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
}
|
||||
.tooltipster-fall.tooltipster-initial {
|
||||
top: 0 !important;
|
||||
}
|
||||
.tooltipster-fall.tooltipster-show {
|
||||
}
|
||||
.tooltipster-fall.tooltipster-dying {
|
||||
-webkit-transition-property: all;
|
||||
-moz-transition-property: all;
|
||||
-o-transition-property: all;
|
||||
-ms-transition-property: all;
|
||||
transition-property: all;
|
||||
top: 0 !important;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* slide */
|
||||
|
||||
.tooltipster-slide {
|
||||
-webkit-transition-property: left;
|
||||
-moz-transition-property: left;
|
||||
-o-transition-property: left;
|
||||
-ms-transition-property: left;
|
||||
transition-property: left;
|
||||
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
|
||||
-webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
-moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
-ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
-o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
|
||||
}
|
||||
.tooltipster-slide.tooltipster-initial {
|
||||
left: -40px !important;
|
||||
}
|
||||
.tooltipster-slide.tooltipster-show {
|
||||
}
|
||||
.tooltipster-slide.tooltipster-dying {
|
||||
-webkit-transition-property: all;
|
||||
-moz-transition-property: all;
|
||||
-o-transition-property: all;
|
||||
-ms-transition-property: all;
|
||||
transition-property: all;
|
||||
left: 0 !important;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* Update animations */
|
||||
|
||||
/* We use animations rather than transitions here because
|
||||
transition durations may be specified in the style tag due to
|
||||
animationDuration, and we try to avoid collisions and the use
|
||||
of !important */
|
||||
|
||||
/* fade */
|
||||
|
||||
@keyframes tooltipster-fading {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.tooltipster-update-fade {
|
||||
animation: tooltipster-fading 400ms;
|
||||
}
|
||||
|
||||
/* rotate */
|
||||
|
||||
@keyframes tooltipster-rotating {
|
||||
25% {
|
||||
transform: rotate(-2deg);
|
||||
}
|
||||
75% {
|
||||
transform: rotate(2deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(0);
|
||||
}
|
||||
}
|
||||
|
||||
.tooltipster-update-rotate {
|
||||
animation: tooltipster-rotating 600ms;
|
||||
}
|
||||
|
||||
/* scale */
|
||||
|
||||
@keyframes tooltipster-scaling {
|
||||
50% {
|
||||
transform: scale(1.1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
.tooltipster-update-scale {
|
||||
animation: tooltipster-scaling 600ms;
|
||||
}
|
||||
|
||||
/**
|
||||
* DEFAULT STYLE OF THE SIDETIP PLUGIN
|
||||
*
|
||||
* All styles are "namespaced" with .tooltipster-sidetip to prevent
|
||||
* conflicts between plugins.
|
||||
*/
|
||||
|
||||
/* .tooltipster-box */
|
||||
|
||||
.tooltipster-sidetip .tooltipster-box {
|
||||
background: #565656;
|
||||
border: 2px solid black;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-bottom .tooltipster-box {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-left .tooltipster-box {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-right .tooltipster-box {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-top .tooltipster-box {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
/* .tooltipster-content */
|
||||
|
||||
.tooltipster-sidetip .tooltipster-content {
|
||||
color: white;
|
||||
line-height: 18px;
|
||||
padding: 6px 14px;
|
||||
}
|
||||
|
||||
/* .tooltipster-arrow : will keep only the zone of .tooltipster-arrow-uncropped that
|
||||
corresponds to the arrow we want to display */
|
||||
|
||||
.tooltipster-sidetip .tooltipster-arrow {
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow {
|
||||
height: 10px;
|
||||
/* half the width, for centering */
|
||||
margin-left: -10px;
|
||||
top: 0;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-left .tooltipster-arrow {
|
||||
height: 20px;
|
||||
margin-top: -10px;
|
||||
right: 0;
|
||||
/* top 0 to keep the arrow from overflowing .tooltipster-base when it has not
|
||||
been positioned yet */
|
||||
top: 0;
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-right .tooltipster-arrow {
|
||||
height: 20px;
|
||||
margin-top: -10px;
|
||||
left: 0;
|
||||
/* same as .tooltipster-left .tooltipster-arrow */
|
||||
top: 0;
|
||||
width: 10px;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-top .tooltipster-arrow {
|
||||
bottom: 0;
|
||||
height: 10px;
|
||||
margin-left: -10px;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
/* common rules between .tooltipster-arrow-background and .tooltipster-arrow-border */
|
||||
|
||||
.tooltipster-sidetip .tooltipster-arrow-background, .tooltipster-sidetip .tooltipster-arrow-border {
|
||||
height: 0;
|
||||
position: absolute;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
/* .tooltipster-arrow-background */
|
||||
|
||||
.tooltipster-sidetip .tooltipster-arrow-background {
|
||||
border: 10px solid transparent;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background {
|
||||
border-bottom-color: #565656;
|
||||
left: 0;
|
||||
top: 3px;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background {
|
||||
border-left-color: #565656;
|
||||
left: -3px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background {
|
||||
border-right-color: #565656;
|
||||
left: 3px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background {
|
||||
border-top-color: #565656;
|
||||
left: 0;
|
||||
top: -3px;
|
||||
}
|
||||
|
||||
/* .tooltipster-arrow-border */
|
||||
|
||||
.tooltipster-sidetip .tooltipster-arrow-border {
|
||||
border: 10px solid transparent;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-border {
|
||||
border-bottom-color: black;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-border {
|
||||
border-left-color: black;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-border {
|
||||
border-right-color: black;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-border {
|
||||
border-top-color: black;
|
||||
}
|
||||
|
||||
/* tooltipster-arrow-uncropped */
|
||||
|
||||
.tooltipster-sidetip .tooltipster-arrow-uncropped {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-uncropped {
|
||||
top: -10px;
|
||||
}
|
||||
|
||||
.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-uncropped {
|
||||
left: -10px;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
+1
File diff suppressed because one or more lines are too long
+2
File diff suppressed because one or more lines are too long
@@ -67,8 +67,14 @@ class FileCache
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$data = unserialize(file_get_contents( $cache_file_path ));
|
||||
|
||||
try{
|
||||
$file_contents = file_get_contents($cache_file_path);
|
||||
$file_ex = explode("\n\n", $file_contents);
|
||||
$data = unserialize(base64_decode($file_ex[1]));
|
||||
} catch(Exception $e){
|
||||
$data = array('ttl'=>1, 'time'=>time() - 1000);
|
||||
}
|
||||
|
||||
if ($data['ttl'] > 0 && time() > $data['time'] + $data['ttl'])
|
||||
{
|
||||
@@ -135,7 +141,10 @@ class FileCache
|
||||
'data' => $data
|
||||
);
|
||||
|
||||
if ($this->write_file($cache_file_path, serialize($contents)))
|
||||
$cache_content = "<?php if (!defined('_GNUBOARD_')) exit; ?>\n\n";
|
||||
$cache_content .= base64_encode(serialize($contents));
|
||||
|
||||
if ($this->write_file($cache_file_path, $cache_content))
|
||||
{
|
||||
chmod($cache_file_path, G5_FILE_PERMISSION);
|
||||
return TRUE;
|
||||
@@ -167,7 +176,7 @@ class FileCache
|
||||
if ($ttl !== null) {
|
||||
$expire = time() + $ttl;
|
||||
}
|
||||
return serialize(array($data, $expire));
|
||||
return base64_encode(serialize(array($data, $expire)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -181,7 +190,7 @@ class FileCache
|
||||
*/
|
||||
public function decode($data)
|
||||
{
|
||||
return unserialize($data);
|
||||
return unserialize(base64_decode($data));
|
||||
}
|
||||
}
|
||||
?>
|
||||
+88
-11
@@ -116,6 +116,19 @@ function goto_url($url)
|
||||
// 세션변수 생성
|
||||
function set_session($session_name, $value)
|
||||
{
|
||||
global $g5;
|
||||
|
||||
static $check_cookie = null;
|
||||
|
||||
if( $check_cookie === null ){
|
||||
$cookie_session_name = session_name();
|
||||
if( ! isset($g5['session_cookie_samesite']) && ! ($cookie_session_name && isset($_COOKIE[$cookie_session_name]) && $_COOKIE[$cookie_session_name]) && ! headers_sent() ){
|
||||
@session_regenerate_id(false);
|
||||
}
|
||||
|
||||
$check_cookie = 1;
|
||||
}
|
||||
|
||||
if (PHP_VERSION < '5.3.0')
|
||||
session_register($session_name);
|
||||
// PHP 버전별 차이를 없애기 위한 방법
|
||||
@@ -733,6 +746,10 @@ function get_next_num($table)
|
||||
function get_group($gr_id, $is_cache=false)
|
||||
{
|
||||
global $g5;
|
||||
|
||||
if( is_array($gr_id) ){
|
||||
return array();
|
||||
}
|
||||
|
||||
static $cache = array();
|
||||
|
||||
@@ -1788,7 +1805,7 @@ function get_table_define($table, $crlf="\n")
|
||||
|
||||
$schema_create .= $crlf . ') ENGINE=MyISAM DEFAULT CHARSET=utf8';
|
||||
|
||||
return $schema_create;
|
||||
return get_db_create_replace($schema_create);
|
||||
} // end of the 'PMA_getTableDef()' function
|
||||
|
||||
|
||||
@@ -2461,7 +2478,7 @@ function add_stylesheet($stylesheet, $order=0)
|
||||
{
|
||||
global $html_process;
|
||||
|
||||
if(trim($stylesheet))
|
||||
if(trim($stylesheet) && method_exists($html_process, 'merge_stylesheet') )
|
||||
$html_process->merge_stylesheet($stylesheet, $order);
|
||||
}
|
||||
|
||||
@@ -2469,7 +2486,7 @@ function add_javascript($javascript, $order=0)
|
||||
{
|
||||
global $html_process;
|
||||
|
||||
if(trim($javascript))
|
||||
if(trim($javascript) && method_exists($html_process, 'merge_javascript') )
|
||||
$html_process->merge_javascript($javascript, $order);
|
||||
}
|
||||
|
||||
@@ -2581,7 +2598,7 @@ class html_process {
|
||||
if(!trim($js[1]))
|
||||
continue;
|
||||
|
||||
$js[1] = preg_replace('#\.js([\'\"]?>)$#i', '.js?ver='.G5_JS_VER.'$1', $js[1]);
|
||||
$js[1] = preg_replace('#\.js([\'\"]?>)<\/script>$#i', '.js?ver='.G5_JS_VER.'$1</script>', $js[1]);
|
||||
|
||||
$javascript .= $php_eol.$js[1];
|
||||
$php_eol = PHP_EOL;
|
||||
@@ -3009,6 +3026,9 @@ function clean_xss_tags($str, $check_entities=0)
|
||||
if( $check_entities ){
|
||||
$result = str_replace(array(':', '(', ')', '
', '	'), '', $result);
|
||||
}
|
||||
|
||||
$result = preg_replace('#([^\p{L}]|^)(?:javascript|jar|applescript|vbscript|vbs|wscript|jscript|behavior|mocha|livescript|view-source)\s*:(?:.*?([/\\\;()\'">]|$))#ius',
|
||||
'$1$2', $result);
|
||||
|
||||
if((string)$result === (string)$str) break;
|
||||
|
||||
@@ -3022,7 +3042,30 @@ function clean_xss_tags($str, $check_entities=0)
|
||||
// XSS 어트리뷰트 태그 제거
|
||||
function clean_xss_attributes($str)
|
||||
{
|
||||
$str = preg_replace('#(onabort|onactivate|onafterprint|onafterupdate|onbeforeactivate|onbeforecopy|onbeforecut|onbeforedeactivate|onbeforeeditfocus|onbeforepaste|onbeforeprint|onbeforeunload|onbeforeupdate|onblur|onbounce|oncellchange|onchange|onclick|oncontextmenu|oncontrolselect|oncopy|oncut|ondataavaible|ondatasetchanged|ondatasetcomplete|ondblclick|ondeactivate|ondrag|ondragdrop|ondragend|ondragenter|ondragleave|ondragover|ondragstart|ondrop|onerror|onerrorupdate|onfilterupdate|onfinish|onfocus|onfocusin|onfocusout|onhelp|onkeydown|onkeypress|onkeyup|onlayoutcomplete|onload|onlosecapture|onmousedown|onmouseenter|onmouseleave|onmousemove|onmoveout|onmouseover|onmouseup|onmousewheel|onmove|onmoveend|onmovestart|onpaste|onpropertychange|onreadystatechange|onreset|onresize|onresizeend|onresizestart|onrowexit|onrowsdelete|onrowsinserted|onscroll|onselect|onselectionchange|onselectstart|onstart|onstop|onsubmit|onunload)\\s*=\\s*\\\?".*?"#is', '', $str);
|
||||
$xss_attributes_string = 'onAbort|onActivate|onAttribute|onAfterPrint|onAfterScriptExecute|onAfterUpdate|onAnimationCancel|onAnimationEnd|onAnimationIteration|onAnimationStart|onAriaRequest|onAutoComplete|onAutoCompleteError|onAuxClick|onBeforeActivate|onBeforeCopy|onBeforeCut|onBeforeDeactivate|onBeforeEditFocus|onBeforePaste|onBeforePrint|onBeforeScriptExecute|onBeforeUnload|onBeforeUpdate|onBegin|onBlur|onBounce|onCancel|onCanPlay|onCanPlayThrough|onCellChange|onChange|onClick|onClose|onCommand|onCompassNeedsCalibration|onContextMenu|onControlSelect|onCopy|onCueChange|onCut|onDataAvailable|onDataSetChanged|onDataSetComplete|onDblClick|onDeactivate|onDeviceLight|onDeviceMotion|onDeviceOrientation|onDeviceProximity|onDrag|onDragDrop|onDragEnd|onDragEnter|onDragLeave|onDragOver|onDragStart|onDrop|onDurationChange|onEmptied|onEnd|onEnded|onError|onErrorUpdate|onExit|onFilterChange|onFinish|onFocus|onFocusIn|onFocusOut|onFormChange|onFormInput|onFullScreenChange|onFullScreenError|onGotPointerCapture|onHashChange|onHelp|onInput|onInvalid|onKeyDown|onKeyPress|onKeyUp|onLanguageChange|onLayoutComplete|onLoad|onLoadedData|onLoadedMetaData|onLoadStart|onLoseCapture|onLostPointerCapture|onMediaComplete|onMediaError|onMessage|onMouseDown|onMouseEnter|onMouseLeave|onMouseMove|onMouseOut|onMouseOver|onMouseUp|onMouseWheel|onMove|onMoveEnd|onMoveStart|onMozFullScreenChange|onMozFullScreenError|onMozPointerLockChange|onMozPointerLockError|onMsContentZoom|onMsFullScreenChange|onMsFullScreenError|onMsGestureChange|onMsGestureDoubleTap|onMsGestureEnd|onMsGestureHold|onMsGestureStart|onMsGestureTap|onMsGotPointerCapture|onMsInertiaStart|onMsLostPointerCapture|onMsManipulationStateChanged|onMsPointerCancel|onMsPointerDown|onMsPointerEnter|onMsPointerLeave|onMsPointerMove|onMsPointerOut|onMsPointerOver|onMsPointerUp|onMsSiteModeJumpListItemRemoved|onMsThumbnailClick|onOffline|onOnline|onOutOfSync|onPage|onPageHide|onPageShow|onPaste|onPause|onPlay|onPlaying|onPointerCancel|onPointerDown|onPointerEnter|onPointerLeave|onPointerLockChange|onPointerLockError|onPointerMove|onPointerOut|onPointerOver|onPointerUp|onPopState|onProgress|onPropertyChange|onqt_error|onRateChange|onReadyStateChange|onReceived|onRepeat|onReset|onResize|onResizeEnd|onResizeStart|onResume|onReverse|onRowDelete|onRowEnter|onRowExit|onRowInserted|onRowsDelete|onRowsEnter|onRowsExit|onRowsInserted|onScroll|onSearch|onSeek|onSeeked|onSeeking|onSelect|onSelectionChange|onSelectStart|onStalled|onStorage|onStorageCommit|onStart|onStop|onShow|onSyncRestored|onSubmit|onSuspend|onSynchRestored|onTimeError|onTimeUpdate|onTimer|onTrackChange|onTransitionEnd|onToggle|onTouchCancel|onTouchEnd|onTouchLeave|onTouchMove|onTouchStart|onTransitionCancel|onTransitionEnd|onUnload|onURLFlip|onUserProximity|onVolumeChange|onWaiting|onWebKitAnimationEnd|onWebKitAnimationIteration|onWebKitAnimationStart|onWebKitFullScreenChange|onWebKitFullScreenError|onWebKitTransitionEnd|onWheel';
|
||||
|
||||
do {
|
||||
$count = $temp_count = 0;
|
||||
|
||||
$str = preg_replace(
|
||||
'/(.*)(?:' . $xss_attributes_string . ')(?:\s*=\s*)(?:\'(?:.*?)\'|"(?:.*?)")(.*)/ius',
|
||||
'$1-$2-$3-$4',
|
||||
$str,
|
||||
-1,
|
||||
$temp_count
|
||||
);
|
||||
$count += $temp_count;
|
||||
|
||||
$str = preg_replace(
|
||||
'/(.*)(?:' . $xss_attributes_string . ')\s*=\s*(?:[^\s>]*)(.*)/ius',
|
||||
'$1$2',
|
||||
$str,
|
||||
-1,
|
||||
$temp_count
|
||||
);
|
||||
$count += $temp_count;
|
||||
|
||||
} while ($count);
|
||||
|
||||
return $str;
|
||||
}
|
||||
@@ -3184,7 +3227,7 @@ function login_password_check($mb, $pass, $hash)
|
||||
if(!$mb_id)
|
||||
return false;
|
||||
|
||||
if(G5_STRING_ENCRYPT_FUNCTION === 'create_hash' && strlen($hash) === G5_MYSQL_PASSWORD_LENGTH) {
|
||||
if(G5_STRING_ENCRYPT_FUNCTION === 'create_hash' && (strlen($hash) === G5_MYSQL_PASSWORD_LENGTH || strlen($hash) === 16)) {
|
||||
if( sql_password($pass) === $hash ){
|
||||
|
||||
if( ! isset($mb['mb_password2']) ){
|
||||
@@ -3548,7 +3591,7 @@ function get_member_profile_img($mb_id='', $width='', $height='', $alt='profile_
|
||||
// 프로필 이미지가 없을때 기본 이미지
|
||||
$no_profile_img = (defined('G5_THEME_NO_PROFILE_IMG') && G5_THEME_NO_PROFILE_IMG) ? G5_THEME_NO_PROFILE_IMG : G5_NO_PROFILE_IMG;
|
||||
$tmp = array();
|
||||
preg_match( '/src="([^"]*)"/i', $foo, $tmp );
|
||||
preg_match( '/src="([^"]*)"/i', $no_profile_img, $tmp );
|
||||
$no_profile_cache = $src = isset($tmp[1]) ? $tmp[1] : G5_IMG_URL.'/no_profile.gif';
|
||||
}
|
||||
}
|
||||
@@ -3580,6 +3623,36 @@ function get_head_title($title){
|
||||
return $title;
|
||||
}
|
||||
|
||||
function is_sms_send($is_type=''){
|
||||
global $config;
|
||||
|
||||
$is_sms_send = false;
|
||||
|
||||
// 토큰키를 사용한다면
|
||||
if(isset($config['cf_icode_token_key']) && $config['cf_icode_token_key']){
|
||||
$is_sms_send = true;
|
||||
} else if($config['cf_icode_id'] && $config['cf_icode_pw']) {
|
||||
// 충전식일 경우 잔액이 있는지 체크
|
||||
|
||||
$userinfo = get_icode_userinfo($config['cf_icode_id'], $config['cf_icode_pw']);
|
||||
|
||||
if($userinfo['code'] == 0) {
|
||||
if($userinfo['payment'] == 'C') { // 정액제
|
||||
$is_sms_send = true;
|
||||
} else {
|
||||
$minimum_coin = 100;
|
||||
if(defined('G5_ICODE_COIN'))
|
||||
$minimum_coin = intval(G5_ICODE_COIN);
|
||||
|
||||
if((int)$userinfo['coin'] >= $minimum_coin)
|
||||
$is_sms_send = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $is_sms_send;
|
||||
}
|
||||
|
||||
function is_use_email_certify(){
|
||||
global $config;
|
||||
|
||||
@@ -3659,10 +3732,10 @@ function is_include_path_check($path='', $is_input='')
|
||||
// 장태진 @jtjisgod <jtjisgod@gmail.com> 추가
|
||||
// 보안 목적 : rar wrapper 차단
|
||||
|
||||
if( stripos($path, 'rar:') !== false || stripos($path, 'php:') !== false || stripos($path, 'zlib:') !== false || stripos($path, 'bzip2:') !== false || stripos($path, 'zip:') !== false || stripos($path, 'data:') !== false || stripos($path, 'phar:') !== false || stripos($path, 'file:') !== false ){
|
||||
if( stripos($path, 'rar:') !== false || stripos($path, 'php:') !== false || stripos($path, 'zlib:') !== false || stripos($path, 'bzip2:') !== false || stripos($path, 'zip:') !== false || stripos($path, 'data:') !== false || stripos($path, 'phar:') !== false || stripos($path, 'file:') !== false || stripos($path, '://') !== false ){
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$replace_path = str_replace('\\', '/', $path);
|
||||
$slash_count = substr_count(str_replace('\\', '/', $_SERVER['SCRIPT_NAME']), '/');
|
||||
$peer_count = substr_count($replace_path, '../');
|
||||
@@ -3673,12 +3746,12 @@ function is_include_path_check($path='', $is_input='')
|
||||
|
||||
try {
|
||||
// whether $path is unix or not
|
||||
$unipath = strlen($path)==0 || $path{0}!='/';
|
||||
$unipath = strlen($path)==0 || substr($path, 0, 1) != '/';
|
||||
$unc = substr($path,0,2)=='\\\\'?true:false;
|
||||
// attempts to detect if path is relative in which case, add cwd
|
||||
if(strpos($path,':') === false && $unipath && !$unc){
|
||||
$path=getcwd().DIRECTORY_SEPARATOR.$path;
|
||||
if($path{0}=='/'){
|
||||
if(substr($path, 0, 1) == '/'){
|
||||
$unipath = false;
|
||||
}
|
||||
}
|
||||
@@ -3731,6 +3804,10 @@ function is_include_path_check($path='', $is_input='')
|
||||
return true;
|
||||
}
|
||||
|
||||
function filter_input_include_path($path){
|
||||
return str_replace('//', '/', $path);
|
||||
}
|
||||
|
||||
function option_array_checked($option, $arr=array()){
|
||||
$checked = '';
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@ function get_board_names(){
|
||||
global $g5;
|
||||
|
||||
static $boards = array();
|
||||
|
||||
$boards = run_replace('get_board_names_cache', $boards);
|
||||
|
||||
if( ! $boards ){
|
||||
$sql = " select bo_table from {$g5['board_table']} ";
|
||||
@@ -112,6 +114,9 @@ function get_menu_db($use_mobile=0, $is_cache=false){
|
||||
$result = sql_query($sql, false);
|
||||
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
|
||||
$row['ori_me_link'] = $row['me_link'];
|
||||
$row['me_link'] = short_url_clean($row['me_link']);
|
||||
$cache[$key][$i] = $row;
|
||||
|
||||
$sql2 = " select *
|
||||
@@ -122,6 +127,8 @@ function get_menu_db($use_mobile=0, $is_cache=false){
|
||||
order by me_order, me_id ";
|
||||
$result2 = sql_query($sql2);
|
||||
for ($k=0; $row2=sql_fetch_array($result2); $k++) {
|
||||
$row2['ori_me_link'] = $row2['me_link'];
|
||||
$row2['me_link'] = short_url_clean($row2['me_link']);
|
||||
$cache[$key][$i]['sub'][$k] = $row2;
|
||||
}
|
||||
}
|
||||
@@ -322,7 +329,7 @@ function get_db_create_replace($sql_str){
|
||||
function get_class_encrypt(){
|
||||
static $cache;
|
||||
|
||||
if( $cache && is_object($obj) ){
|
||||
if( $cache && is_object($cache) ){
|
||||
return $cache;
|
||||
}
|
||||
|
||||
|
||||
+163
-51
@@ -4,12 +4,19 @@ if (!defined('_GNUBOARD_')) exit;
|
||||
// 요금제에 따른 port 구분
|
||||
function get_icode_port_type($id, $pw)
|
||||
{
|
||||
global $config;
|
||||
|
||||
// 토큰키를 사용한다면 true 로 리턴
|
||||
if( isset($config['cf_icode_token_key']) && $config['cf_icode_token_key'] ){
|
||||
return 1;
|
||||
}
|
||||
|
||||
$userinfo = get_icode_userinfo($id, $pw);
|
||||
|
||||
if($userinfo['payment'] == 'A') { // 충전제
|
||||
return 1;
|
||||
} else if($userinfo['payment'] == 'C') { // 정액제
|
||||
return 1;
|
||||
return 2;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -28,10 +35,21 @@ class LMS {
|
||||
var $socket_portcode;
|
||||
var $Data = array();
|
||||
var $Result = array();
|
||||
var $icode_key;
|
||||
|
||||
// SMS 서버 접속
|
||||
function SMS_con($host, $id, $pw, $portcode) {
|
||||
$this->socket_host = $host;
|
||||
global $config;
|
||||
|
||||
// 토큰키를 사용한다면
|
||||
if(isset($config['cf_icode_token_key']) && $config['cf_icode_token_key']){
|
||||
$this->icode_key = $config['cf_icode_token_key'];
|
||||
$this->socket_host = ICODE_JSON_SOCKET_HOST;
|
||||
$this->socket_port = ICODE_JSON_SOCKET_PORT;
|
||||
} else {
|
||||
$this->socket_host = $host;
|
||||
}
|
||||
|
||||
$this->socket_portcode = $portcode;
|
||||
$this->icode_id = FillSpace($id, 10);
|
||||
$this->icode_pw = FillSpace($pw, 10);
|
||||
@@ -43,32 +61,63 @@ class LMS {
|
||||
}
|
||||
|
||||
function Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate="", $nCount) {
|
||||
global $config;
|
||||
|
||||
// 문자 타입별 Port 설정.
|
||||
$sendType = strlen($strData) > 90 ? 1 : 0; // 0: SMS / 1: LMS
|
||||
|
||||
/* 개발 완료 후 아래 포트를 rand 함수를 이용하는 라인으로 변경 바랍니다.*/
|
||||
// 토큰키를 사용한다면
|
||||
if( isset($config['cf_icode_token_key']) && $config['cf_icode_token_key'] === $this->icode_key ){
|
||||
|
||||
// 개행치환
|
||||
$strData = preg_replace("/\r\n/","\n",$strData);
|
||||
$strData = preg_replace("/\r/","\n",$strData);
|
||||
|
||||
// 충전식
|
||||
if ($this->socket_portcode == 1) {
|
||||
if($sendType && $sendType == 1) {
|
||||
//$this->socket_port = 8200; // LMS
|
||||
$this->socket_port=(int)rand(8200,8201); // LMS
|
||||
} else {
|
||||
//$this->socket_port = 6295; // SMS
|
||||
$this->socket_port=(int)rand(6295,6297); // SMS
|
||||
}
|
||||
}
|
||||
// 정액제
|
||||
else {
|
||||
if($sendType && $sendType == 1) {
|
||||
//$this->socket_port = 8300; // LMS
|
||||
$this->socket_port=(int)rand(8300,8301); // LMS
|
||||
} else {
|
||||
//$this->socket_port = 6291; // SMS
|
||||
$this->socket_port=(int)rand(6291,6293); // SMS
|
||||
}
|
||||
}
|
||||
$checks = array('msg'=>$strData, 'subject'=>$strSubject);
|
||||
$tmps = array();
|
||||
|
||||
foreach( $checks as $k=>$v ){
|
||||
|
||||
// 문자 내용이 euc-kr 인지 체크합니다.
|
||||
$enc = mb_detect_encoding($v, array('EUC-KR', 'UTF-8'));
|
||||
|
||||
// 문자 내용이 euc-kr 이면 json_encode 에서 깨지기 때문에 utf-8 로 변환합니다.
|
||||
$tmps[$k] = ($enc === 'EUC-KR') ? iconv_utf8($v) : $v;
|
||||
}
|
||||
|
||||
$strData = $tmps['msg'];
|
||||
$strSubject = $tmps['subject'];
|
||||
|
||||
// 문자 타입별 Port 설정.
|
||||
$sendType = strlen($strData)>90 ? 1 : 0; // 0: SMS / 1: LMS
|
||||
if($sendType==0) $strSubject = "";
|
||||
|
||||
$is_use_json = true;
|
||||
|
||||
} else {
|
||||
/* 개발 완료 후 아래 포트를 rand 함수를 이용하는 라인으로 변경 바랍니다.*/
|
||||
|
||||
// 충전식
|
||||
if ($this->socket_portcode == 1) {
|
||||
if($sendType && $sendType == 1) {
|
||||
//$this->socket_port = 8200; // LMS
|
||||
$this->socket_port=(int)rand(8200,8201); // LMS
|
||||
} else {
|
||||
//$this->socket_port = 6295; // SMS
|
||||
$this->socket_port=(int)rand(6295,6297); // SMS
|
||||
}
|
||||
}
|
||||
// 정액제
|
||||
else {
|
||||
if($sendType && $sendType == 1) {
|
||||
//$this->socket_port = 8300; // LMS
|
||||
$this->socket_port=(int)rand(8300,8301); // LMS
|
||||
} else {
|
||||
//$this->socket_port = 6291; // SMS
|
||||
$this->socket_port=(int)rand(6291,6293); // SMS
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$strCallBack = FillSpace($strCallBack, 11); // 회신번호
|
||||
$strDate = FillSpace($strDate, 12); // 즉시(12byte 공백), 예약전송(YmdHi)
|
||||
@@ -88,9 +137,9 @@ class LMS {
|
||||
$strSubject = str_replace(">", "]", $strSubject);
|
||||
|
||||
$strSubject = FillSpace($strSubject,30);
|
||||
$strData = FillSpace(CutChar($strData,1500),1500);
|
||||
$strData = $is_use_json ? CutCharUtf8($strData, G5_ICODE_JSON_MAX_LENGTH) : FillSpace(CutChar($strData, G5_ICODE_LMS_MAX_LENGTH), G5_ICODE_LMS_MAX_LENGTH);
|
||||
} else if (!$strURL) {
|
||||
$strData = FillSpace(CutChar($strData,90),90);
|
||||
$strData = $is_use_json ? CutCharUtf8($strData, G5_ICODE_JSON_MAX_LENGTH) : FillSpace(CutChar($strData,90),90);
|
||||
$strCaller = FillSpace($strCaller,10);
|
||||
} else {
|
||||
$strURL = FillSpace($strURL,50);
|
||||
@@ -102,39 +151,85 @@ class LMS {
|
||||
|
||||
for ($i=0; $i<$nCount; $i++) {
|
||||
|
||||
$strDest[$i] = FillSpace($strDest[$i],11);
|
||||
if ($sendType && $sendType == 1) {
|
||||
$this->Data[$i] = '01144 '.$this->icode_id.$this->icode_pw.$strDest[$i].$strCallBack.$strSubject.$strDate.$strData;
|
||||
} else if (!$strURL) {
|
||||
$this->Data[$i] = '01144 '.$this->icode_id.$this->icode_pw.$strDest[$i].$strCallBack.$strCaller.$strDate.$strData;
|
||||
} else {
|
||||
$strData = FillSpace(CheckCallCenter($strURL, $strDest[$i], $strData),80);
|
||||
$this->Data[$i] = '05173 '.$this->icode_id.$this->icode_pw.$strDest[$i].$strCallBack.$strURL.$strDate.$strData;
|
||||
}
|
||||
if($is_use_json) {
|
||||
$strDest[$i] = $strDest[$i];
|
||||
$list = array(
|
||||
"key" => $this->icode_key,
|
||||
"tel" => $strDest[$i],
|
||||
"cb" => $strCallBack,
|
||||
"msg" => $strData,
|
||||
"title" => $strSubject?$strSubject:"",
|
||||
"date" => $strDate?$strDate:""
|
||||
);
|
||||
$packet = json_encode($list);
|
||||
|
||||
if( !$packet ){ // json_encode가 잘못되었으면 보내지 않습니다.
|
||||
continue;
|
||||
}
|
||||
$this->Data[$i] = '06'.str_pad(strlen($packet), 4, "0", STR_PAD_LEFT).$packet;
|
||||
} else {
|
||||
$strDest[$i] = FillSpace($strDest[$i],11);
|
||||
if ($sendType && $sendType == 1) {
|
||||
$this->Data[$i] = '01144 '.$this->icode_id.$this->icode_pw.$strDest[$i].$strCallBack.$strSubject.$strDate.$strData;
|
||||
} else if (!$strURL) {
|
||||
$this->Data[$i] = '01144 '.$this->icode_id.$this->icode_pw.$strDest[$i].$strCallBack.$strCaller.$strDate.$strData;
|
||||
} else {
|
||||
$strData = FillSpace(CheckCallCenter($strURL, $strDest[$i], $strData),80);
|
||||
$this->Data[$i] = '05173 '.$this->icode_id.$this->icode_pw.$strDest[$i].$strCallBack.$strURL.$strDate.$strData;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function Send() {
|
||||
$fsocket = fsockopen($this->socket_host,$this->socket_port, $errno, $errstr, 2);
|
||||
if (!$fsocket) return false;
|
||||
set_time_limit(60);
|
||||
global $config;
|
||||
|
||||
foreach($this->Data as $puts) {
|
||||
fputs($fsocket, $puts);
|
||||
while(!$gets) { $gets = fgets($fsocket,30); }
|
||||
$dest = substr($puts,26,11);
|
||||
if (substr($gets,0,19) == "0223 00".$dest) {
|
||||
$this->Result[] = $dest.":".substr($gets,19,10);
|
||||
} else {
|
||||
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
|
||||
}
|
||||
$gets = "";
|
||||
}
|
||||
// 토큰키를 사용한다면
|
||||
if( isset($config['cf_icode_token_key']) && $config['cf_icode_token_key'] === $this->icode_key ){
|
||||
$fsocket = @fsockopen($this->socket_host,$this->socket_port, $errno, $errstr, 2);
|
||||
if (!$fsocket) return false;
|
||||
set_time_limit(300);
|
||||
|
||||
fclose($fsocket);
|
||||
$this->Data = "";
|
||||
foreach($this->Data as $puts) {
|
||||
fputs($fsocket, $puts);
|
||||
while(!$gets) { $gets = fgets($fsocket,32); }
|
||||
$json = json_decode(substr($puts,6), true);
|
||||
|
||||
$dest = $json["tel"];
|
||||
if (substr($gets,0,20) == "0225 00".FillSpace($dest,12)) {
|
||||
$this->Result[] = $dest.":".substr($gets,20,11);
|
||||
|
||||
} else {
|
||||
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
|
||||
if(substr($gets,6,2) >= "80") break;
|
||||
}
|
||||
$gets = "";
|
||||
}
|
||||
|
||||
fclose($fsocket);
|
||||
} else {
|
||||
$fsocket = @fsockopen($this->socket_host,$this->socket_port, $errno, $errstr, 2);
|
||||
if (!$fsocket) return false;
|
||||
set_time_limit(300);
|
||||
|
||||
foreach($this->Data as $puts) {
|
||||
fputs($fsocket, $puts);
|
||||
while(!$gets) { $gets = fgets($fsocket,30); }
|
||||
$dest = substr($puts,26,11);
|
||||
if (substr($gets,0,19) == "0223 00".$dest) {
|
||||
$this->Result[] = $dest.":".substr($gets,19,10);
|
||||
} else {
|
||||
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
|
||||
}
|
||||
$gets = "";
|
||||
}
|
||||
|
||||
fclose($fsocket);
|
||||
}
|
||||
|
||||
$this->Data = array();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -168,6 +263,24 @@ function CutChar($word, $cut) {
|
||||
return $word;
|
||||
}
|
||||
|
||||
function CutCharUtf8($word, $cut) {
|
||||
preg_match_all('/[\xE0-\xFF][\x80-\xFF]{2}|./', $word, $match); // target for BMP
|
||||
|
||||
$m = $match[0];
|
||||
$slen = strlen($word); // length of source string
|
||||
if ($slen <= $cut) return $word;
|
||||
|
||||
$ret = array();
|
||||
$count = 0;
|
||||
for ($i=0; $i < $cut; $i++) {
|
||||
$count += (strlen($m[$i]) > 1)?2:1;
|
||||
if ($count > $cut) break;
|
||||
$ret[] = $m[$i];
|
||||
}
|
||||
|
||||
return join('', $ret);
|
||||
}
|
||||
|
||||
/**
|
||||
* 수신번호의 값이 정확한 값인지 확인합니다.
|
||||
*
|
||||
@@ -183,7 +296,6 @@ function CheckCommonTypeDest($strDest, $nCount) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 회신번호 유효성 여부조회 *
|
||||
* @param string callback 회신번호
|
||||
|
||||
+130
-34
@@ -44,8 +44,20 @@ class SMS {
|
||||
var $SMS_Port;
|
||||
var $Data = array();
|
||||
var $Result = array();
|
||||
var $icode_key;
|
||||
var $socket_port;
|
||||
var $socket_host;
|
||||
|
||||
function SMS_con($sms_server,$sms_id,$sms_pw,$port) {
|
||||
global $config;
|
||||
|
||||
// 토큰키를 사용한다면
|
||||
if(isset($config['cf_icode_token_key']) && $config['cf_icode_token_key']){
|
||||
$this->icode_key = $config['cf_icode_token_key'];
|
||||
$this->socket_host = ICODE_JSON_SOCKET_HOST;
|
||||
$this->socket_port = ICODE_JSON_SOCKET_PORT;
|
||||
}
|
||||
|
||||
$this->ID=$sms_id; // 계약 후 지정
|
||||
$this->PWD=$sms_pw; // 계약 후 지정
|
||||
$this->SMS_Server=$sms_server;
|
||||
@@ -60,25 +72,82 @@ class SMS {
|
||||
}
|
||||
|
||||
function Add($dest, $callBack, $Caller, $msg, $rsvTime="") {
|
||||
global $g5;
|
||||
global $g5, $config;
|
||||
|
||||
// 내용 검사 1
|
||||
$Error = CheckCommonType($dest, $rsvTime);
|
||||
if ($Error) return $Error;
|
||||
// 내용 검사 2
|
||||
//if ( eregi("[^0-9]",$callBack) ) return "회신 전화번호가 잘못되었습니다";
|
||||
if ( preg_match("/[^0-9]/i",$callBack) ) return "회신 전화번호가 잘못되었습니다";
|
||||
// 토큰키를 사용한다면
|
||||
if( isset($config['cf_icode_token_key']) && $config['cf_icode_token_key'] === $this->icode_key ){
|
||||
|
||||
$msg=cut_char($msg,80); // 80자 제한
|
||||
// 보낼 내용을 배열에 집어넣기
|
||||
$dest = spacing($dest,11);
|
||||
$callBack = spacing($callBack,11);
|
||||
$Caller = spacing($Caller,10);
|
||||
$rsvTime = spacing($rsvTime,12);
|
||||
$msg = spacing($msg,80);
|
||||
// 내용 검사 1
|
||||
$Error = CheckCommonType($dest, $rsvTime);
|
||||
if ($Error) return $Error;
|
||||
if ( preg_match("/[^0-9]/i",$callBack) ) return "회신 전화번호가 잘못되었습니다";
|
||||
|
||||
$this->Data[] = '01144 '.$this->ID.$this->PWD.$dest.$callBack.$Caller.$rsvTime.$msg;
|
||||
return "";
|
||||
// 개행치환
|
||||
$msg = preg_replace("/\r\n/", "\n", $msg);
|
||||
$msg = preg_replace("/\r/", "\n", $msg);
|
||||
// 90byte 이내는 SMS, 90 ~ 2000 byte 는 LMS 그 이상은 절삭 되어 LMS로 발송
|
||||
// SMS 이기 때문에 90byte 이내로 합니다.
|
||||
$msg=cut_char($msg, 90);
|
||||
$msg = spacing($msg, 90);
|
||||
|
||||
// 한글 깨진것이 있는지 체크합니다.
|
||||
if( preg_match('/^([\x00-\x7e]|.{2})*/', $msg, $z) ){
|
||||
$msg = $z[0];
|
||||
}
|
||||
|
||||
// 문자 내용이 euc-kr 인지 체크합니다.
|
||||
$enc = mb_detect_encoding($msg, array('EUC-KR', 'UTF-8'));
|
||||
|
||||
// 문자 내용이 euc-kr 이면 json_encode 에서 깨지기 때문에 utf-8 로 변환합니다.
|
||||
if($enc === 'EUC-KR'){
|
||||
$msg = iconv_utf8($msg);
|
||||
}
|
||||
|
||||
// 보낼 내용을 배열에 집어넣기
|
||||
$dest = spacing($dest,11);
|
||||
$callBack = spacing($callBack,11);
|
||||
$Caller = spacing($Caller,10);
|
||||
$rsvTime = $rsvTime ? spacing($rsvTime,12) : '';
|
||||
|
||||
$list = array(
|
||||
"key" => $this->icode_key,
|
||||
"tel" => $dest,
|
||||
"cb" => $callBack,
|
||||
"msg" => $msg,
|
||||
"title" => "", //SMS 의 경우 타이틀을 지정할수 없습니다.
|
||||
"date" => $rsvTime
|
||||
);
|
||||
|
||||
$packet = json_encode($list);
|
||||
|
||||
if( !$packet ){ // json_encode가 잘못되었으면 보내지 않습니다.
|
||||
return "json_encode error";
|
||||
}
|
||||
$this->Data[] = '06'.str_pad(strlen($packet), 4, "0", STR_PAD_LEFT).$packet;
|
||||
|
||||
return '';
|
||||
|
||||
} else {
|
||||
// 기존 OLD SMS
|
||||
|
||||
// 내용 검사 1
|
||||
$Error = CheckCommonType($dest, $rsvTime);
|
||||
if ($Error) return $Error;
|
||||
// 내용 검사 2
|
||||
//if ( eregi("[^0-9]",$callBack) ) return "회신 전화번호가 잘못되었습니다";
|
||||
if ( preg_match("/[^0-9]/i",$callBack) ) return "회신 전화번호가 잘못되었습니다";
|
||||
|
||||
$msg=cut_char($msg,80); // 80자 제한
|
||||
// 보낼 내용을 배열에 집어넣기
|
||||
$dest = spacing($dest,11);
|
||||
$callBack = spacing($callBack,11);
|
||||
$Caller = spacing($Caller,10);
|
||||
$rsvTime = spacing($rsvTime,12);
|
||||
$msg = spacing($msg,80);
|
||||
|
||||
$this->Data[] = '01144 '.$this->ID.$this->PWD.$dest.$callBack.$Caller.$rsvTime.$msg;
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
function AddURL($dest, $callBack, $URL, $msg, $rsvTime="") {
|
||||
@@ -121,26 +190,53 @@ class SMS {
|
||||
return "";
|
||||
}
|
||||
|
||||
function Send () {
|
||||
$fp=@fsockopen(trim($this->SMS_Server),trim($this->SMS_Port), $errno, $errstr, 2);
|
||||
if (!$fp) return false;
|
||||
set_time_limit(60);
|
||||
function Send() {
|
||||
global $config;
|
||||
|
||||
## php4.3.10일경우
|
||||
## zend 최신버전으로 업해주세요..
|
||||
## 또는 122번째 줄을 $this->Data as $tmp => $puts 로 변경해 주세요.
|
||||
// 토큰키를 사용한다면
|
||||
if( isset($config['cf_icode_token_key']) && $config['cf_icode_token_key'] === $this->icode_key ){
|
||||
$fsocket = @fsockopen(trim($this->socket_host),trim($this->socket_port), $errno, $errstr, 2);
|
||||
if (!$fsocket) return false;
|
||||
set_time_limit(300);
|
||||
|
||||
foreach($this->Data as $puts) {
|
||||
$dest = substr($puts,26,11);
|
||||
fputs($fp,$puts);
|
||||
while(!$gets) { $gets=fgets($fp,30); }
|
||||
if (substr($gets,0,19)=="0223 00".$dest) $this->Result[]=$dest.":".substr($gets,19,10);
|
||||
else $this->Result[$dest]=$dest.":Error";
|
||||
$gets="";
|
||||
}
|
||||
fclose($fp);
|
||||
$this->Data="";
|
||||
return true;
|
||||
foreach($this->Data as $puts) {
|
||||
fputs($fsocket, $puts);
|
||||
while(!$gets) { $gets = fgets($fsocket,32); }
|
||||
$json = json_decode(substr($puts,6), true);
|
||||
|
||||
$dest = $json["tel"];
|
||||
if (substr($gets,0,20) == "0225 00".spacing($dest,12)) {
|
||||
$this->Result[] = $dest.":".substr($gets,20,11);
|
||||
|
||||
} else {
|
||||
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
|
||||
if(substr($gets,6,2) >= "80") break;
|
||||
}
|
||||
$gets = "";
|
||||
}
|
||||
fclose($fsocket);
|
||||
|
||||
} else {
|
||||
|
||||
$fp=@fsockopen(trim($this->SMS_Server),trim($this->SMS_Port));
|
||||
if (!$fp) return false;
|
||||
set_time_limit(300);
|
||||
|
||||
## php4.3.10일경우
|
||||
## zend 최신버전으로 업해주세요..
|
||||
## 또는 122번째 줄을 $this->Data as $tmp => $puts 로 변경해 주세요.
|
||||
|
||||
foreach($this->Data as $puts) {
|
||||
$dest = substr($puts,26,11);
|
||||
fputs($fp,$puts);
|
||||
while(!$gets) { $gets=fgets($fp,30); }
|
||||
if (substr($gets,0,19)=="0223 00".$dest) $this->Result[]=$dest.":".substr($gets,19,10);
|
||||
else $this->Result[$dest]=$dest.":Error";
|
||||
$gets="";
|
||||
}
|
||||
fclose($fp);
|
||||
}
|
||||
$this->Data=array();
|
||||
}
|
||||
}
|
||||
?>
|
||||
+1
-1
@@ -31,7 +31,7 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
|
||||
}
|
||||
}
|
||||
|
||||
$caches = null;
|
||||
$caches = false;
|
||||
|
||||
if(G5_USE_CACHE) {
|
||||
$cache_file_name = "latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}-".g5_cache_secret_key();
|
||||
|
||||
@@ -46,7 +46,7 @@ function create_hash($password, $force_compat = false)
|
||||
{
|
||||
// Generate the salt.
|
||||
|
||||
if (function_exists('mcrypt_create_iv')) {
|
||||
if (function_exists('mcrypt_create_iv') && version_compare( PHP_VERSION, '7.2' , '<' ) ) {
|
||||
$salt = base64_encode(mcrypt_create_iv(PBKDF2_COMPAT_SALT_BYTES, MCRYPT_DEV_URANDOM));
|
||||
} elseif (@file_exists('/dev/urandom') && $fp = @fopen('/dev/urandom', 'r')) {
|
||||
$salt = base64_encode(fread($fp, PBKDF2_COMPAT_SALT_BYTES));
|
||||
|
||||
@@ -306,8 +306,11 @@ function thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_h
|
||||
if(!$thumb_height) {
|
||||
$thumb_height = round(($thumb_width * $size[1]) / $size[0]);
|
||||
} else {
|
||||
if($size[0] < $thumb_width || $size[1] < $thumb_height)
|
||||
if($crop_mode === 'center' && ($size[0] > $thumb_width || $size[1] > $thumb_height)){
|
||||
$is_large = true;
|
||||
} else if($size[0] < $thumb_width || $size[1] < $thumb_height) {
|
||||
$is_large = false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if($thumb_height) {
|
||||
|
||||
+25
-14
@@ -111,22 +111,27 @@ function short_url_clean($string_url, $add_qry=''){
|
||||
$url=parse_url($string_url);
|
||||
$page_name = basename($url['path'],".php");
|
||||
|
||||
$array_page_names = run_replace('url_clean_page_names', array('board', 'write'));
|
||||
$array_page_names = run_replace('url_clean_page_names', array('board', 'write', 'content'));
|
||||
|
||||
if( strpos($string_url, G5_BBS_URL) === false || ! in_array($page_name, $array_page_names) ){ //게시판이 아니면 리턴
|
||||
return $string_url;
|
||||
if( stripos(preg_replace('/^https?:/i', '', $string_url), preg_replace('/^https?:/i', '', G5_BBS_URL)) === false || ! in_array($page_name, $array_page_names) ){ //게시판이 아니면 리턴
|
||||
return run_replace('false_short_url_clean', $string_url, $url, $page_name, $array_page_names);
|
||||
}
|
||||
|
||||
$return_url = '';
|
||||
$qstring = parse_str($url['query'], $vars);
|
||||
|
||||
parse_str($url['query'], $vars);
|
||||
|
||||
/*
|
||||
// 예) Array ( [scheme] => http [host] => sir.kr [path] => /bbs/board.php [query] => wr_id=1110870&bo_table=cm_free&cpage=1 [fragment] => c_1110946 )
|
||||
//while(list($k,$v) = each($vars)) $page_name .= "/".$v;
|
||||
foreach($vars as $k => $v) { $page_name .= "/".$v; }
|
||||
*/
|
||||
|
||||
if( $page_name === 'write' ){
|
||||
$vars['action'] = 'write';
|
||||
$allow_param_keys = array('bo_table'=>'', 'action'=>'');
|
||||
} else {
|
||||
} else if( $page_name === 'content' ){
|
||||
$vars['action'] = 'content';
|
||||
$allow_param_keys = array('action'=>'', 'co_id'=>'');
|
||||
} else {
|
||||
$allow_param_keys = array('bo_table'=>'', 'wr_id'=>'');
|
||||
}
|
||||
|
||||
@@ -134,7 +139,7 @@ function short_url_clean($string_url, $add_qry=''){
|
||||
|
||||
foreach( $allow_param_keys as $key=>$v ){
|
||||
if( !isset($vars[$key]) || empty($vars[$key]) ) continue;
|
||||
$add = '';
|
||||
|
||||
$s[$key] = $vars[$key];
|
||||
}
|
||||
|
||||
@@ -143,7 +148,7 @@ function short_url_clean($string_url, $add_qry=''){
|
||||
|
||||
if( $get_write['wr_seo_title'] ){
|
||||
unset($s['wr_id']);
|
||||
$s['wr_seo_title'] = $get_write['wr_seo_title'].'/';
|
||||
$s['wr_seo_title'] = urlencode($get_write['wr_seo_title']).'/';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,7 +158,7 @@ function short_url_clean($string_url, $add_qry=''){
|
||||
|
||||
if( isset($url['host']) ){
|
||||
|
||||
$array_file_paths = run_replace('url_clean_page_paths', array('/'.G5_BBS_DIR.'/board.php', '/'.G5_BBS_DIR.'/write.php'));
|
||||
$array_file_paths = run_replace('url_clean_page_paths', array('/'.G5_BBS_DIR.'/board.php', '/'.G5_BBS_DIR.'/write.php', '/'.G5_BBS_DIR.'/content.php'));
|
||||
|
||||
$str_path = isset($url['path']) ? $url['path'] : '';
|
||||
$http = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 'https://' : 'http://';
|
||||
@@ -170,8 +175,8 @@ function short_url_clean($string_url, $add_qry=''){
|
||||
if( $add_qry ){
|
||||
$add_param .= $add_param ? '&'.$add_qry : '?'.$add_qry;
|
||||
}
|
||||
|
||||
while(list($k,$v) = each($s)) $return_url .= '/'.$v;
|
||||
|
||||
foreach($s as $k => $v) { $return_url .= '/'.$v; }
|
||||
|
||||
return $host.$return_url.$add_param.$fragment;
|
||||
}
|
||||
@@ -180,7 +185,12 @@ function short_url_clean($string_url, $add_qry=''){
|
||||
}
|
||||
|
||||
function correct_goto_url($url){
|
||||
return $url.'/';
|
||||
|
||||
if( substr($url, -1) !== '/' ){
|
||||
return $url.'/';
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
function generate_seo_title($string, $wordLimit=G5_SEO_TITEL_WORD_CUT){
|
||||
@@ -219,7 +229,8 @@ function exist_seo_url($type, $seo_title, $write_table, $sql_id=0){
|
||||
global $g5;
|
||||
|
||||
$exists_title = '';
|
||||
$sql_id = preg_replace('/[^a-z0-9_]/i', '', $sql_id);
|
||||
$sql_id = preg_replace('/[^a-z0-9_\-]/i', '', $sql_id);
|
||||
// 영카트 상품코드의 경우 - 하이픈이 들어가야 함
|
||||
|
||||
if( $type === 'bbs' ){
|
||||
$sql = "select wr_seo_title FROM {$write_table} WHERE wr_seo_title = '".sql_real_escape_string($seo_title)."' AND wr_id <> '$sql_id' limit 1";
|
||||
|
||||
@@ -75,11 +75,11 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
<?php } ?>
|
||||
|
||||
<div class="bo_cnt">
|
||||
<?php if ($list[$i]['is_notice']) { ?>
|
||||
<div>
|
||||
<strong class="notice_icon">공지</strong>
|
||||
<?php if ($list[$i]['is_notice'] || ($is_category && $list[$i]['ca_name'])) { ?>
|
||||
<div class="bo_cate_ico">
|
||||
<?php if ($list[$i]['is_notice']) { ?><strong class="notice_icon">공지</strong><?php } ?>
|
||||
<?php if ($is_category && $list[$i]['ca_name']) { ?>
|
||||
<a href="<?php echo $list[$i]['ca_name_href'] ?>" class="bo_cate_link"><?php echo $list[$i]['ca_name'] ?></a>
|
||||
<a href="<?php echo $list[$i]['ca_name_href'] ?>" class="bo_cate_link"><?php echo $list[$i]['ca_name']; ?></a>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
@@ -85,6 +85,7 @@
|
||||
.more_opt {display:none;position:absolute;top:50px;right:7px;background:#fff;border:1px solid #b8bfc4;z-index:999}
|
||||
.more_opt:before {content:"";position:absolute;top:-8px;right:6px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #b8bfc4 transparent}
|
||||
.more_opt:after {content:"";position:absolute;top:-6px;right:6px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #fff transparent}
|
||||
.more_opt.is_list_btn{width:90px}
|
||||
.more_opt li {display:block;border-bottom:1px solid #f1f1f1;padding:10px;margin:0;color:#6b757c;text-align:left}
|
||||
.more_opt li:last-child {border-bottom:0}
|
||||
.more_opt li button, .more_opt li a {width:100%;border:0;background:#fff;color:#6b757c}
|
||||
@@ -110,6 +111,7 @@
|
||||
#bo_v_sns li span {position:absolute;font-size:0;text-indent:-9999em;line-height:0;overflow:hidden}
|
||||
|
||||
.bo_cate_link {display:inline-block;background:#e2eaf6;padding:0 5px;line-height:20px;border-radius:5px;font-weight:bold;font-size:11px;color:#3ca1ff !important;text-decoration:none;/*font-size:0.92em*/} /* 글제목줄 분류스타일 */
|
||||
.bo_cate_ico {margin-bottom:5px}
|
||||
.bo_cnt {display:block;width:100%;font-size:1.083em;font-weight:bold;line-height:1.4em}
|
||||
.bo_cnt i {color:#8d96c2;font-size:12px}
|
||||
.bo_cnt .fa-heart {color:#ff0000}
|
||||
@@ -298,7 +300,7 @@
|
||||
.bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_vc_w .bo_vc_secret {display:block}
|
||||
|
||||
#bo_vc_send_sns {display:block;float:left}
|
||||
#bo_vc_send_sns {display:block;margin-bottom:10px}
|
||||
#bo_vc_sns {display:block;margin:0;padding:0;list-style:none;zoom:1}
|
||||
#bo_vc_sns:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_vc_sns li {float:left;margin:0 5px 0 0}
|
||||
|
||||
@@ -143,7 +143,7 @@ jQuery(function($){
|
||||
if (isset($view['file'][$i]['source']) && $view['file'][$i]['source'] && !$view['file'][$i]['view']) {
|
||||
?>
|
||||
<li>
|
||||
<a href="<?php echo $view['file'][$i]['href']; ?>" class="view_file_download">
|
||||
<a href="<?php echo $view['file'][$i]['href']; ?>" class="view_file_download" download>
|
||||
<i class="fa fa-download" aria-hidden="true"></i>
|
||||
<strong><?php echo $view['file'][$i]['source'] ?></strong>
|
||||
<?php echo $view['file'][$i]['content'] ?> (<?php echo $view['file'][$i]['size'] ?>)
|
||||
|
||||
@@ -20,6 +20,8 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
// if (strstr($list[$i]['wr_option'], "secret"))
|
||||
// $str = $str;
|
||||
$str = preg_replace("/\[\<a\s.*href\=\"(http|https|ftp|mms)\:\/\/([^[:space:]]+)\.(mp3|wma|wmv|asf|asx|mpg|mpeg)\".*\<\/a\>\]/i", "<script>doc_write(obj_movie('$1://$2.$3'));</script>", $str);
|
||||
$c_reply_href = $comment_common_url.'&c_id='.$comment_id.'&w=c#bo_vc_w';
|
||||
$c_edit_href = $comment_common_url.'&c_id='.$comment_id.'&w=cu#bo_vc_w';
|
||||
?>
|
||||
<article id="c_<?php echo $comment_id ?>" <?php if ($cmt_depth) { ?>style="margin-left:<?php echo $cmt_depth ?>px;border-bottom-color:#f8f8f8"<?php } ?>>
|
||||
<div class="comment_inner">
|
||||
@@ -67,8 +69,6 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
</p>
|
||||
|
||||
<?php if($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) {
|
||||
$query_string = clean_query_string($_SERVER['QUERY_STRING']);
|
||||
|
||||
if($w == 'cu') {
|
||||
$sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
|
||||
$cmt = sql_fetch($sql);
|
||||
@@ -76,9 +76,6 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
$cmt['wr_content'] = '';
|
||||
$c_wr_content = $cmt['wr_content'];
|
||||
}
|
||||
|
||||
$c_reply_href = './board.php?'.$query_string.'&c_id='.$comment_id.'&w=c#bo_vc_w';
|
||||
$c_edit_href = './board.php?'.$query_string.'&c_id='.$comment_id.'&w=cu#bo_vc_w';
|
||||
?>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
@@ -76,7 +76,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
<?php if ($is_email) { ?>
|
||||
<div class="write_div">
|
||||
<label for="wr_email" class="sound_only">이메일</label>
|
||||
<input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" email" maxlength="100" placeholder="이메일">
|
||||
<input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" maxlength="100" placeholder="이메일">
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
.more_opt {display:none;position:absolute;top:50px;right:7px;background:#fff;border:1px solid #b8bfc4;z-index:999}
|
||||
.more_opt:before {content:"";position:absolute;top:-8px;right:6px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #b8bfc4 transparent}
|
||||
.more_opt:after {content:"";position:absolute;top:-6px;right:6px;width:0;height:0;border-style:solid;border-width:0 6px 8px 6px;border-color:transparent transparent #fff transparent}
|
||||
.more_opt.is_list_btn{width:90px}
|
||||
.more_opt li {display:block;border-bottom:1px solid #f1f1f1;padding:10px;margin:0;color:#6b757c;text-align:left}
|
||||
.more_opt li:last-child {border-bottom:0}
|
||||
.more_opt li button, .more_opt li a {width:100%;border:0;background:#fff;color:#6b757c}
|
||||
@@ -331,7 +332,7 @@
|
||||
.bo_vc_w_wr:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.bo_vc_w .bo_vc_secret {display:block}
|
||||
|
||||
#bo_vc_send_sns {display:block;float:left}
|
||||
#bo_vc_send_sns {display:block;margin-bottom:10px}
|
||||
#bo_vc_sns {display:block;margin:0;padding:0;list-style:none;zoom:1}
|
||||
#bo_vc_sns:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
#bo_vc_sns li {float:left;margin:0 5px 0 0}
|
||||
|
||||
@@ -145,7 +145,7 @@ jQuery(function($){
|
||||
if (isset($view['file'][$i]['source']) && $view['file'][$i]['source'] && !$view['file'][$i]['view']) {
|
||||
?>
|
||||
<li>
|
||||
<a href="<?php echo $view['file'][$i]['href']; ?>" class="view_file_download">
|
||||
<a href="<?php echo $view['file'][$i]['href']; ?>" class="view_file_download" download>
|
||||
<i class="fa fa-download" aria-hidden="true"></i>
|
||||
<strong><?php echo $view['file'][$i]['source'] ?></strong>
|
||||
<?php echo $view['file'][$i]['content'] ?> (<?php echo $view['file'][$i]['size'] ?>)
|
||||
|
||||
@@ -20,6 +20,8 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
// if (strstr($list[$i]['wr_option'], "secret"))
|
||||
// $str = $str;
|
||||
$str = preg_replace("/\[\<a\s.*href\=\"(http|https|ftp|mms)\:\/\/([^[:space:]]+)\.(mp3|wma|wmv|asf|asx|mpg|mpeg)\".*\<\/a\>\]/i", "<script>doc_write(obj_movie('$1://$2.$3'));</script>", $str);
|
||||
$c_reply_href = $comment_common_url.'&c_id='.$comment_id.'&w=c#bo_vc_w';
|
||||
$c_edit_href = $comment_common_url.'&c_id='.$comment_id.'&w=cu#bo_vc_w';
|
||||
?>
|
||||
<article id="c_<?php echo $comment_id ?>" <?php if ($cmt_depth) { ?>style="margin-left:<?php echo $cmt_depth ?>px;border-bottom-color:#f8f8f8"<?php } ?>>
|
||||
<div class="comment_inner">
|
||||
@@ -67,8 +69,6 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
</p>
|
||||
|
||||
<?php if($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) {
|
||||
$query_string = clean_query_string($_SERVER['QUERY_STRING']);
|
||||
|
||||
if($w == 'cu') {
|
||||
$sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
|
||||
$cmt = sql_fetch($sql);
|
||||
@@ -76,9 +76,6 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
$cmt['wr_content'] = '';
|
||||
$c_wr_content = $cmt['wr_content'];
|
||||
}
|
||||
|
||||
$c_reply_href = './board.php?'.$query_string.'&c_id='.$comment_id.'&w=c#bo_vc_w';
|
||||
$c_edit_href = './board.php?'.$query_string.'&c_id='.$comment_id.'&w=cu#bo_vc_w';
|
||||
?>
|
||||
<?php } ?>
|
||||
</div>
|
||||
|
||||
@@ -76,7 +76,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
<?php if ($is_email) { ?>
|
||||
<div class="write_div">
|
||||
<label for="wr_email" class="sound_only">이메일</label>
|
||||
<input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" email" maxlength="100" placeholder="이메일">
|
||||
<input type="email" name="wr_email" value="<?php echo $email ?>" id="wr_email" class="frm_input full_input" maxlength="100" placeholder="이메일">
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
@@ -5,4 +5,5 @@
|
||||
.ctt_admin {margin:0 5px;text-align:right}
|
||||
#ctt header h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
|
||||
#ctt_con {padding:10px 0}
|
||||
#ctt_con img{max-width:100%;height:auto}
|
||||
.ctt_img {text-align:center}
|
||||
@@ -98,21 +98,27 @@ echo '<div id="faq_thtml">'.conv_content($fm['fm_mobile_tail_html'], 1).'</div>'
|
||||
|
||||
<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>
|
||||
<script>
|
||||
$(function() {
|
||||
jQuery(function() {
|
||||
$(".closer_btn").on("click", function() {
|
||||
$(this).closest(".con_inner").slideToggle();
|
||||
$(this).closest(".con_inner").slideToggle('slow', function() {
|
||||
var $h3 = $(this).closest("li").find("h3");
|
||||
|
||||
$("#faq_con li h3").removeClass("faq_li_open");
|
||||
if($(this).is(":visible")) {
|
||||
$h3.addClass("faq_li_open");
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function faq_open(el)
|
||||
{
|
||||
$("h3").on("click", function() {
|
||||
$(this).addClass("faq_li_open");
|
||||
});
|
||||
var $con = $(el).closest("li").find(".con_inner");
|
||||
var $con = $(el).closest("li").find(".con_inner"),
|
||||
$h3 = $(el).closest("li").find("h3");
|
||||
|
||||
if($con.is(":visible")) {
|
||||
$con.slideUp();
|
||||
$h3.removeClass("faq_li_open");
|
||||
} else {
|
||||
$("#faq_con .con_inner:visible").css("display", "none");
|
||||
|
||||
@@ -120,6 +126,9 @@ function faq_open(el)
|
||||
function() {
|
||||
// 이미지 리사이즈
|
||||
$con.viewimageresize2();
|
||||
$("#faq_con li h3").removeClass("faq_li_open");
|
||||
|
||||
$h3.addClass("faq_li_open");
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,43 @@
|
||||
jQuery(function($){
|
||||
$(document).ready(function(){
|
||||
|
||||
$(".owl-carousel-wrap .sv_member").off('click').off('focusin');
|
||||
|
||||
if ($.fn.tooltipster) {
|
||||
var $member_menu_tip = $('.owl-carousel-wrap .sv_member').tooltipster({
|
||||
theme: 'tooltipster-sir',
|
||||
trigger: 'custom',
|
||||
contentAsHTML: true,
|
||||
interactive: true,
|
||||
distance: 5,
|
||||
position:'bottom',
|
||||
coord: {
|
||||
left: 20,
|
||||
bottom: 0
|
||||
},
|
||||
triggerOpen: {
|
||||
click: true,
|
||||
tap: true // For touch device
|
||||
},
|
||||
triggerClose: {
|
||||
click: true,
|
||||
scroll: true,
|
||||
tap: true
|
||||
},
|
||||
functionBefore: function(instance, helper) {
|
||||
var content = $(helper.origin).parent().find('.sv')[0].outerHTML;
|
||||
instance.content(content);
|
||||
},
|
||||
functionReady : function(instance, helper) {
|
||||
$(helper.tooltip).find(".tooltipster-arrow").css({left:16});
|
||||
},
|
||||
functionPosition: function(instance, helper, position){
|
||||
position.coord.left += 7;
|
||||
return position;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var carousels = [],
|
||||
is_loop = true;
|
||||
|
||||
@@ -38,6 +75,16 @@ jQuery(function($){
|
||||
owl_show_page(event);
|
||||
},
|
||||
});
|
||||
|
||||
carousels['sel' + index].on('changed.owl.carousel', function(event) {
|
||||
|
||||
if ($.fn.tooltipster) {
|
||||
var instances = $.tooltipster.instances();
|
||||
$.each(instances, function(i, instance){
|
||||
instance.close();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$this.on("click", ".lt_page_next", function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
@@ -3,14 +3,17 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
|
||||
|
||||
add_javascript('<script src="'.G5_JS_URL.'/owlcarousel/owl.carousel.min.js"></script>', 10);
|
||||
add_javascript('<script src="'.$latest_skin_url.'/latest.carousel.js"></script>', 11);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.G5_JS_URL.'/owlcarousel/owl.carousel.min.css">', 10);
|
||||
|
||||
add_javascript('<script src="'.G5_JS_URL.'/tooltipster/tooltipster.bundle.min.js"></script>', 11);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.G5_JS_URL.'/tooltipster/tooltipster.bundle.min.css">', 11);
|
||||
add_javascript('<script src="'.$latest_skin_url.'/latest.carousel.js?v2"></script>', 12);
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css?v2">', 1);
|
||||
$thumb_width = 138;
|
||||
$thumb_height = 80;
|
||||
$list_count = count($list);
|
||||
$list_count = (is_array($list) && $list) ? count($list) : 0;
|
||||
$divisor_count = 4;
|
||||
$start_page_num = $list_count ? '1' : '0';
|
||||
$is_show_next_prev = ($list_count > 4) ? 1 : 0;
|
||||
|
||||
@@ -30,7 +30,13 @@
|
||||
.lt .comment_icon {background:url('./img/icon_comment.png') no-repeat 50% 50%;display:inline-block;width:20px;height:28px;text-indent:-999px;overflow:hidden;vertical-align:top;background-size:70%;margin:0 0px 0 5px}
|
||||
.lt .empty_li {text-align:center;padding:40px 0;color:#777}
|
||||
|
||||
.lt .owl-carousel .owl-item .profile_img img{width:auto}
|
||||
.lt .owl-carousel .owl-item .profile_img img{width:auto;display:inline}
|
||||
|
||||
.tooltipster-content .sv a{display:block;padding:0 10px;line-height:30px;font-weight:normal;color:#bbb}
|
||||
.tooltipster-content .sv a:hover{background:#000;color:#fff}
|
||||
.tooltipster-sidetip.tooltipster-sir .tooltipster-content{padding:0}
|
||||
.tooltipster-sidetip.tooltipster-sir .tooltipster-box{border:0 none;background:#333;border-radius:0}
|
||||
.tooltipster-sidetip.tooltipster-sir.tooltipster-bottom .tooltipster-arrow-border, .tooltipster-sidetip.tooltipster-sir.tooltipster-bottom .tooltipster-arrow-background{border-bottom-color:#333}
|
||||
|
||||
.lt_page {background:#fff;text-align:center;padding:10px 15px;line-height:25px;border-bottom:1px solid #e5ecee}
|
||||
.lt_page button {display:inline-block;background:#fff;width:25px;height:25px;border:1px solid #dbdee6;text-align:center;color:#cdcdce}
|
||||
|
||||
@@ -3,14 +3,14 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
|
||||
$list_count = (is_array($list) && $list) ? count($list) : 0;
|
||||
?>
|
||||
|
||||
<div class="cm_lt">
|
||||
<h2 class="cm_lt_title"><a href="<?php echo get_pretty_url($bo_table); ?>">최신댓글</a></h2>
|
||||
<ul>
|
||||
<?php
|
||||
$count = count($list);
|
||||
for ($i=0; $i<$count; $i++) {
|
||||
for ($i=0; $i<$list_count; $i++) {
|
||||
?>
|
||||
<li>
|
||||
<span class="cm_lt_nick"><?php echo get_member_profile_img($member['mb_id']); ?></span>
|
||||
@@ -24,7 +24,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">',
|
||||
<?php
|
||||
}
|
||||
|
||||
if($i ==0)
|
||||
if($list_count ==0)
|
||||
echo '<li class="empty_li">게시물이 없습니다.</li>'.PHP_EOL;
|
||||
?>
|
||||
</ul>
|
||||
|
||||
@@ -4,12 +4,13 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
|
||||
add_javascript('<script src="'.G5_JS_URL.'/jquery.bxslider.js"></script>', 10);
|
||||
$list_count = (is_array($list) && $list) ? count($list) : 0;
|
||||
?>
|
||||
|
||||
<div class="notice ft_cnt">
|
||||
<h2><a href="<?php echo get_pretty_url($bo_table); ?>"><?php echo $bo_subject ?></a></h2>
|
||||
<ul>
|
||||
<?php for ($i=0; $i<count($list); $i++) { ?>
|
||||
<?php for ($i=0; $i<$list_count; $i++) { ?>
|
||||
<li>
|
||||
<?php
|
||||
if ($list[$i]['icon_secret']) echo "<span class=\"lock_icon\"><i class=\"fa fa-lock\" aria-hidden=\"true\"></i></span> ";
|
||||
@@ -35,7 +36,7 @@ add_javascript('<script src="'.G5_JS_URL.'/jquery.bxslider.js"></script>', 10);
|
||||
?>
|
||||
</li>
|
||||
<?php } ?>
|
||||
<?php if (count($list) == 0) { //게시물이 없을 때 ?>
|
||||
<?php if ($list_count == 0) { //게시물이 없을 때 ?>
|
||||
<li class="empty_li">게시물이 없습니다.</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
|
||||
@@ -35,7 +35,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
||||
<a href="<?php echo $list[$i]['view_href'] ?>"><?php echo $memo_preview; ?></a>
|
||||
</div>
|
||||
</div>
|
||||
<?php// 쪽지 읽은 시간 echo $list[$i]['read_datetime'] ?>
|
||||
<?php /* 쪽지 읽은 시간 echo $list[$i]['read_datetime']; */ ?>
|
||||
<a href="<?php echo $list[$i]['del_href'] ?>" onclick="del(this.href); return false;" class="memo_del"><i class="fa fa-trash-o" aria-hidden="true"></i> <span class="sound_only">삭제</span></a>
|
||||
</li>
|
||||
<?php } ?>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user