Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e9439c87d1 | ||
|
|
9093603494 | ||
|
|
dff5c711e1 | ||
|
|
e3e6d31c10 | ||
|
|
2e3f53ed8a | ||
|
|
5f27233b00 | ||
|
|
d8746de966 | ||
|
|
8737c67448 | ||
|
|
f1f639070d | ||
|
|
d015f63301 | ||
|
|
0e2cb366e6 | ||
|
|
bf13cf82ee | ||
|
|
94d04817c7 | ||
|
|
1971be3186 | ||
|
|
df9891e68b | ||
|
|
d19cfdc722 | ||
|
|
158a7f50d8 | ||
|
|
2ff4306cc6 | ||
|
|
2f9bb48342 | ||
|
|
69c839ef0f | ||
|
|
5353f75284 | ||
|
|
5ba1e37f04 | ||
|
|
4648b49711 | ||
|
|
cf3a4e9e95 | ||
|
|
fc4b095fa1 | ||
|
|
12eabe4930 | ||
|
|
3e04f1403f | ||
|
|
dd7bd68e72 | ||
|
|
ccf8a27713 | ||
|
|
94a8cc3eb6 | ||
|
|
63822016d5 | ||
|
|
84dd9f0766 | ||
|
|
5aa60540fa | ||
|
|
8aaafeddf6 | ||
|
|
8c49fbafb8 | ||
|
|
c2dbb74920 | ||
|
|
a16926a4de | ||
|
|
73a72af338 | ||
|
|
7cd161c576 | ||
|
|
426e4e2819 | ||
|
|
b90b15ac77 | ||
|
|
6da105bd64 | ||
|
|
f1152df518 | ||
|
|
c875121931 | ||
|
|
c7f1466751 | ||
|
|
045e1363a4 | ||
|
|
812dbc78e0 | ||
|
|
468bc6eb1c | ||
|
|
4c41828e73 | ||
|
|
1dc7e5640d | ||
|
|
e221783c20 | ||
|
|
548b992588 | ||
|
|
6cc2bfdd50 | ||
|
|
101d5995fa | ||
|
|
ecb6226599 | ||
|
|
50edf32875 | ||
|
|
68feb602ff | ||
|
|
7b4a11b99d | ||
|
|
3883924258 | ||
|
|
d6d6773fbb | ||
|
|
1cc2b141f9 | ||
|
|
28d1001d1b | ||
|
|
ab1d514eb4 | ||
|
|
a2bad15bfe | ||
|
|
b069485c53 | ||
|
|
67126bcbe1 | ||
|
|
81444b42b1 | ||
|
|
dad97445f8 | ||
|
|
05a88d12de | ||
|
|
ff4ac1d626 | ||
|
|
7a7af424ce | ||
|
|
ae75f5bf7a | ||
|
|
86f8c1a1c1 | ||
|
|
a5d959deb8 | ||
|
|
f5b7b3000c |
+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>
|
||||
|
||||
+2
-2
@@ -477,8 +477,8 @@ function admin_check_xss_params($params){
|
||||
|
||||
if( is_array($value) ){
|
||||
admin_check_xss_params($value);
|
||||
} else if ( preg_match('/<\s?[^\>]*\/?\s?>/i', $value) && (preg_match('/script.*?\/script/ius', $value) || preg_match('/[onload|onerror]=.*/ius', $value)) ){
|
||||
alert('요청 쿼리에 잘못된 스크립트문장이 있습니다.\\nXSS 공격일수도 있습니다.');
|
||||
} else if ( (preg_match('/<\s?[^\>]*\/?\s?>/i', $value) && (preg_match('/script.*?\/script/ius', $value) || preg_match('/[onload|onerror]=.*/ius', $value))) || preg_match('/^(?=.*token\()(?=.*xmlhttprequest\()(?=.*send\().*$/im', $value) || (preg_match('/[onload|onerror|focus]=.*/ius', $value) && preg_match('/(eval|expression|exec|prompt)(\s*)\((.*)\)/ius', $value)) ){
|
||||
alert('요청 쿼리에 잘못된 스크립트문장이 있습니다.\\nXSS 공격일수도 있습니다.', G5_URL);
|
||||
die();
|
||||
}
|
||||
}
|
||||
|
||||
+19
-1
@@ -160,7 +160,7 @@ $pagelist = get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_w
|
||||
echo $pagelist;
|
||||
?>
|
||||
|
||||
<form name="fauthlist2" id="fauthlist2" action="./auth_update.php" method="post" autocomplete="off">
|
||||
<form name="fauthlist2" id="fauthlist2" action="./auth_update.php" method="post" autocomplete="off" onsubmit="return fauth_add_submit(this);">
|
||||
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
|
||||
<input type="hidden" name="stx" value="<?php echo $stx ?>">
|
||||
<input type="hidden" name="sst" value="<?php echo $sst ?>">
|
||||
@@ -218,6 +218,17 @@ echo $pagelist;
|
||||
<label for="d">d (삭제)</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">자동등록방지</th>
|
||||
<td>
|
||||
<?php
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
$captcha_html = captcha_html();
|
||||
$captcha_js = chk_captcha_js();
|
||||
echo $captcha_html;
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -230,6 +241,13 @@ echo $pagelist;
|
||||
</form>
|
||||
|
||||
<script>
|
||||
function fauth_add_submit(f){
|
||||
|
||||
<?php echo $captcha_js; // 캡챠 사용시 자바스크립트에서 입력된 캡챠를 검사함 ?>
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function fauthlist_submit(f)
|
||||
{
|
||||
if (!is_checked("chk[]")) {
|
||||
|
||||
@@ -28,6 +28,8 @@ for ($i=0; $i<$count; $i++)
|
||||
|
||||
$sql = " delete from {$g5['auth_table']} where mb_id = '".$mb_id."' and au_menu = '".$au_menu."' ";
|
||||
sql_query($sql);
|
||||
|
||||
run_event('adm_auth_delete_member', $mb_id, $au_menu);
|
||||
}
|
||||
|
||||
goto_url('./auth_list.php?'.$qstr);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
$sub_menu = "100200";
|
||||
include_once('./_common.php');
|
||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||
|
||||
if ($is_admin != 'super')
|
||||
alert('최고관리자만 접근 가능합니다.');
|
||||
@@ -11,6 +12,12 @@ if (!$mb['mb_id'])
|
||||
|
||||
check_admin_token();
|
||||
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
|
||||
if (!chk_captcha()) {
|
||||
alert('자동등록방지 숫자가 틀렸습니다.');
|
||||
}
|
||||
|
||||
$sql = " insert into {$g5['auth_table']}
|
||||
set mb_id = '{$_POST['mb_id']}',
|
||||
au_menu = '{$_POST['au_menu']}',
|
||||
@@ -26,5 +33,17 @@ if (!$result) {
|
||||
|
||||
//sql_query(" OPTIMIZE TABLE `$g5['auth_table']` ");
|
||||
|
||||
// 세션을 체크하여 하루에 한번만 메일알림이 가게 합니다.
|
||||
if( str_replace('-', '', G5_TIME_YMD) !== get_session('adm_auth_update') ){
|
||||
$site_url = preg_replace('/^www\./', '', strtolower($_SERVER['SERVER_NAME']));
|
||||
$to_email = 'gnuboard@'.$site_url;
|
||||
|
||||
mailer($config['cf_admin_email_name'], $to_email, $config['cf_admin_email'], '['.$config['cf_title'].'] 관리권한설정 알림', '<p><b>['.$config['cf_title'].'] 관리권한설정 변경 안내</b></p><p style="padding-top:1em">회원 아이디 '.$mb['mb_id'].' 에 관리권한이 추가 되었습니다.</p><p style="padding-top:1em">'.G5_TIME_YMDHIS.'</p><p style="padding-top:1em"><a href="'.G5_URL.'" target="_blank">'.$config['cf_title'].'</a></p>', 1);
|
||||
|
||||
set_session('adm_auth_update', str_replace('-', '', G5_TIME_YMD));
|
||||
}
|
||||
|
||||
run_event('adm_auth_update', $mb);
|
||||
|
||||
goto_url('./auth_list.php?'.$qstr);
|
||||
?>
|
||||
|
||||
@@ -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);
|
||||
|
||||
// 게시판 폴더 전체 삭제
|
||||
|
||||
+29
-1
@@ -77,11 +77,18 @@ if (!isset($board['bo_mobile_subject'])) {
|
||||
}
|
||||
|
||||
if (!isset($board['bo_use_captcha'])) {
|
||||
sql_query(" ALTER TABLE `{$g5['board_table']}` ADD `bo_use_captcha` TINYINT NOT NULL DEFAULT '0' AFTER `bo_use_sns` ");
|
||||
sql_query(" ALTER TABLE `{$g5['board_table']}` ADD `bo_use_captcha` TINYINT NOT NULL DEFAULT '0' AFTER `bo_use_sns` ", false);
|
||||
}
|
||||
|
||||
if (!isset($board['bo_select_editor'])) {
|
||||
sql_query(" ALTER TABLE `{$g5['board_table']}` ADD `bo_select_editor` VARCHAR(50) NOT NULL DEFAULT '' AFTER `bo_use_dhtml_editor` ", false);
|
||||
}
|
||||
|
||||
run_event('adm_board_form_before', $board, $w);
|
||||
|
||||
$required = "";
|
||||
$readonly = "";
|
||||
$sound_only = "";
|
||||
if ($w == '') {
|
||||
|
||||
$html_title .= ' 생성';
|
||||
@@ -481,6 +488,27 @@ $pg_anchor = '<ul class="anchor">
|
||||
<label for="chk_all_use_dhtml_editor">전체적용</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="bo_select_editor">게시판 에디터 선택</label></th>
|
||||
<td>
|
||||
<?php echo help('게시판에 사용할 에디터를 설정합니다. 스킨에 따라 적용되지 않을 수 있습니다.') ?>
|
||||
<select name="bo_select_editor" id="bo_select_editor">
|
||||
<?php
|
||||
$arr = get_skin_dir('', G5_EDITOR_PATH);
|
||||
for ($i=0; $i<count($arr); $i++) {
|
||||
if ($i == 0) echo "<option value=\"\">기본환경설정의 에디터 사용</option>";
|
||||
echo "<option value=\"".$arr[$i]."\"".get_selected($board['bo_select_editor'], $arr[$i]).">".$arr[$i]."</option>\n";
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
<td class="td_grpset">
|
||||
<input type="checkbox" name="chk_grp_select_editor" value="1" id="chk_grp_select_editor">
|
||||
<label for="chk_grp_select_editor">그룹적용</label>
|
||||
<input type="checkbox" name="chk_all_select_editor" value="1" id="chk_all_select_editor">
|
||||
<label for="chk_all_select_editor">전체적용</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="bo_use_rss_view">RSS 보이기 사용</label></th>
|
||||
<td>
|
||||
|
||||
@@ -114,6 +114,7 @@ $sql_common = " gr_id = '{$gr_id}',
|
||||
bo_use_file_content = '{$_POST['bo_use_file_content']}',
|
||||
bo_use_secret = '{$_POST['bo_use_secret']}',
|
||||
bo_use_dhtml_editor = '{$_POST['bo_use_dhtml_editor']}',
|
||||
bo_select_editor = '{$_POST['bo_select_editor']}',
|
||||
bo_use_rss_view = '{$_POST['bo_use_rss_view']}',
|
||||
bo_use_good = '{$_POST['bo_use_good']}',
|
||||
bo_use_nogood = '{$_POST['bo_use_nogood']}',
|
||||
@@ -301,6 +302,7 @@ if (is_checked('chk_grp_use_sideview')) $grp_fields .= " , bo_use_sidevi
|
||||
if (is_checked('chk_grp_use_file_content')) $grp_fields .= " , bo_use_file_content = '{$bo_use_file_content}' ";
|
||||
if (is_checked('chk_grp_use_secret')) $grp_fields .= " , bo_use_secret = '{$bo_use_secret}' ";
|
||||
if (is_checked('chk_grp_use_dhtml_editor')) $grp_fields .= " , bo_use_dhtml_editor = '{$bo_use_dhtml_editor}' ";
|
||||
if (is_checked('chk_grp_select_editor')) $grp_fields .= " , bo_select_editor = '{$bo_select_editor}' ";
|
||||
if (is_checked('chk_grp_use_rss_view')) $grp_fields .= " , bo_use_rss_view = '{$bo_use_rss_view}' ";
|
||||
if (is_checked('chk_grp_use_good')) $grp_fields .= " , bo_use_good = '{$bo_use_good}' ";
|
||||
if (is_checked('chk_grp_use_nogood')) $grp_fields .= " , bo_use_nogood = '{$bo_use_nogood}' ";
|
||||
@@ -390,6 +392,7 @@ if (is_checked('chk_all_use_sideview')) $all_fields .= " , bo_use_sidevi
|
||||
if (is_checked('chk_all_use_file_content')) $all_fields .= " , bo_use_file_content = '{$bo_use_file_content}' ";
|
||||
if (is_checked('chk_all_use_secret')) $all_fields .= " , bo_use_secret = '{$bo_use_secret}' ";
|
||||
if (is_checked('chk_all_use_dhtml_editor')) $all_fields .= " , bo_use_dhtml_editor = '{$bo_use_dhtml_editor}' ";
|
||||
if (is_checked('chk_all_select_editor')) $all_fields .= " , bo_select_editor = '{$bo_select_editor}' ";
|
||||
if (is_checked('chk_all_use_rss_view')) $all_fields .= " , bo_use_rss_view = '{$bo_use_rss_view}' ";
|
||||
if (is_checked('chk_all_use_good')) $all_fields .= " , bo_use_good = '{$bo_use_good}' ";
|
||||
if (is_checked('chk_all_use_nogood')) $all_fields .= " , bo_use_nogood = '{$bo_use_nogood}' ";
|
||||
|
||||
@@ -69,5 +69,7 @@ if ($w == '') {
|
||||
alert('제대로 된 값이 넘어오지 않았습니다.');
|
||||
}
|
||||
|
||||
run_event('admin_boardgroup_form_update', $gr_id, $w);
|
||||
|
||||
goto_url('./boardgroup_form.php?w=u&gr_id='.$gr_id.'&'.$qstr);
|
||||
?>
|
||||
|
||||
@@ -10,19 +10,23 @@ auth_check($auth[$sub_menu], 'w');
|
||||
|
||||
check_admin_token();
|
||||
|
||||
$count = count($_POST['chk']);
|
||||
$post_chk = isset($_POST['chk']) ? (array) $_POST['chk'] : array();
|
||||
$post_group_id = isset($_POST['group_id']) ? (array) $_POST['group_id'] : array();
|
||||
$act_button = isset($_POST['act_button']) ? $_POST['act_button'] : '';
|
||||
|
||||
$count = count($post_chk);
|
||||
|
||||
if(!$count)
|
||||
alert($_POST['act_button'].'할 게시판그룹을 1개이상 선택해 주세요.');
|
||||
alert($act_button.'할 게시판그룹을 1개이상 선택해 주세요.');
|
||||
|
||||
for ($i=0; $i<$count; $i++)
|
||||
{
|
||||
$k = $_POST['chk'][$i];
|
||||
$gr_id = preg_replace('/[^a-z0-9_]/i', '', $_POST['group_id'][$k]);
|
||||
$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(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'] == '선택수정') {
|
||||
if($act_button == '선택수정') {
|
||||
$sql = " update {$g5['group_table']}
|
||||
set gr_subject = '{$gr_subject}',
|
||||
gr_device = '".sql_real_escape_string($_POST['gr_device'][$k])."',
|
||||
@@ -33,7 +37,7 @@ for ($i=0; $i<$count; $i++)
|
||||
if ($is_admin != 'super')
|
||||
$sql .= " and gr_admin = '{$gr_admin}' ";
|
||||
sql_query($sql);
|
||||
} else if($_POST['act_button'] == '선택삭제') {
|
||||
} else if($act_button == '선택삭제') {
|
||||
$row = sql_fetch(" select count(*) as cnt from {$g5['board_table']} where gr_id = '$gr_id' ");
|
||||
if ($row['cnt'])
|
||||
alert("이 그룹에 속한 게시판이 존재하여 게시판 그룹을 삭제할 수 없습니다.\\n\\n이 그룹에 속한 게시판을 먼저 삭제하여 주십시오.", './board_list.php?sfl=gr_id&stx='.$gr_id);
|
||||
@@ -46,5 +50,7 @@ for ($i=0; $i<$count; $i++)
|
||||
}
|
||||
}
|
||||
|
||||
run_event('admin_boardgroup_list_update', $act_button, $chk, $post_group_id, $qstr);
|
||||
|
||||
goto_url('./boardgroup_list.php?'.$qstr);
|
||||
?>
|
||||
|
||||
+42
-21
@@ -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";
|
||||
|
||||
@@ -1176,7 +1183,7 @@ include_once('_rewrite_config_form.php');
|
||||
<tr>
|
||||
<th scope="row"><label for="cf_kakao_rest_key">카카오 REST API 키</label></th>
|
||||
<td>
|
||||
<input type="text" name="cf_kakao_rest_key" value="<?php echo $config['cf_kakao_rest_key'] ?>" id="cf_kakao_rest_key" class="frm_input" size="40"> <a href="https://developers.kakao.com/apps/new" target="_blank" class="btn_frmline">앱 등록하기</a>
|
||||
<input type="text" name="cf_kakao_rest_key" value="<?php echo $config['cf_kakao_rest_key'] ?>" id="cf_kakao_rest_key" class="frm_input" size="40"> <a href="https://developers.kakao.com/product/kakaoLogin" target="_blank" class="btn_frmline">앱 등록하기</a>
|
||||
</td>
|
||||
<th scope="row"><label for="cf_kakao_client_secret">카카오 Client Secret</label></th>
|
||||
<td>
|
||||
@@ -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>
|
||||
@@ -1449,10 +1466,14 @@ if($config['cf_cert_use']) {
|
||||
|
||||
// kcp일 때
|
||||
if($config['cf_cert_hp'] == 'kcp') {
|
||||
if(PHP_INT_MAX == 2147483647) // 32-bit
|
||||
$exe = G5_KCPCERT_PATH . '/bin/ct_cli';
|
||||
else
|
||||
$exe = G5_KCPCERT_PATH . '/bin/ct_cli_x64';
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
|
||||
if(PHP_INT_MAX == 2147483647) // 32-bit
|
||||
$exe = G5_KCPCERT_PATH . '/bin/ct_cli';
|
||||
else
|
||||
$exe = G5_KCPCERT_PATH . '/bin/ct_cli_x64';
|
||||
} else {
|
||||
$exe = G5_KCPCERT_PATH . '/bin/ct_cli_exe.exe';
|
||||
}
|
||||
|
||||
echo module_exec_check($exe, 'ct_cli');
|
||||
}
|
||||
|
||||
@@ -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']}',
|
||||
|
||||
+48
-42
@@ -13,16 +13,16 @@ legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-inde
|
||||
label, input, button, select, img {vertical-align:middle}
|
||||
input, button {margin:0;padding:0;font-family:'Malgun Gothic',"맑은 고딕",AppleGothic,Dotum,"돋움", sans-serif;font-size:1em}
|
||||
button,input[type="submit"] {cursor:pointer}
|
||||
textarea, select {font-family:'Malgun Gothic',"맑은 고딕",AppleGothic,Dotum,"돋움", sans-serif;;font-size:1em}
|
||||
textarea, select {font-family:'Malgun Gothic',"맑은 고딕",AppleGothic,Dotum,"돋움", sans-serif;font-size:1em}
|
||||
select {margin:0}
|
||||
p {margin:0;padding:0;word-break:break-all}
|
||||
pre {overflow-x:scroll;font-size:1.1em}
|
||||
a:link, a:visited {color:#000;text-decoration:none}
|
||||
|
||||
* {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
h2{font-size: 1.083em;font-weight: bold;margin:10px 0}
|
||||
@@ -39,12 +39,12 @@ h2{font-size: 1.083em;font-weight: bold;margin:10px 0}
|
||||
#tnb{float:right;padding:10px}
|
||||
#tnb ul:after{display:block;visibility:hidden;clear:both;content:""}
|
||||
#tnb li{float:left;position:relative;margin-left:3px}
|
||||
#tnb a{color:#fff;;padding:0 10px;display:block;line-height:30px;}
|
||||
#tnb a{color:#fff;padding:0 10px;display:block;line-height:30px;}
|
||||
#tnb .tnb_service{border-radius:3px;background:#4e5eb7;color:#fff;padding:0 10px;text-align:left;height:30px;line-height:30px;}
|
||||
#tnb .tnb_service:hover{background:#5969c3}
|
||||
#tnb button{width:100px;;border:0;border-radius:3px;background:#4e5eb7;color:#fff;padding:0 30px 0 10px;text-align:left;height:30px;position:relative;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
|
||||
#tnb button span{display:block;text-indent:-999px;overflow:hidden;width:30px;border-radius:3px;height:30px;position:absolute;top:0;right:0;background:url(../img/op_btn.png) 50% 50% no-repeat #5969c3}
|
||||
#tnb button:hover {background:#5969c3}
|
||||
#tnb button{width:100px;border:0;border-radius:3px;background:#4e5eb7;color:#fff;padding:0 30px 0 10px;text-align:left;height:30px;position:relative;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}
|
||||
#tnb button span{display:block;text-indent:-999px;overflow:hidden;width:30px;border-radius:3px;height:30px;position:absolute;top:0;right:0;background:url(../img/op_btn.png) 50% 50% no-repeat #5969c3}
|
||||
#tnb button:hover {background:#5969c3}
|
||||
#tnb .tnb_mb_area{display:none;background:#5e6dc2;width:100px;position:absolute;padding:5px;margin-top:1px;}
|
||||
#tnb .tnb_mb_area a{padding:0}
|
||||
#tnb .tnb_mb_area li{float:none;}
|
||||
@@ -75,9 +75,9 @@ h2{font-size: 1.083em;font-weight: bold;margin:10px 0}
|
||||
#gnb .on .btn_op.menu-900{background:url(../img/menu-4.png) 50% 50% no-repeat #fff}
|
||||
#gnb .gnb_li button:hover{background-color:#f3f3f3}
|
||||
#gnb .gnb_oparea{display:none;position:absolute;top:0;left:50px;background:#fff;height:100%;width:170px;padding:20px;border-right:1px solid #dbdbdb;
|
||||
-webkit-box-shadow: 2px 0 2px rgba(150,150,150,100.1);
|
||||
-moz-box-shadow: 2px 0 2px rgba(150,150,150,0.1);
|
||||
box-shadow: 2px 0 2px rgba(150,150,150,0.1);}
|
||||
-webkit-box-shadow: 2px 0 2px rgba(150,150,150,100.1);
|
||||
-moz-box-shadow: 2px 0 2px rgba(150,150,150,0.1);
|
||||
box-shadow: 2px 0 2px rgba(150,150,150,0.1);}
|
||||
#gnb .on .gnb_oparea{display:block}
|
||||
#gnb .gnb_oparea h3{margin-bottom:10px;line-height:18px;font-size:1.17em}
|
||||
#gnb .gnb_oparea li{line-height:28px}
|
||||
@@ -181,10 +181,10 @@ a.btn_submit{background:#ff4081;color:#fff}
|
||||
.btn_add01 button {margin:0}
|
||||
|
||||
|
||||
.td_mng a.btn,.td_mng a{display:inline-block;height:26px;line-height:26px;border:0;;border-radius:3px;padding:0 8px;margin:1px;font-weight:normal}
|
||||
.td_mng button,.td_mng button.btn{height:26px;border:0;border-radius:3px;padding:0 8px;margin:1px;border:0;;font-weight:normal}
|
||||
.btn{height:30px;border:0;;border-radius:5px;padding:0 10px;font-weight:bold;font-size:1.09em;vertical-align:middle}
|
||||
a.btn{display:inline-block;height:30px;line-height:30px;border:0;;border-radius:5px;padding:0 10px;font-weight:bold;font-size:1.09em;;vertical-align:middle}
|
||||
.td_mng a.btn, .td_mng a{display:inline-block;height:26px;line-height:26px;border:0;border-radius:3px;padding:0 8px;margin:1px;font-weight:normal}
|
||||
.td_mng button, .td_mng button.btn{height:26px;border:0;border-radius:3px;padding:0 8px;margin:1px;font-weight:normal}
|
||||
.btn{height:30px;border:0;border-radius:5px;padding:0 10px;font-weight:bold;font-size:1.09em;vertical-align:middle}
|
||||
a.btn{display:inline-block;height:30px;line-height:30px;border:0;border-radius:5px;padding:0 10px;font-weight:bold;font-size:1.09em;vertical-align:middle}
|
||||
.btn_submit{background:#ff4081;color:#fff}
|
||||
a.btn_submit{background:#ff4081;color:#fff}
|
||||
.btn_submit:hover{background:#ff1464}
|
||||
@@ -195,19 +195,21 @@ a.btn_submit{background:#ff4081;color:#fff}
|
||||
.btn_03,a.btn_03{background:#3f51b5;color:#fff;}
|
||||
|
||||
.btn_frmline{display:inline-block;background:#9eacc6;color:#fff;height:35px;border:0;border-radius:5px;padding:0 10px}
|
||||
a.btn_frmline{display:inline-block;background:#9eacc6;color:#fff;height:35px;line-height:33px;border-radius:5px;padding:0 10px;text-decoration:none !important}
|
||||
a.btn_frmline{display:inline-block;background:#9eacc6;color:#fff;height:35px;line-height:33px;border-radius:5px;padding:0 10px;text-decoration:none !important}
|
||||
.btn_ov01{display:inline-block;line-height:30px;height:30px;font-size:0.92em;vertical-align:top}
|
||||
.btn_ov01:after{display:block;visibility:hidden;clear :both;content:""}
|
||||
.btn_ov01 .ov_txt{float:left;background:#9eacc6;color:#fff;border-radius:5px 0 0 5px;padding:0 5px}
|
||||
.btn_ov01 .ov_num{float:left;background:#ededed;color:#666;border-radius:0 5px 5px 0;padding:0 5px}
|
||||
a.btn_ov02,a.ov_listall{display:inline-block;line-height:30px;height:30px;font-size:0.92em;background:#565e8c;color:#fff;vertical-align:top;border-radius:5px;padding:0 7px }
|
||||
a.btn_ov02:hover,a.ov_listall:hover{background:#3f51b5}
|
||||
|
||||
.local_ov01.local_ov [data-tooltip-text]:hover {position:relative}
|
||||
.local_ov01.local_ov [data-tooltip-text]:hover:after{line-height:20px;background-color:#000;background-color:rgba(0,0,0,0.8);-webkit-box-shadow:0 0 3px 1px rgba(50,50,50,0.4);-moz-box-shadow:0 0 3px 1px rgba(50,50,50,0.4);box-shadow:0 0 3px 1px rgba(50,50,50,0.4);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;color:#FFF;font-size:11px;content:attr(data-tooltip-text);white-space: pre;margin-bottom:10px;top:130%;left:0;padding:7px 12px;position:absolute;max-width:500px;word-wrap:break-word;z-index:9999}
|
||||
|
||||
/*form*/
|
||||
.sound_only {display:inline-block !important;position:absolute;top:0;left:0;margin:0 !important;padding:0 !important;width:1px !important;height:1px !important;font-size:0;line-height:0;border:0 !important;overflow:hidden !important}
|
||||
.frm_input{height:35px;line-height:32px;border:1px solid #d5d5d5;}
|
||||
.frm_input_full{width:100%}
|
||||
.required{background:url('../img/wrest.gif') top right no-repeat #fff !important}
|
||||
.required{background:url('../img/wrest.gif') top right no-repeat #fff !important}
|
||||
select{height:35px;line-height:32px;border:1px solid #d5d5d5;}
|
||||
textarea{width:100%;border:1px solid #d5d5d5;min-height:80px}
|
||||
legend {position:absolute;width:0;height:0;font-size:0;line-height:0;text-indent:-9999em;border:0;overflow:hidden}
|
||||
@@ -232,7 +234,7 @@ legend {position:absolute;width:0;height:0;font-size:0;line-height:0;text-indent
|
||||
.color_st03{background:#b668d0;color:#fff;display:inline-block;padding:0 3px;font-size:0.92em;line-height:18px}
|
||||
.color_st04{background:#ffa700;color:#fff;display:inline-block;padding:0 3px;font-size:0.92em;line-height:18px}
|
||||
.color_st05{background:#688fef;color:#fff;display:inline-block;padding:0 3px;font-size:0.92em;line-height:18px}
|
||||
.color_st06{;color:#ff0000;border:1px solid #ff0000;display:inline-block;padding:0 3px;font-size:0.92em;line-height:18px}
|
||||
.color_st06{color:#ff0000;border:1px solid #ff0000;display:inline-block;padding:0 3px;font-size:0.92em;line-height:18px}
|
||||
|
||||
/* 폼 안내글 */
|
||||
.frm_info {display:block;padding:0 0 5px;color:#5b747e}
|
||||
@@ -242,7 +244,7 @@ legend {position:absolute;width:0;height:0;font-size:0;line-height:0;text-indent
|
||||
.anchor:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.anchor li{float:left;margin-left:-1px;list-style:none}
|
||||
.anchor a {display:inline-block;padding:5px 10px;border:1px solid #c8ced1;background:#d6dde1;text-decoration:none}
|
||||
.anchor .selected{background:#3f51b5}
|
||||
.anchor .selected{background:#3f51b5}
|
||||
|
||||
|
||||
|
||||
@@ -261,22 +263,22 @@ border-bottom: 5px solid black;}
|
||||
|
||||
/* 페이지 내 검색 */
|
||||
.local_sch{}
|
||||
.local_sch:after ,.local_sch div:after{display:block;visibility:hidden;clear:both;content:""}
|
||||
.local_sch .btn_sch{width:30px;height:30px;border:0;padding:0;float:left;background:url(../img/sch_btn.png) no-repeat 50% 50%;border:1px solid #dcdcdc;border-left:0;text-indent:-999px;overflow:hidden}
|
||||
.local_sch .btn_sch2{width:35px;height:35px;border:0;padding:0;background:url(../img/sch_btn.png) no-repeat 50% 50% #eee;border:1px solid #dcdcdc;text-indent:-999px;overflow:hidden}
|
||||
.local_sch:after, .local_sch div:after{display:block;visibility:hidden;clear:both;content:""}
|
||||
.local_sch .btn_sch{width:30px;height:30px;border:1px solid #dcdcdc;border-left:0;padding:0;float:left;background:url(../img/sch_btn.png) no-repeat 50% 50%;text-indent:-999px;overflow:hidden}
|
||||
.local_sch .btn_sch2{width:35px;height:35px;border:1px solid #dcdcdc;padding:0;background:url(../img/sch_btn.png) no-repeat 50% 50% #eee;text-indent:-999px;overflow:hidden}
|
||||
|
||||
.local_sch .sch_input{height:30px;border:1px solid #dcdcdc;border-right:0;;padding:0 5px;float:left;}
|
||||
.local_sch .sch_input{height:30px;border:1px solid #dcdcdc;border-right:0;padding:0 5px;float:left;}
|
||||
.local_sch select{height:30px;margin-right:3px;border:1px solid #dcdcdc}
|
||||
.local_sch01{margin: 10px 0;}
|
||||
.local_sch02{}
|
||||
.local_sch01 .frm_input{height:30px;border:1px solid #dcdcdc;padding:0 5px;}
|
||||
.local_sch01 .btn_submit{width:30px;height:30px;border:0;padding:0;background:url(../img/sch_btn.png) no-repeat 50% 50% #eee;border:1px solid #dcdcdc;text-indent:-999px;overflow:hidden}
|
||||
.local_sch03{;padding:5px 15px;background:#e9ebf9;margin:10px 0}
|
||||
.local_sch01 .btn_submit{width:30px;height:30px;padding:0;background:url(../img/sch_btn.png) no-repeat 50% 50% #eee;border:1px solid #dcdcdc;text-indent:-999px;overflow:hidden}
|
||||
.local_sch03{padding:5px 15px;background:#e9ebf9;margin:10px 0}
|
||||
.local_sch div{margin:5px 0;}
|
||||
.local_sch03 strong{display:inline-block;width:70px;}
|
||||
.local_sch03 label{margin-right:5px;display:inline-block}
|
||||
.local_sch03 label{margin-right:5px;display:inline-block}
|
||||
.local_sch03 button{height:30px;padding:0 5px;border:0;background:#9eacc6;color:#fff;}
|
||||
.local_sch03 .btn_submit{height:30px;padding:0 5px;border:0;;color:#fff;}
|
||||
.local_sch03 .btn_submit{height:30px;padding:0 5px;border:0;color:#fff;}
|
||||
.local_sch03 .frm_input{height:30px;border:1px solid #dcdcdc;padding:0 5px;}
|
||||
/* 페이지 내 실행 */
|
||||
.local_cmd {min-width:960px}
|
||||
@@ -303,7 +305,7 @@ border-bottom: 5px solid black;}
|
||||
/* 페이지 내 카운트 */
|
||||
.local_ov {min-width:960px}
|
||||
|
||||
.local_ov01 {position:relative;;margin: 10px 0;}
|
||||
.local_ov01 {position:relative;margin: 10px 0;}
|
||||
.local_ov01 .ov_a {display:inline-block;margin:0 0 0 5px;padding:0 0 0 10px;border-left:1px solid #ccc;color:#ff3061}
|
||||
|
||||
|
||||
@@ -528,6 +530,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}
|
||||
|
||||
@@ -620,7 +626,7 @@ td.td_grpset {width:160px;border-left:1px solid #e9ecee;text-align:center}
|
||||
-moz-box-shadow: 2px 2px 3px 0px rgba(0,0,0,0.2);
|
||||
box-shadow: 2px 2px 3px 0px rgba(0,0,0,0.2);}
|
||||
.sv_wrap .sv:before{content: "";position: absolute;top: -6px;left: 15px;width: 0;height: 0;border-style: solid;border-width: 0 6px 6px 6px;border-color: transparent transparent #333 transparent;}
|
||||
.sv_wrap .sv a {display:inline-block;margin:0;padding:0 10px;line-height:30px;width:100px;font-weight:normal;color:#bbb }
|
||||
.sv_wrap .sv a {display:inline-block;margin:0;padding:0 10px;line-height:30px;width:100px;font-weight:normal;color:#bbb }
|
||||
.sv_wrap .sv a:hover{background:#000;color:#fff}
|
||||
.sv_member{color:#333}
|
||||
.sv_on {display:block !important;position:absolute;top:23px;left:0px;width:auto;height:auto}
|
||||
@@ -704,15 +710,15 @@ box-shadow: 2px 2px 3px 0px rgba(0,0,0,0.2);}
|
||||
/* 캡챠 */
|
||||
#captcha {display:inline-block;position:relative}
|
||||
#captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden;}
|
||||
#captcha #captcha_img {;height:40px;border:1px solid #898989;vertical-align:top;padding:0;margin:0}
|
||||
#captcha #captcha_mp3 {;margin:0;padding:0;width:40px;height:40px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../../img/captcha2.png') no-repeat;text-indent:-999px;border-radius:3px}
|
||||
#captcha #captcha_reload {margin:0;padding:0;width:40px;height:40px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../../img/captcha2.png') no-repeat 0 -40px;text-indent:-999px;border-radius:3px}
|
||||
#captcha #captcha_img {height:40px;border:1px solid #898989;vertical-align:top;padding:0;margin:0}
|
||||
#captcha #captcha_mp3 {margin:0;padding:0;width:40px;height:40px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../../img/captcha2.png') no-repeat;text-indent:-999px;border-radius:3px}
|
||||
#captcha #captcha_reload {margin:0;padding:0;width:40px;height:40px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../../img/captcha2.png') no-repeat 0 -40px;text-indent:-999px;border-radius:3px}
|
||||
#captcha #captcha_key {margin:0 0 0 3px;padding:0 5px;width:90px;height:40px;border:1px solid #ccc;background:#fff;font-size:1.333em;font-weight:bold;text-align:center;border-radius:3px;vertical-align:top}
|
||||
#captcha #captcha_info {display:block;margin:5px 0 0;font-size:0.95em;letter-spacing:-0.1em}
|
||||
|
||||
/*테마*/
|
||||
.theme_p{margin:0 0 10px }
|
||||
#theme_list{padding:0;margin:0;list-style:none; width: 1000px;position:relative}
|
||||
#theme_list{padding:0;margin:0;list-style:none; width: 1000px;position:relative}
|
||||
#theme_list:after{display:block;visibility:hidden;clear:both;content:""}
|
||||
#theme_list li{margin:10px 10px 10px 0;float:left}
|
||||
#theme_list li:after{display:block;visibility:hidden;clear:both;content:""}
|
||||
@@ -720,34 +726,34 @@ box-shadow: 2px 2px 3px 0px rgba(0,0,0,0.2);}
|
||||
#theme_list li .tmli_if>img{width:300px;height:225px;}
|
||||
#theme_list li .tmli_if:hover>img{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter: alpha(opacity=50);-moz-opacity:0.5;-khtml-opacity: 0.5;opacity: 0.5;}
|
||||
#theme_list li .tmli_tit{position:relative; border-top: 1px solid #d1dee2; background: #e5ecef;}
|
||||
#theme_list li .tmli_tit p{height:40px;line-height:40px;padding:0 10px 0;font-weight:bold;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
|
||||
#theme_list li .tmli_tit p{height:40px;line-height:40px;padding:0 10px 0;font-weight:bold;text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
|
||||
#theme_list li .tmli_tit button.tmli_dt{position:absolute;top:8px;right:10px;padding:5px;background:#111;color:#fff;display:none;border:none}
|
||||
#theme_list li .tmli_if:hover button.tmli_dt{display:block}
|
||||
#theme_list li .theme_sl{float:left;border:none;margin-top:5px;padding:0 5px;height:26px;background:#999;color:#fff}
|
||||
#theme_list li .theme_sl:hover{background:#ff3061}
|
||||
#theme_list li .theme_deactive{margin-left:4px}
|
||||
#theme_list li .theme_sl_use{background:#ff3061;line-height:26px}
|
||||
#theme_list li .theme_pr{float:right;margin-top:5px;padding:0 5px;height:26px;line-height:24px; border: 1px solid #ccc; background: #fafafa; }
|
||||
#theme_list li .theme_preview{ float: right; margin-top: 5px; padding:0 5px;height:26px; border: 1px solid #ccc; background: #fafafa; margin-right:3px}
|
||||
#theme_list li .theme_pr{float:right;margin-top:5px;padding:0 5px;height:26px;line-height:24px; border: 1px solid #ccc; background: #fafafa; }
|
||||
#theme_list li .theme_preview{ float: right; margin-top: 5px; padding:0 5px;height:26px; border: 1px solid #ccc; background: #fafafa; margin-right:3px}
|
||||
|
||||
|
||||
#theme_detail{position:fixed;top:50%;height:540px;width:900px;margin-top:-271px;background:#fff;background:#f3f3f3;border:1px solid #000;
|
||||
-webkit-box-shadow: 1px 2px 5px rgba(150,150,150,100.5);
|
||||
-moz-box-shadow: 1px 2px 5px rgba(150,150,150,0.5);
|
||||
box-shadow: 1px 2px 5px rgba(150,150,150,0.5);z-index:1000}
|
||||
-webkit-box-shadow: 1px 2px 5px rgba(150,150,150,100.5);
|
||||
-moz-box-shadow: 1px 2px 5px rgba(150,150,150,0.5);
|
||||
box-shadow: 1px 2px 5px rgba(150,150,150,0.5);z-index:1000}
|
||||
#theme_detail:after{display:block;visibility:hidden;clear:both;content:""}
|
||||
#theme_detail h2{font-size:1.25em;background:#fff;padding:0 15px;line-height:40px;border-bottom:1px solid #d8d8d8;margin:0}
|
||||
.theme_dt_img{float:left;padding:20px}
|
||||
.theme_dt_img img{border:1px solid #aaa;}
|
||||
.theme_dt_if{float:left;width:235px;padding:20px 0}
|
||||
.theme_dt_if table{width:100%;border-collapse:collapse;;margin:15px 0 0 ;font-size:0.92em}
|
||||
.theme_dt_if table{width:100%;border-collapse:collapse;margin:15px 0 0 ;font-size:0.92em}
|
||||
.theme_dt_if table th{padding:5px;background:#fff;border-bottom:1px solid #f3f3f3;vertical-align:top;color:#3f51b5}
|
||||
.theme_dt_if table td{padding:5px;background:#fff;border-bottom:1px solid #f3f3f3;line-height:1.56em}
|
||||
.theme_dt_if table td a{text-decoration:underline}
|
||||
.theme_dt_if p{line-height:1.5em}
|
||||
.if_p_bg{display:inline-block;width:20px;height:1px ;background:#000;margin:30px 0 10px}
|
||||
#theme_detail .theme_dt_btn{position:absolute;top:0px;right:0px;background:#fff;}
|
||||
#theme_detail .theme_dt_btn .close_btn{background:url('../img/close.png') 50% 50% no-repeat;width:40px;height:40px;overflow:hidden;border:0;text-indent:-99999px;border-left:1px solid #d8d8d8}
|
||||
#theme_detail .theme_dt_btn .close_btn{border:0;border-left:1px solid #d8d8d8;background:url('../img/close.png') 50% 50% no-repeat;width:40px;height:40px;overflow:hidden;text-indent:-99999px}
|
||||
|
||||
#theme_detail .theme_dt_btn .close_btn:hover{background-color:#eceffc}
|
||||
#theme_detail .theme_dt_btn .btn_03{line-height:28px;display:inline-block;vertical-align:top;margin-top:6px;padding:0 6px;border-radius:5px}
|
||||
|
||||
+2
-2
@@ -70,8 +70,8 @@ $colspan = 16;
|
||||
<div class="local_ov01 local_ov">
|
||||
<?php echo $listall ?>
|
||||
<span class="btn_ov01"><span class="ov_txt">총회원수 </span><span class="ov_num"> <?php echo number_format($total_count) ?>명 </span></span>
|
||||
<a href="?sst=mb_intercept_date&sod=desc&sfl=<?php echo $sfl ?>&stx=<?php echo $stx ?>" class="btn_ov01"> <span class="ov_txt">차단 </span><span class="ov_num"><?php echo number_format($intercept_count) ?>명</span></a>
|
||||
<a href="?sst=mb_leave_date&sod=desc&sfl=<?php echo $sfl ?>&stx=<?php echo $stx ?>" class="btn_ov01"> <span class="ov_txt">탈퇴 </span><span class="ov_num"><?php echo number_format($leave_count) ?>명</span></a>
|
||||
<a href="?sst=mb_intercept_date&sod=desc&sfl=<?php echo $sfl ?>&stx=<?php echo $stx ?>" class="btn_ov01" data-tooltip-text="차단된 순으로 정렬합니다.
전체 데이터를 출력합니다."> <span class="ov_txt">차단 </span><span class="ov_num"><?php echo number_format($intercept_count) ?>명</span></a>
|
||||
<a href="?sst=mb_leave_date&sod=desc&sfl=<?php echo $sfl ?>&stx=<?php echo $stx ?>" class="btn_ov01" data-tooltip-text="탈퇴된 순으로 정렬합니다.
전체 데이터를 출력합니다."> <span class="ov_txt">탈퇴 </span><span class="ov_num"><?php echo number_format($leave_count) ?>명</span></a>
|
||||
</div>
|
||||
|
||||
<form id="fsearch" name="fsearch" class="local_sch01 local_sch" method="get">
|
||||
|
||||
+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>";
|
||||
|
||||
|
||||
@@ -68,5 +68,7 @@ for ($i=0; $i<$count; $i++)
|
||||
sql_query($sql);
|
||||
}
|
||||
|
||||
run_event('admin_menu_list_update');
|
||||
|
||||
goto_url('./menu_list.php');
|
||||
?>
|
||||
|
||||
+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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -4,6 +4,7 @@ include_once("./_common.php");
|
||||
|
||||
$spage_size = 20;
|
||||
$colspan = 10;
|
||||
$re_text = '';
|
||||
|
||||
$st = isset($st) ? strip_tags($st) : '';
|
||||
$ssv = isset($ssv) ? strip_tags($ssv) : '';
|
||||
@@ -60,8 +61,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 +105,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) { ?>
|
||||
|
||||
@@ -13,12 +13,12 @@ $g5['title'] = "휴대폰번호 관리";
|
||||
|
||||
if ($page < 1) $page = 1;
|
||||
|
||||
$bg_no = isset($bg_no) ? (int) $bg_no : 0;
|
||||
$bg_no = isset($bg_no) ? preg_replace('/[^0-9]/i', '', $bg_no) : '';
|
||||
$st = isset($st) ? preg_replace('/[^a-z0-9]/i', '', $st) : '';
|
||||
|
||||
$sql_korean = $sql_group = $sql_search = $sql_no_hp = '';
|
||||
|
||||
if (is_numeric($bg_no))
|
||||
if (is_numeric($bg_no) && $bg_no)
|
||||
$sql_group = " and bg_no='$bg_no' ";
|
||||
else
|
||||
$sql_group = "";
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -12,13 +12,13 @@ if(!in_array($theme, $theme_dir))
|
||||
die('선택하신 테마가 설치되어 있지 않습니다.');
|
||||
|
||||
$info = get_theme_info($theme);
|
||||
$name = get_text($info['theme_name']);
|
||||
|
||||
if($info['screenshot'])
|
||||
$screenshot = '<img src="'.$info['screenshot'].'" alt="'.$name.'">';
|
||||
else
|
||||
$screenshot = '<img src="'.G5_ADMIN_URL.'/img/theme_img.jpg" alt="">';
|
||||
|
||||
$name = get_text($info['theme_name']);
|
||||
if($info['theme_uri']) {
|
||||
$name = '<a href="'.set_http($info['theme_uri']).'" target="_blank" class="thdt_home">'.$name.'</a>';
|
||||
}
|
||||
|
||||
@@ -11,6 +11,11 @@ include_once(G5_PLUGIN_PATH.'/jquery-ui/datepicker.php');
|
||||
|
||||
$colspan = 6;
|
||||
$listall = '<a href="'.$_SERVER['SCRIPT_NAME'].'">처음</a>'; //페이지 처음으로 (초기화용도)
|
||||
$sql_search = '';
|
||||
|
||||
if(isset($sfl) && $sfl && !in_array($sfl, array('vi_ip','vi_date','vi_time','vi_referer','vi_agent','vi_browser','vi_os','vi_device')) ) {
|
||||
$sfl = '';
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="local_sch local_sch01">
|
||||
|
||||
@@ -53,7 +53,7 @@ if($config['cf_leave_day'] > 0) {
|
||||
}
|
||||
|
||||
// 음성 캡챠 파일 삭제
|
||||
$captcha_mp3 = glob(G5_PATH.'/data/cache/kcaptcha-*.mp3');
|
||||
$captcha_mp3 = glob(G5_DATA_PATH.'/cache/kcaptcha-*.mp3');
|
||||
if($captcha_mp3 && is_array($captcha_mp3)) {
|
||||
foreach ($captcha_mp3 as $file) {
|
||||
if (filemtime($file) + 86400 < G5_SERVER_TIME) {
|
||||
|
||||
+7
-5
@@ -100,7 +100,8 @@ if(preg_match("/[\xA1-\xFE][\xA1-\xFE]/", $file['bf_source'])){
|
||||
}
|
||||
*/
|
||||
|
||||
$original = urlencode($file['bf_source']);
|
||||
//$original = urlencode($file['bf_source']);
|
||||
$original = rawurlencode($file['bf_source']);
|
||||
|
||||
@include_once($board_skin_path.'/download.tail.skin.php');
|
||||
|
||||
@@ -108,17 +109,18 @@ run_event('download_file_header', $file, $file_exist_check);
|
||||
|
||||
if(preg_match("/msie/i", $_SERVER['HTTP_USER_AGENT']) && preg_match("/5\.5/", $_SERVER['HTTP_USER_AGENT'])) {
|
||||
header("content-type: doesn/matter");
|
||||
header("content-length: ".filesize("$filepath"));
|
||||
header("content-length: ".filesize($filepath));
|
||||
header("content-disposition: attachment; filename=\"$original\"");
|
||||
header("content-transfer-encoding: binary");
|
||||
} else if (preg_match("/Firefox/i", $_SERVER['HTTP_USER_AGENT'])){
|
||||
header("content-type: file/unknown");
|
||||
header("content-length: ".filesize("$filepath"));
|
||||
header("content-disposition: attachment; filename=\"".basename($file['bf_source'])."\"");
|
||||
header("content-length: ".filesize($filepath));
|
||||
//header("content-disposition: attachment; filename=\"".basename($file['bf_source'])."\"");
|
||||
header("content-disposition: attachment; filename=\"".$original."\"");
|
||||
header("content-description: php generated data");
|
||||
} else {
|
||||
header("content-type: file/unknown");
|
||||
header("content-length: ".filesize("$filepath"));
|
||||
header("content-length: ".filesize($filepath));
|
||||
header("content-disposition: attachment; filename=\"$original\"");
|
||||
header("content-description: php generated data");
|
||||
}
|
||||
|
||||
+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">
|
||||
|
||||
@@ -20,7 +20,7 @@ run_event('memo_form_update_before', $recv_list);
|
||||
for ($i=0; $i<count($recv_list); $i++) {
|
||||
$row = sql_fetch(" select mb_id, mb_nick, mb_open, mb_leave_date, mb_intercept_date from {$g5['member_table']} where mb_id = '{$recv_list[$i]}' ");
|
||||
if ($row) {
|
||||
if ($is_admin || ($row['mb_open'] && (!$row['mb_leave_date'] || !$row['mb_intercept_date']))) {
|
||||
if ($is_admin || ($row['mb_open'] && (!$row['mb_leave_date'] && !$row['mb_intercept_date']))) {
|
||||
$member_list['id'][] = $row['mb_id'];
|
||||
$member_list['nick'][] = $row['mb_nick'];
|
||||
} else {
|
||||
|
||||
+12
-2
@@ -27,6 +27,8 @@ $sql = " select distinct wr_num from $write_table where wr_id in ({$wr_id_list})
|
||||
$result = sql_query($sql);
|
||||
while ($row = sql_fetch_array($result))
|
||||
{
|
||||
$save[$cnt]['wr_contents'] = array();
|
||||
|
||||
$wr_num = $row['wr_num'];
|
||||
for ($i=0; $i<count($_POST['chk_bo_table']); $i++)
|
||||
{
|
||||
@@ -52,6 +54,8 @@ while ($row = sql_fetch_array($result))
|
||||
$result2 = sql_query($sql2);
|
||||
while ($row2 = sql_fetch_array($result2))
|
||||
{
|
||||
$save[$cnt]['wr_contents'][] = $row2['wr_content'];
|
||||
|
||||
$nick = cut_str($member['mb_nick'], $config['cf_cut_name']);
|
||||
if (!$row2['wr_is_comment'] && $config['cf_use_copy_log']) {
|
||||
if(strstr($row2['wr_option'], 'html')) {
|
||||
@@ -192,6 +196,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);
|
||||
}
|
||||
@@ -208,16 +214,20 @@ if ($sw == 'move')
|
||||
{
|
||||
if( isset($save[$i]['bf_file']) && $save[$i]['bf_file'] ){
|
||||
for ($k=0; $k<count($save[$i]['bf_file']); $k++) {
|
||||
$del_file = $save[$i]['bf_file'][$k];
|
||||
$del_file = run_replace('delete_file_path', clean_relative_paths($save[$i]['bf_file'][$k]), $save[$i]);
|
||||
|
||||
if ( is_file($del_file) && file_exists($del_file) ){
|
||||
@unlink($del_file);
|
||||
}
|
||||
|
||||
|
||||
// 썸네일 파일 삭제, 먼지손 님 코드 제안
|
||||
delete_board_thumbnail($bo_table, basename($save[$i]['bf_file'][$k]));
|
||||
}
|
||||
}
|
||||
|
||||
for ($k=0; $k<count($save[$i]['wr_contents']); $k++){
|
||||
delete_editor_thumbnail($save[$i]['wr_contents'][$k]);
|
||||
}
|
||||
|
||||
sql_query(" delete from $write_table where wr_parent = '{$save[$i]['wr_id']}' ");
|
||||
sql_query(" delete from {$g5['board_new_table']} where bo_table = '$bo_table' and wr_id = '{$save[$i]['wr_id']}' ");
|
||||
|
||||
@@ -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';
|
||||
|
||||
+8
-3
@@ -22,21 +22,26 @@ if($is_guest) {
|
||||
|
||||
$filepath = G5_DATA_PATH.'/qa/'.$file['qa_file'.$no];
|
||||
$filepath = addslashes($filepath);
|
||||
if (!is_file($filepath) || !file_exists($filepath))
|
||||
$file_exist_check = (!is_file($filepath) || !file_exists($filepath)) ? false : true;
|
||||
|
||||
if ( false === run_replace('qa_download_file_exist_check', $file_exist_check, $file) ){
|
||||
alert('파일이 존재하지 않습니다.');
|
||||
}
|
||||
|
||||
$g5['title'] = '다운로드 > '.conv_subject($file['qa_subject'], 255);
|
||||
|
||||
run_event('qa_download_file_header', $file, $file_exist_check);
|
||||
|
||||
$original = urlencode($file['qa_source'.$no]);
|
||||
|
||||
if(preg_match("/msie/i", $_SERVER['HTTP_USER_AGENT']) && preg_match("/5\.5/", $_SERVER['HTTP_USER_AGENT'])) {
|
||||
header("content-type: doesn/matter");
|
||||
header("content-length: ".filesize("$filepath"));
|
||||
header("content-length: ".filesize($filepath));
|
||||
header("content-disposition: attachment; filename=\"$original\"");
|
||||
header("content-transfer-encoding: binary");
|
||||
} else {
|
||||
header("content-type: file/unknown");
|
||||
header("content-length: ".filesize("$filepath"));
|
||||
header("content-length: ".filesize($filepath));
|
||||
header("content-disposition: attachment; filename=\"$original\"");
|
||||
header("content-description: php generated data");
|
||||
}
|
||||
|
||||
+2
-1
@@ -155,7 +155,8 @@ if(is_file($skin_file)) {
|
||||
|
||||
for ($i=1; $i<=2; $i++) {
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $view['qa_file'.$i])) {
|
||||
$view['img_file'][] = '<a href="'.G5_BBS_URL.'/view_image.php?fn='.urlencode('/data/qa/'.$view['qa_file'.$i]).'" target="_blank" class="view_image"><img src="'.G5_DATA_URL.'/qa/'.$view['qa_file'.$i].'"></a>';
|
||||
$attr_href = run_replace('thumb_view_image_href', G5_BBS_URL.'/view_image.php?fn='.urlencode('/'.G5_DATA_DIR.'/qa/'.$view['qa_file'.$i]), '/'.G5_DATA_DIR.'/qa/'.$view['qa_file'.$i], '', '', '', '');
|
||||
$view['img_file'][] = '<a href="'.$attr_href.'" target="_blank" class="view_image"><img src="'.G5_DATA_URL.'/qa/'.$view['qa_file'.$i].'"></a>';
|
||||
$view['img_count']++;
|
||||
continue;
|
||||
}
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
|
||||
<item>
|
||||
<title><?php echo specialchars_replace($row['wr_subject']); ?></title>
|
||||
<link><?php echo specialchars_replace(get_pretty_url($bo_table, $wr_id)); ?></link>
|
||||
<link><?php echo specialchars_replace(get_pretty_url($bo_table, $row['wr_id'])); ?></link>
|
||||
<description><![CDATA[<?php echo $file ?><?php echo conv_content($row['wr_content'], $html) ?>]]></description>
|
||||
<dc:creator><?php echo specialchars_replace($row['wr_name']) ?></dc:creator>
|
||||
<?php
|
||||
|
||||
@@ -6,6 +6,10 @@ include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$filename = preg_replace('/[^A-Za-z0-9 _ .\-\/]/', '', $_GET['fn']);
|
||||
|
||||
if(function_exists('clean_relative_paths')){
|
||||
$filename = clean_relative_paths($filename);
|
||||
}
|
||||
|
||||
$extension = pathinfo($filename, PATHINFO_EXTENSION);
|
||||
|
||||
if ( ! preg_match('/(jpg|jpeg|png|gif|bmp)$/i', $extension) ){
|
||||
|
||||
+103
-100
@@ -436,7 +436,7 @@ if (!$group['gr_use_access'] && $board['bo_read_level'] < 2 && !$secret) {
|
||||
|
||||
// 파일개수 체크
|
||||
$file_count = 0;
|
||||
$upload_count = count($_FILES['bf_file']['name']);
|
||||
$upload_count = (isset($_FILES['bf_file']['name']) && is_array($_FILES['bf_file']['name'])) ? count($_FILES['bf_file']['name']) : 0;
|
||||
|
||||
for ($i=0; $i<$upload_count; $i++) {
|
||||
if($_FILES['bf_file']['name'][$i] && is_uploaded_file($_FILES['bf_file']['tmp_name'][$i]))
|
||||
@@ -461,116 +461,119 @@ $chars_array = array_merge(range(0,9), range('a','z'), range('A','Z'));
|
||||
// 가변 파일 업로드
|
||||
$file_upload_msg = '';
|
||||
$upload = array();
|
||||
for ($i=0; $i<count($_FILES['bf_file']['name']); $i++) {
|
||||
$upload[$i]['file'] = '';
|
||||
$upload[$i]['source'] = '';
|
||||
$upload[$i]['filesize'] = 0;
|
||||
$upload[$i]['image'] = array();
|
||||
$upload[$i]['image'][0] = '';
|
||||
$upload[$i]['image'][1] = '';
|
||||
$upload[$i]['image'][2] = '';
|
||||
$upload[$i]['fileurl'] = '';
|
||||
$upload[$i]['thumburl'] = '';
|
||||
$upload[$i]['storage'] = '';
|
||||
|
||||
// 삭제에 체크가 되어있다면 파일을 삭제합니다.
|
||||
if (isset($_POST['bf_file_del'][$i]) && $_POST['bf_file_del'][$i]) {
|
||||
$upload[$i]['del_check'] = true;
|
||||
if(isset($_FILES['bf_file']['name']) && is_array($_FILES['bf_file']['name'])) {
|
||||
for ($i=0; $i<count($_FILES['bf_file']['name']); $i++) {
|
||||
$upload[$i]['file'] = '';
|
||||
$upload[$i]['source'] = '';
|
||||
$upload[$i]['filesize'] = 0;
|
||||
$upload[$i]['image'] = array();
|
||||
$upload[$i]['image'][0] = 0;
|
||||
$upload[$i]['image'][1] = 0;
|
||||
$upload[$i]['image'][2] = 0;
|
||||
$upload[$i]['fileurl'] = '';
|
||||
$upload[$i]['thumburl'] = '';
|
||||
$upload[$i]['storage'] = '';
|
||||
|
||||
$row = sql_fetch(" select * from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' and bf_no = '{$i}' ");
|
||||
// 삭제에 체크가 되어있다면 파일을 삭제합니다.
|
||||
if (isset($_POST['bf_file_del'][$i]) && $_POST['bf_file_del'][$i]) {
|
||||
$upload[$i]['del_check'] = true;
|
||||
|
||||
$delete_file = run_replace('delete_file_path', G5_DATA_PATH.'/file/'.$bo_table.'/'.str_replace('../', '', $row['bf_file']), $row);
|
||||
if( file_exists($delete_file) ){
|
||||
@unlink($delete_file);
|
||||
}
|
||||
// 썸네일삭제
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row['bf_file'])) {
|
||||
delete_board_thumbnail($bo_table, $row['bf_file']);
|
||||
}
|
||||
}
|
||||
else
|
||||
$upload[$i]['del_check'] = false;
|
||||
|
||||
$tmp_file = $_FILES['bf_file']['tmp_name'][$i];
|
||||
$filesize = $_FILES['bf_file']['size'][$i];
|
||||
$filename = $_FILES['bf_file']['name'][$i];
|
||||
$filename = get_safe_filename($filename);
|
||||
|
||||
// 서버에 설정된 값보다 큰파일을 업로드 한다면
|
||||
if ($filename) {
|
||||
if ($_FILES['bf_file']['error'][$i] == 1) {
|
||||
$file_upload_msg .= '\"'.$filename.'\" 파일의 용량이 서버에 설정('.$upload_max_filesize.')된 값보다 크므로 업로드 할 수 없습니다.\\n';
|
||||
continue;
|
||||
}
|
||||
else if ($_FILES['bf_file']['error'][$i] != 0) {
|
||||
$file_upload_msg .= '\"'.$filename.'\" 파일이 정상적으로 업로드 되지 않았습니다.\\n';
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (is_uploaded_file($tmp_file)) {
|
||||
// 관리자가 아니면서 설정한 업로드 사이즈보다 크다면 건너뜀
|
||||
if (!$is_admin && $filesize > $board['bo_upload_size']) {
|
||||
$file_upload_msg .= '\"'.$filename.'\" 파일의 용량('.number_format($filesize).' 바이트)이 게시판에 설정('.number_format($board['bo_upload_size']).' 바이트)된 값보다 크므로 업로드 하지 않습니다.\\n';
|
||||
continue;
|
||||
}
|
||||
|
||||
//=================================================================\
|
||||
// 090714
|
||||
// 이미지나 플래시 파일에 악성코드를 심어 업로드 하는 경우를 방지
|
||||
// 에러메세지는 출력하지 않는다.
|
||||
//-----------------------------------------------------------------
|
||||
$timg = @getimagesize($tmp_file);
|
||||
// image type
|
||||
if ( preg_match("/\.({$config['cf_image_extension']})$/i", $filename) ||
|
||||
preg_match("/\.({$config['cf_flash_extension']})$/i", $filename) ) {
|
||||
if ($timg['2'] < 1 || $timg['2'] > 16)
|
||||
continue;
|
||||
}
|
||||
//=================================================================
|
||||
|
||||
$upload[$i]['image'] = $timg;
|
||||
|
||||
// 4.00.11 - 글답변에서 파일 업로드시 원글의 파일이 삭제되는 오류를 수정
|
||||
if ($w == 'u') {
|
||||
// 존재하는 파일이 있다면 삭제합니다.
|
||||
$row = sql_fetch(" select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");
|
||||
$row = sql_fetch(" select * from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' and bf_no = '{$i}' ");
|
||||
|
||||
$delete_file = run_replace('delete_file_path', G5_DATA_PATH.'/file/'.$bo_table.'/'.str_replace('../', '', $row['bf_file']), $row);
|
||||
if( file_exists($delete_file) ){
|
||||
@unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.$row['bf_file']);
|
||||
@unlink($delete_file);
|
||||
}
|
||||
// 이미지파일이면 썸네일삭제
|
||||
// 썸네일삭제
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row['bf_file'])) {
|
||||
delete_board_thumbnail($bo_table, $row['bf_file']);
|
||||
}
|
||||
}
|
||||
else
|
||||
$upload[$i]['del_check'] = false;
|
||||
|
||||
// 프로그램 원래 파일명
|
||||
$upload[$i]['source'] = $filename;
|
||||
$upload[$i]['filesize'] = $filesize;
|
||||
$tmp_file = $_FILES['bf_file']['tmp_name'][$i];
|
||||
$filesize = $_FILES['bf_file']['size'][$i];
|
||||
$filename = $_FILES['bf_file']['name'][$i];
|
||||
$filename = get_safe_filename($filename);
|
||||
|
||||
// 아래의 문자열이 들어간 파일은 -x 를 붙여서 웹경로를 알더라도 실행을 하지 못하도록 함
|
||||
$filename = preg_replace("/\.(php|pht|phtm|htm|cgi|pl|exe|jsp|asp|inc)/i", "$0-x", $filename);
|
||||
// 서버에 설정된 값보다 큰파일을 업로드 한다면
|
||||
if ($filename) {
|
||||
if ($_FILES['bf_file']['error'][$i] == 1) {
|
||||
$file_upload_msg .= '\"'.$filename.'\" 파일의 용량이 서버에 설정('.$upload_max_filesize.')된 값보다 크므로 업로드 할 수 없습니다.\\n';
|
||||
continue;
|
||||
}
|
||||
else if ($_FILES['bf_file']['error'][$i] != 0) {
|
||||
$file_upload_msg .= '\"'.$filename.'\" 파일이 정상적으로 업로드 되지 않았습니다.\\n';
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
shuffle($chars_array);
|
||||
$shuffle = implode('', $chars_array);
|
||||
if (is_uploaded_file($tmp_file)) {
|
||||
// 관리자가 아니면서 설정한 업로드 사이즈보다 크다면 건너뜀
|
||||
if (!$is_admin && $filesize > $board['bo_upload_size']) {
|
||||
$file_upload_msg .= '\"'.$filename.'\" 파일의 용량('.number_format($filesize).' 바이트)이 게시판에 설정('.number_format($board['bo_upload_size']).' 바이트)된 값보다 크므로 업로드 하지 않습니다.\\n';
|
||||
continue;
|
||||
}
|
||||
|
||||
// 첨부파일 첨부시 첨부파일명에 공백이 포함되어 있으면 일부 PC에서 보이지 않거나 다운로드 되지 않는 현상이 있습니다. (길상여의 님 090925)
|
||||
$upload[$i]['file'] = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.replace_filename($filename);
|
||||
//=================================================================\
|
||||
// 090714
|
||||
// 이미지나 플래시 파일에 악성코드를 심어 업로드 하는 경우를 방지
|
||||
// 에러메세지는 출력하지 않는다.
|
||||
//-----------------------------------------------------------------
|
||||
$timg = @getimagesize($tmp_file);
|
||||
// image type
|
||||
if ( preg_match("/\.({$config['cf_image_extension']})$/i", $filename) ||
|
||||
preg_match("/\.({$config['cf_flash_extension']})$/i", $filename) ) {
|
||||
if ($timg['2'] < 1 || $timg['2'] > 16)
|
||||
continue;
|
||||
}
|
||||
//=================================================================
|
||||
|
||||
$dest_file = G5_DATA_PATH.'/file/'.$bo_table.'/'.$upload[$i]['file'];
|
||||
$upload[$i]['image'] = $timg;
|
||||
|
||||
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
|
||||
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);
|
||||
// 4.00.11 - 글답변에서 파일 업로드시 원글의 파일이 삭제되는 오류를 수정
|
||||
if ($w == 'u') {
|
||||
// 존재하는 파일이 있다면 삭제합니다.
|
||||
$row = sql_fetch(" select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");
|
||||
|
||||
// 올라간 파일의 퍼미션을 변경합니다.
|
||||
chmod($dest_file, G5_FILE_PERMISSION);
|
||||
$delete_file = run_replace('delete_file_path', G5_DATA_PATH.'/file/'.$bo_table.'/'.str_replace('../', '', $row['bf_file']), $row);
|
||||
if( file_exists($delete_file) ){
|
||||
@unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.$row['bf_file']);
|
||||
}
|
||||
// 이미지파일이면 썸네일삭제
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row['bf_file'])) {
|
||||
delete_board_thumbnail($bo_table, $row['bf_file']);
|
||||
}
|
||||
}
|
||||
|
||||
$dest_file = run_replace('write_update_upload_file', $dest_file, $board, $wr_id, $w);
|
||||
$upload[$i] = run_replace('write_update_upload_array', $upload[$i], $dest_file, $board, $wr_id, $w);
|
||||
}
|
||||
}
|
||||
// 프로그램 원래 파일명
|
||||
$upload[$i]['source'] = $filename;
|
||||
$upload[$i]['filesize'] = $filesize;
|
||||
|
||||
// 아래의 문자열이 들어간 파일은 -x 를 붙여서 웹경로를 알더라도 실행을 하지 못하도록 함
|
||||
$filename = preg_replace("/\.(php|pht|phtm|htm|cgi|pl|exe|jsp|asp|inc)/i", "$0-x", $filename);
|
||||
|
||||
shuffle($chars_array);
|
||||
$shuffle = implode('', $chars_array);
|
||||
|
||||
// 첨부파일 첨부시 첨부파일명에 공백이 포함되어 있으면 일부 PC에서 보이지 않거나 다운로드 되지 않는 현상이 있습니다. (길상여의 님 090925)
|
||||
$upload[$i]['file'] = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.replace_filename($filename);
|
||||
|
||||
$dest_file = G5_DATA_PATH.'/file/'.$bo_table.'/'.$upload[$i]['file'];
|
||||
|
||||
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
|
||||
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);
|
||||
|
||||
// 올라간 파일의 퍼미션을 변경합니다.
|
||||
chmod($dest_file, G5_FILE_PERMISSION);
|
||||
|
||||
$dest_file = run_replace('write_update_upload_file', $dest_file, $board, $wr_id, $w);
|
||||
$upload[$i] = run_replace('write_update_upload_array', $upload[$i], $dest_file, $board, $wr_id, $w);
|
||||
}
|
||||
} // end for
|
||||
} // end if
|
||||
|
||||
// 나중에 테이블에 저장하는 이유는 $wr_id 값을 저장해야 하기 때문입니다.
|
||||
for ($i=0; $i<count($upload); $i++)
|
||||
@@ -593,10 +596,10 @@ for ($i=0; $i<count($upload); $i++)
|
||||
bf_fileurl = '{$upload[$i]['fileurl']}',
|
||||
bf_thumburl = '{$upload[$i]['thumburl']}',
|
||||
bf_storage = '{$upload[$i]['storage']}',
|
||||
bf_filesize = '{$upload[$i]['filesize']}',
|
||||
bf_width = '{$upload[$i]['image']['0']}',
|
||||
bf_height = '{$upload[$i]['image']['1']}',
|
||||
bf_type = '{$upload[$i]['image']['2']}',
|
||||
bf_filesize = '".(int)$upload[$i]['filesize']."',
|
||||
bf_width = '".(int)$upload[$i]['image'][0]."',
|
||||
bf_height = '".(int)$upload[$i]['image'][1]."',
|
||||
bf_type = '".(int)$upload[$i]['image'][2]."',
|
||||
bf_datetime = '".G5_TIME_YMDHIS."'
|
||||
where bo_table = '{$bo_table}'
|
||||
and wr_id = '{$wr_id}'
|
||||
@@ -626,10 +629,10 @@ for ($i=0; $i<count($upload); $i++)
|
||||
bf_thumburl = '{$upload[$i]['thumburl']}',
|
||||
bf_storage = '{$upload[$i]['storage']}',
|
||||
bf_download = 0,
|
||||
bf_filesize = '{$upload[$i]['filesize']}',
|
||||
bf_width = '{$upload[$i]['image']['0']}',
|
||||
bf_height = '{$upload[$i]['image']['1']}',
|
||||
bf_type = '{$upload[$i]['image']['2']}',
|
||||
bf_filesize = '".(int)$upload[$i]['filesize']."',
|
||||
bf_width = '".(int)$upload[$i]['image'][0]."',
|
||||
bf_height = '".(int)$upload[$i]['image'][1]."',
|
||||
bf_type = '".(int)$upload[$i]['image'][2]."',
|
||||
bf_datetime = '".G5_TIME_YMDHIS."' ";
|
||||
sql_query($sql);
|
||||
|
||||
|
||||
+37
-32
@@ -221,49 +221,45 @@ ini_set("session.cookie_domain", G5_COOKIE_DOMAIN);
|
||||
//------------------------------------------------------------------------------
|
||||
// 기본환경설정
|
||||
// 기본적으로 사용하는 필드만 얻은 후 상황에 따라 필드를 추가로 얻음
|
||||
$config = get_config();
|
||||
$config = get_config(true);
|
||||
|
||||
// 본인인증 또는 쇼핑몰 사용시에만 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())
|
||||
{
|
||||
// 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') ){
|
||||
|
||||
$res = @session_start($options);
|
||||
|
||||
// IE 브라우저 또는 엣지브라우저 또는 IOS 모바일과 http환경에서는 secure; SameSite=None을 설정하지 않습니다.
|
||||
if( preg_match('/Edge/i', $_SERVER['HTTP_USER_AGENT']) || preg_match('/(iPhone|iPod|iPad).*AppleWebKit.*Safari/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);
|
||||
$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;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
||||
session_start_samesite();
|
||||
session_start_samesite();
|
||||
} else {
|
||||
@session_start();
|
||||
@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'])
|
||||
define('G5_EDITOR_LIB', G5_EDITOR_PATH."/{$config['cf_editor']}/editor.lib.php");
|
||||
else
|
||||
define('G5_EDITOR_LIB', G5_LIB_PATH."/editor.lib.php");
|
||||
|
||||
define('G5_CAPTCHA_DIR', !empty($config['cf_captcha']) ? $config['cf_captcha'] : 'kcaptcha');
|
||||
define('G5_CAPTCHA_URL', G5_PLUGIN_URL.'/'.G5_CAPTCHA_DIR);
|
||||
@@ -446,7 +442,7 @@ if ($_SESSION['ss_mb_id']) { // 로그인중이라면
|
||||
$write = array();
|
||||
$write_table = "";
|
||||
if ($bo_table) {
|
||||
$board = get_board_db($bo_table);
|
||||
$board = get_board_db($bo_table, true);
|
||||
if ($board['bo_table']) {
|
||||
set_cookie("ck_bo_table", $board['bo_table'], 86400 * 1);
|
||||
$gr_id = $board['gr_id'];
|
||||
@@ -461,12 +457,22 @@ if ($bo_table) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 게시판에서
|
||||
if (isset($board['bo_select_editor']) && $board['bo_select_editor']){
|
||||
$config['cf_editor'] = $board['bo_select_editor'];
|
||||
}
|
||||
}
|
||||
|
||||
if ($gr_id) {
|
||||
$group = get_group($gr_id);
|
||||
if ($gr_id && !is_array($gr_id)) {
|
||||
$group = get_group($gr_id, true);
|
||||
}
|
||||
|
||||
if ($config['cf_editor']) {
|
||||
define('G5_EDITOR_LIB', G5_EDITOR_PATH."/{$config['cf_editor']}/editor.lib.php");
|
||||
} else {
|
||||
define('G5_EDITOR_LIB', G5_LIB_PATH."/editor.lib.php");
|
||||
}
|
||||
|
||||
// 회원, 비회원 구분
|
||||
$is_member = $is_guest = false;
|
||||
@@ -655,7 +661,6 @@ include_once(G5_BBS_PATH.'/visit_insert.inc.php');
|
||||
// 일정 기간이 지난 DB 데이터 삭제 및 최적화
|
||||
include_once(G5_BBS_PATH.'/db_table.optimize.php');
|
||||
|
||||
|
||||
// common.php 파일을 수정할 필요가 없도록 확장합니다.
|
||||
$extend_file = array();
|
||||
$tmp = dir(G5_EXTEND_PATH);
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
********************/
|
||||
|
||||
define('G5_VERSION', '그누보드5');
|
||||
define('G5_GNUBOARD_VER', '5.4.2.2');
|
||||
define('G5_GNUBOARD_VER', '5.4.3');
|
||||
|
||||
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
||||
define('_GNUBOARD_', true);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// 유저 사이드뷰에서 아이콘 지정 안했을시 기본 no 프로필 이미지
|
||||
define('G5_NO_PROFILE_IMG', '<span class="profile_img"><img src="'.G5_IMG_URL.'/no_profile.gif" alt="no_profile" width="20" height="20"></span>');
|
||||
define('G5_NO_PROFILE_IMG', '<span class="profile_img"><img src="'.G5_IMG_URL.'/no_profile.gif" alt="no_profile" width="'.$config['cf_member_icon_width'].'" height="'.$config['cf_member_icon_height'].'"></span>');
|
||||
|
||||
// 썸네일 처리 방식, 비율유지 하지 않고 썸네일을 생성하려면 주석을 풀고 값은 false 입력합니다. ( true 또는 주석으로 된 경우에는 비율 유지합니다. )
|
||||
//define('G5_USE_THUMB_RATIO', false);
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -15,6 +15,10 @@ if (file_exists($dbconfig_file)) {
|
||||
die(install_json_msg('프로그램이 이미 설치되어 있습니다.'));
|
||||
}
|
||||
|
||||
if (preg_match("/[^0-9a-z_]+/i", $_POST['table_prefix']) ) {
|
||||
die(install_json_msg('TABLE명 접두사는 영문자, 숫자, _ 만 입력하세요.'));
|
||||
}
|
||||
|
||||
$mysql_host = safe_install_string_check($_POST['mysql_host'], 'json');
|
||||
$mysql_user = safe_install_string_check($_POST['mysql_user'], 'json');
|
||||
$mysql_pass = safe_install_string_check($_POST['mysql_pass'], 'json');
|
||||
@@ -22,7 +26,7 @@ $mysql_db = safe_install_string_check($_POST['mysql_db'], 'json');
|
||||
$table_prefix= safe_install_string_check(preg_replace('/[^a-zA-Z0-9_]/', '_', $_POST['table_prefix']));
|
||||
|
||||
$tmp_str = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : '';
|
||||
$ajax_token = md5($tmp_str.$_SERVER['REMOTE_ADDR'].$_SERVER['DOCUMENT_ROOT']);
|
||||
$ajax_token = md5($tmp_str.$_SERVER['REMOTE_ADDR'].dirname(dirname(__FILE__).'/'));
|
||||
|
||||
$bool_ajax_token = ($ajax_token == $_POST['ajax_token']) ? true : false;
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ CREATE TABLE IF NOT EXISTS `g5_board` (
|
||||
`bo_use_file_content` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`bo_use_secret` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`bo_use_dhtml_editor` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`bo_select_editor` varchar(50) NOT NULL DEFAULT '',
|
||||
`bo_use_rss_view` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`bo_use_good` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`bo_use_nogood` tinyint(4) NOT NULL DEFAULT '0',
|
||||
|
||||
@@ -19,7 +19,7 @@ if (!isset($_POST['agree']) || $_POST['agree'] != '동의함') {
|
||||
}
|
||||
|
||||
$tmp_str = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : '';
|
||||
$ajax_token = md5($tmp_str.$_SERVER['REMOTE_ADDR'].$_SERVER['DOCUMENT_ROOT']);
|
||||
$ajax_token = md5($tmp_str.$_SERVER['REMOTE_ADDR'].dirname(dirname(__FILE__).'/'));
|
||||
?>
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ $ajax_token = md5($tmp_str.$_SERVER['REMOTE_ADDR'].$_SERVER['DOCUMENT_ROOT']);
|
||||
<th scope="row"><label for="table_prefix">TABLE명 접두사</label></th>
|
||||
<td>
|
||||
<input name="table_prefix" type="text" value="g5_" id="table_prefix">
|
||||
<span>가능한 변경하지 마십시오.</span>
|
||||
<span>TABLE명 접두사는 영문자, 숫자, _ 만 입력 가능합니다.</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@@ -33,6 +33,10 @@ $admin_pass = $_POST['admin_pass'];
|
||||
$admin_name = $_POST['admin_name'];
|
||||
$admin_email = $_POST['admin_email'];
|
||||
|
||||
if (preg_match("/[^0-9a-z_]+/i", $table_prefix) ) {
|
||||
die('<div class="ins_inner"><p>TABLE명 접두사는 영문자, 숫자, _ 만 입력하세요.</p><div class="inner_btn"><a href="./install_config.php">뒤로가기</a></div></div>');
|
||||
}
|
||||
|
||||
if (preg_match("/[^0-9a-z_]+/i", $admin_id)) {
|
||||
die('<div class="ins_inner"><p>관리자 아이디는 영문자, 숫자, _ 만 입력하세요.</p><div class="inner_btn"><a href="./install_config.php">뒤로가기</a></div></div>');
|
||||
}
|
||||
@@ -340,10 +344,10 @@ $f = @fopen($file, 'a');
|
||||
|
||||
fwrite($f, "<?php\n");
|
||||
fwrite($f, "if (!defined('_GNUBOARD_')) exit;\n");
|
||||
fwrite($f, "define('G5_MYSQL_HOST', '{$mysql_host}');\n");
|
||||
fwrite($f, "define('G5_MYSQL_USER', '{$mysql_user}');\n");
|
||||
fwrite($f, "define('G5_MYSQL_PASSWORD', '{$mysql_pass}');\n");
|
||||
fwrite($f, "define('G5_MYSQL_DB', '{$mysql_db}');\n");
|
||||
fwrite($f, "define('G5_MYSQL_HOST', '".addcslashes($mysql_host, "\\'")."');\n");
|
||||
fwrite($f, "define('G5_MYSQL_USER', '".addcslashes($mysql_user, "\\'")."');\n");
|
||||
fwrite($f, "define('G5_MYSQL_PASSWORD', '".addcslashes($mysql_pass, "\\'")."');\n");
|
||||
fwrite($f, "define('G5_MYSQL_DB', '".addcslashes($mysql_db, "\\'")."');\n");
|
||||
fwrite($f, "define('G5_MYSQL_SET_MODE', {$mysql_set_mode});\n\n");
|
||||
fwrite($f, "define('G5_TABLE_PREFIX', '{$table_prefix}');\n\n");
|
||||
fwrite($f, "\$g5['write_prefix'] = G5_TABLE_PREFIX.'write_'; // 게시판 테이블명 접두사\n\n");
|
||||
|
||||
+8
-30
@@ -165,33 +165,9 @@ function set_cookie(name, value, expirehours, domain)
|
||||
// 쿠키 얻음
|
||||
function get_cookie(name)
|
||||
{
|
||||
var find_sw = false;
|
||||
var start, end;
|
||||
var i = 0;
|
||||
|
||||
for (i=0; i<= document.cookie.length; i++)
|
||||
{
|
||||
start = i;
|
||||
end = start + name.length;
|
||||
|
||||
if(document.cookie.substring(start, end) == name)
|
||||
{
|
||||
find_sw = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if (find_sw == true)
|
||||
{
|
||||
start = end + 1;
|
||||
end = document.cookie.indexOf(";", start);
|
||||
|
||||
if(end < start)
|
||||
end = document.cookie.length;
|
||||
|
||||
return unescape(document.cookie.substring(start, end));
|
||||
}
|
||||
return "";
|
||||
var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
|
||||
if (match) return unescape(match[2]);
|
||||
return "";
|
||||
}
|
||||
|
||||
// 쿠키 지움
|
||||
@@ -559,10 +535,12 @@ function font_resize(id, rmv_class, add_class, othis)
|
||||
{
|
||||
var $el = $("#"+id);
|
||||
|
||||
$el.removeClass(rmv_class).addClass(add_class);
|
||||
if((typeof rmv_class !== "undefined" && rmv_class) || (typeof add_class !== "undefined" && add_class)){
|
||||
$el.removeClass(rmv_class).addClass(add_class);
|
||||
|
||||
set_cookie("ck_font_resize_rmv_class", rmv_class, 1, g5_cookie_domain);
|
||||
set_cookie("ck_font_resize_add_class", add_class, 1, g5_cookie_domain);
|
||||
set_cookie("ck_font_resize_rmv_class", rmv_class, 1, g5_cookie_domain);
|
||||
set_cookie("ck_font_resize_add_class", add_class, 1, g5_cookie_domain);
|
||||
}
|
||||
|
||||
if(typeof othis !== "undefined"){
|
||||
$(othis).addClass('select').siblings().removeClass('select');
|
||||
|
||||
@@ -33,9 +33,9 @@ class FileCache
|
||||
*
|
||||
* @param string $id
|
||||
*/
|
||||
public function get($id)
|
||||
public function get($id, $expired_time=0)
|
||||
{
|
||||
$data = $this->_get($id);
|
||||
$data = $this->_get($id, $expired_time);
|
||||
return is_array($data) ? $data['data'] : FALSE;
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ class FileCache
|
||||
|
||||
}
|
||||
|
||||
protected function _get($id)
|
||||
protected function _get($id, $expired_time=0)
|
||||
{
|
||||
$cache_file_path = $this->get_cache_file_path($id);
|
||||
|
||||
@@ -68,20 +68,27 @@ class FileCache
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$server_time = defined('G5_SERVER_TIME') ? G5_SERVER_TIME : time();
|
||||
|
||||
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);
|
||||
$data = array('ttl'=>1, 'time'=> $server_time - 1000);
|
||||
}
|
||||
|
||||
if ($data['ttl'] > 0 && time() > $data['time'] + $data['ttl'])
|
||||
|
||||
if ($data['ttl'] > 0 && $server_time > $data['time'] + $data['ttl'])
|
||||
{
|
||||
unlink( $cache_file_path );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ($data['time'] && $expired_time && $data['time'] < ($server_time - $expired_time)){
|
||||
unlink( $cache_file_path );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
||||
@@ -87,6 +87,9 @@ Class GML_Hook extends Hook {
|
||||
|
||||
foreach ($filters as $priority) {
|
||||
foreach ($priority as $filter) {
|
||||
if( isset($args[0]) ){
|
||||
$args[0] = $value;
|
||||
}
|
||||
$replace = $that->runAction($filter, $args);
|
||||
|
||||
if( ! is_null($replace) ) {
|
||||
|
||||
+2
-2
@@ -52,10 +52,10 @@ function g5_set_cache($key, $save_data, $ttl = null){
|
||||
}
|
||||
}
|
||||
|
||||
function g5_get_cache($key){
|
||||
function g5_get_cache($key, $expired_time=0){
|
||||
|
||||
if( $cache = get_cachemanage_instance() ){
|
||||
return $cache->get($key);
|
||||
return $cache->get($key, $expired_time);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
+72
-8
@@ -611,7 +611,7 @@ function html_purifier($html)
|
||||
//유튜브, 비메오 전체화면 가능하게 하기
|
||||
$config->set('Filter.Custom', array(new HTMLPurifier_Filter_Iframevideo()));
|
||||
$purifier = new HTMLPurifier($config);
|
||||
return $purifier->purify($html);
|
||||
return run_replace('html_purifier_result', $purifier->purify($html), $purifier, $html);
|
||||
}
|
||||
|
||||
|
||||
@@ -746,10 +746,15 @@ 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();
|
||||
|
||||
$gr_id = preg_replace('/[^a-z0-9_]/i', '', $gr_id);
|
||||
$cache = run_replace('get_group_db_cache', $cache, $gr_id, $is_cache);
|
||||
$key = md5($gr_id);
|
||||
|
||||
if( $is_cache && isset($cache[$key]) ){
|
||||
@@ -769,7 +774,8 @@ function get_member($mb_id, $fields='*', $is_cache=false)
|
||||
{
|
||||
global $g5;
|
||||
|
||||
$mb_id = preg_replace("/[^0-9a-z_]+/i", "", $mb_id);
|
||||
if (preg_match("/[^0-9a-z_]+/i", $mb_id))
|
||||
return array();
|
||||
|
||||
static $cache = array();
|
||||
|
||||
@@ -1398,7 +1404,8 @@ function view_file_link($file, $width, $height, $content='')
|
||||
$attr = '';
|
||||
|
||||
if (preg_match("/\.({$config['cf_image_extension']})$/i", $file)) {
|
||||
$img = '<a href="'.G5_BBS_URL.'/view_image.php?bo_table='.$board['bo_table'].'&fn='.urlencode($file).'" target="_blank" class="view_image">';
|
||||
$attr_href = run_replace('thumb_view_image_href', G5_BBS_URL.'/view_image.php?bo_table='.$board['bo_table'].'&fn='.urlencode($file), $file, $board['bo_table'], $width, $height, $content);
|
||||
$img = '<a href="'.$attr_href.'" target="_blank" class="view_image">';
|
||||
$img .= '<img src="'.G5_DATA_URL.'/file/'.$board['bo_table'].'/'.urlencode($file).'" alt="'.$content.'" '.$attr.'>';
|
||||
$img .= '</a>';
|
||||
|
||||
@@ -1599,15 +1606,19 @@ function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR, $link=null)
|
||||
}
|
||||
}
|
||||
|
||||
$end_time = $is_debug ? get_microtime() : 0;
|
||||
|
||||
if($result && $is_debug) {
|
||||
// 여기에 실행한 sql문을 화면에 표시하는 로직 넣기
|
||||
$g5_debug['sql'][] = array(
|
||||
'sql' => $sql,
|
||||
'start_time' => $start_time,
|
||||
'end_time' => get_microtime(),
|
||||
'end_time' => $end_time,
|
||||
);
|
||||
}
|
||||
|
||||
run_event('sql_query_after', $result, $sql, $start_time, $end_time);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -2313,6 +2324,8 @@ function delete_editor_thumbnail($contents)
|
||||
{
|
||||
if(!$contents)
|
||||
return;
|
||||
|
||||
run_event('delete_editor_thumbnail_before', $contents);
|
||||
|
||||
// $contents 중 img 태그 추출
|
||||
$matchs = get_editor_image($contents);
|
||||
@@ -2333,6 +2346,8 @@ function delete_editor_thumbnail($contents)
|
||||
unlink($filename);
|
||||
}
|
||||
}
|
||||
|
||||
run_event('delete_editor_thumbnail_after', $contents, $matchs);
|
||||
}
|
||||
|
||||
// 1:1문의 첨부파일 썸네일 삭제
|
||||
@@ -2594,7 +2609,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;
|
||||
@@ -3066,6 +3081,22 @@ function clean_xss_attributes($str)
|
||||
return $str;
|
||||
}
|
||||
|
||||
function clean_relative_paths($path){
|
||||
$path_len = strlen($path);
|
||||
|
||||
$i = 0;
|
||||
while($i <= $path_len){
|
||||
$result = str_replace('../', '', str_replace('\\', '/', $path));
|
||||
|
||||
if((string)$result === (string)$path) break;
|
||||
|
||||
$path = $result;
|
||||
$i++;
|
||||
}
|
||||
|
||||
return $path;
|
||||
}
|
||||
|
||||
// unescape nl 얻기
|
||||
function conv_unescape_nl($str)
|
||||
{
|
||||
@@ -3095,7 +3126,8 @@ function member_delete($mb_id)
|
||||
}
|
||||
|
||||
// 회원자료는 정보만 없앤 후 아이디는 보관하여 다른 사람이 사용하지 못하도록 함 : 061025
|
||||
$sql = " update {$g5['member_table']} set mb_password = '', mb_level = 1, mb_email = '', mb_homepage = '', mb_tel = '', mb_hp = '', mb_zip1 = '', mb_zip2 = '', mb_addr1 = '', mb_addr2 = '', mb_birth = '', mb_sex = '', mb_signature = '', mb_memo = '".date('Ymd', G5_SERVER_TIME)." 삭제함\n{$mb['mb_memo']}' where mb_id = '{$mb_id}' ";
|
||||
$sql = " update {$g5['member_table']} set mb_password = '', mb_level = 1, mb_email = '', mb_homepage = '', mb_tel = '', mb_hp = '', mb_zip1 = '', mb_zip2 = '', mb_addr1 = '', mb_addr2 = '', mb_birth = '', mb_sex = '', mb_signature = '', mb_memo = '".date('Ymd', G5_SERVER_TIME)." 삭제함\n".sql_real_escape_string($mb['mb_memo'])."' where mb_id = '{$mb_id}' ";
|
||||
|
||||
sql_query($sql);
|
||||
|
||||
// 포인트 테이블에서 삭제
|
||||
@@ -3129,6 +3161,8 @@ function member_delete($mb_id)
|
||||
|
||||
// 프로필 이미지 삭제
|
||||
@unlink(G5_DATA_PATH.'/member_image/'.substr($mb_id,0,2).'/'.$mb_id.'.gif');
|
||||
|
||||
run_event('member_delete_after', $mb_id);
|
||||
}
|
||||
|
||||
// 이메일 주소 추출
|
||||
@@ -3619,6 +3653,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;
|
||||
|
||||
@@ -3712,12 +3776,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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,11 +70,10 @@ function get_board_db($bo_table, $is_cache=false){
|
||||
|
||||
static $cache = array();
|
||||
|
||||
$bo_table = preg_replace('/[^a-z0-9_]/i', '', $bo_table);
|
||||
$cache = run_replace('get_board_db_cache', $cache, $bo_table, $is_cache);
|
||||
|
||||
$key = md5($bo_table);
|
||||
|
||||
$bo_table = preg_replace('/[^a-z0-9_]/i', '', $bo_table);
|
||||
if( $is_cache && isset($cache[$key]) ){
|
||||
return $cache[$key];
|
||||
}
|
||||
|
||||
+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 회신번호
|
||||
|
||||
+131
-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,54 @@ 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();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
+5
-3
@@ -9,6 +9,8 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
|
||||
global $g5;
|
||||
|
||||
if (!$skin_dir) $skin_dir = 'basic';
|
||||
|
||||
$time_unit = 3600; // 1시간으로 고정
|
||||
|
||||
if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
|
||||
if (G5_IS_MOBILE) {
|
||||
@@ -31,11 +33,11 @@ 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();
|
||||
$caches = g5_get_cache($cache_file_name);
|
||||
$caches = g5_get_cache($cache_file_name, $time_unit * $cache_time);
|
||||
$cache_list = isset($caches['list']) ? $caches['list'] : array();
|
||||
g5_latest_cache_data($bo_table, $cache_list);
|
||||
}
|
||||
@@ -90,7 +92,7 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
|
||||
'bo_subject' => sql_escape_string($bo_subject),
|
||||
);
|
||||
|
||||
g5_set_cache($cache_file_name, $caches, 3600 * $cache_time);
|
||||
g5_set_cache($cache_file_name, $caches, $time_unit * $cache_time);
|
||||
}
|
||||
} else {
|
||||
$list = $cache_list;
|
||||
|
||||
@@ -86,7 +86,7 @@ function exist_mb_nick($reg_mb_nick, $reg_mb_id)
|
||||
function reserve_mb_nick($reg_mb_nick)
|
||||
{
|
||||
global $config;
|
||||
if (preg_match("/[\,]?{$reg_mb_nick}/i", $config['cf_prohibit_id']))
|
||||
if (preg_match("/[\,]?".preg_quote($reg_mb_nick)."/i", $config['cf_prohibit_id']))
|
||||
return "이미 예약된 단어로 사용할 수 없는 닉네임 입니다.";
|
||||
else
|
||||
return "";
|
||||
|
||||
+33
-9
@@ -110,6 +110,8 @@ function get_view_thumbnail($contents, $thumb_width=0)
|
||||
for($i=0; $i<count($matches[1]); $i++) {
|
||||
|
||||
$img = $matches[1][$i];
|
||||
$img_tag = isset($matches[0][$i]) ? $matches[0][$i] : '';
|
||||
|
||||
preg_match("/src=[\'\"]?([^>\'\"]+[^>\'\"]+)/i", $img, $m);
|
||||
$src = $m[1];
|
||||
preg_match("/style=[\"\']?([^\"\'>]+)/i", $img, $m);
|
||||
@@ -161,16 +163,22 @@ function get_view_thumbnail($contents, $thumb_width=0)
|
||||
}
|
||||
}
|
||||
|
||||
// 원본 width가 thumb_width보다 작다면
|
||||
if($size[0] <= $thumb_width)
|
||||
continue;
|
||||
|
||||
// Animated GIF 체크
|
||||
$is_animated = false;
|
||||
if($size[2] == 1) {
|
||||
$is_animated = is_animated_gif($srcfile);
|
||||
|
||||
if($replace_content = run_replace('thumbnail_is_animated_gif_content', '', $contents, $srcfile, $is_animated, $img_tag, $data_path, $size)){
|
||||
|
||||
$contents = $replace_content;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// 원본 width가 thumb_width보다 작다면
|
||||
if($size[0] <= $thumb_width)
|
||||
continue;
|
||||
|
||||
// 썸네일 높이
|
||||
$thumb_height = round(($thumb_width * $size[1]) / $size[0]);
|
||||
$filename = basename($srcfile);
|
||||
@@ -190,12 +198,12 @@ function get_view_thumbnail($contents, $thumb_width=0)
|
||||
} else {
|
||||
$thumb_tag = '<img src="'.G5_URL.str_replace($filename, $thumb_file, $data_path).'" alt="'.$alt.'"/>';
|
||||
}
|
||||
|
||||
|
||||
// $img_tag에 editor 경로가 있으면 원본보기 링크 추가
|
||||
$img_tag = $matches[0][$i];
|
||||
if(strpos($img_tag, G5_DATA_DIR.'/'.G5_EDITOR_DIR) && preg_match("/\.({$config['cf_image_extension']})$/i", $filename)) {
|
||||
$imgurl = str_replace(G5_URL, "", $src);
|
||||
$thumb_tag = '<a href="'.G5_BBS_URL.'/view_image.php?fn='.urlencode($imgurl).'" target="_blank" class="view_image">'.$thumb_tag.'</a>';
|
||||
$attr_href = run_replace('thumb_view_image_href', G5_BBS_URL.'/view_image.php?fn='.urlencode($imgurl), $filename, '', $width, $height, $alt);
|
||||
$thumb_tag = '<a href="'.$attr_href.'" target="_blank" class="view_image">'.$thumb_tag.'</a>';
|
||||
}
|
||||
|
||||
$contents = str_replace($img_tag, $thumb_tag, $contents);
|
||||
@@ -687,8 +695,19 @@ and the roundoff errors in the Gaussian blur process, are welcome.
|
||||
}
|
||||
|
||||
function is_animated_gif($filename) {
|
||||
if(!($fh = @fopen($filename, 'rb')))
|
||||
|
||||
static $cache = array();
|
||||
$key = md5($filename);
|
||||
|
||||
if( isset($cache[$key]) ){
|
||||
return $cache[$key];
|
||||
}
|
||||
|
||||
if(!($fh = @fopen($filename, 'rb'))){
|
||||
$cache[$key] = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
$count = 0;
|
||||
// 출처 : http://www.php.net/manual/en/function.imagecreatefromgif.php#104473
|
||||
// an animated gif contains multiple "frames", with each frame having a
|
||||
@@ -705,6 +724,11 @@ function is_animated_gif($filename) {
|
||||
}
|
||||
|
||||
fclose($fh);
|
||||
return $count > 1;
|
||||
|
||||
$cache[$key] = ($count > 1) ? true : false;
|
||||
|
||||
run_event('is_animated_gif_after', $filename, $cache[$key]);
|
||||
|
||||
return $cache[$key];
|
||||
}
|
||||
?>
|
||||
+45
-45
@@ -16,13 +16,13 @@ function get_pretty_url($folder, $no='', $query_string='', $action='')
|
||||
return $url;
|
||||
}
|
||||
|
||||
// use shortten url
|
||||
if($config['cf_bbs_rewrite']) {
|
||||
|
||||
// use shortten url
|
||||
if($config['cf_bbs_rewrite']) {
|
||||
|
||||
$segments[0] = G5_URL;
|
||||
|
||||
if( $folder === 'content' && $no ){ // 내용관리
|
||||
|
||||
|
||||
$segments[1] = $folder;
|
||||
|
||||
if( $config['cf_bbs_rewrite'] > 1 ){
|
||||
@@ -36,32 +36,32 @@ function get_pretty_url($folder, $no='', $query_string='', $action='')
|
||||
|
||||
} else if(in_array($folder, $boards)) { // 게시판
|
||||
|
||||
$segments[1] = $folder;
|
||||
$segments[1] = $folder;
|
||||
|
||||
if($no) {
|
||||
if($no) {
|
||||
|
||||
if( $config['cf_bbs_rewrite'] > 1 ){
|
||||
|
||||
$get_write = get_write( $g5['write_prefix'].$folder, $no , true);
|
||||
|
||||
$segments[2] = $get_write['wr_seo_title'] ? urlencode($get_write['wr_seo_title']).'/' : urlencode($no);
|
||||
$get_write = get_write( $g5['write_prefix'].$folder, $no , true);
|
||||
|
||||
$segments[2] = $get_write['wr_seo_title'] ? urlencode($get_write['wr_seo_title']).'/' : urlencode($no);
|
||||
|
||||
} else {
|
||||
$segments[2] = urlencode($no);
|
||||
}
|
||||
|
||||
} else if($action) {
|
||||
} else if($action) {
|
||||
$segments[2] = urlencode($action);
|
||||
}
|
||||
|
||||
} else {
|
||||
} else {
|
||||
$segments[1] = $folder;
|
||||
if($no) {
|
||||
$no_array = explode("=", $no);
|
||||
$no_value = end($no_array);
|
||||
if($no) {
|
||||
$no_array = explode("=", $no);
|
||||
$no_value = end($no_array);
|
||||
$segments[2] = urlencode($no_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($query_string) {
|
||||
// If the first character of the query string is '&', replace it with '?'.
|
||||
@@ -72,33 +72,33 @@ function get_pretty_url($folder, $no='', $query_string='', $action='')
|
||||
}
|
||||
}
|
||||
|
||||
} else { // don't use shortten url
|
||||
if(in_array($folder, $boards)) {
|
||||
$url = G5_BBS_URL. '/board.php?bo_table='. $folder;
|
||||
if($no) {
|
||||
$url .= '&wr_id='. $no;
|
||||
}
|
||||
if($query_string) {
|
||||
} else { // don't use shortten url
|
||||
if(in_array($folder, $boards)) {
|
||||
$url = G5_BBS_URL. '/board.php?bo_table='. $folder;
|
||||
if($no) {
|
||||
$url .= '&wr_id='. $no;
|
||||
}
|
||||
if($query_string) {
|
||||
if(substr($query_string, 0, 1) !== '&') {
|
||||
$url .= '&';
|
||||
}
|
||||
|
||||
$url .= $query_string;
|
||||
}
|
||||
} else {
|
||||
$url = G5_BBS_URL. '/'.$folder.'.php';
|
||||
$url .= $query_string;
|
||||
}
|
||||
} else {
|
||||
$url = G5_BBS_URL. '/'.$folder.'.php';
|
||||
if($no) {
|
||||
$url .= ($folder === 'content') ? '?co_id='. $no : '?'. $no;
|
||||
}
|
||||
$url .= ($folder === 'content') ? '?co_id='. $no : '?'. $no;
|
||||
}
|
||||
if($query_string) {
|
||||
$url .= ($no ? '?' : '&'). $query_string;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$segments[0] = $url;
|
||||
}
|
||||
}
|
||||
|
||||
return implode('/', $segments).$add_query;
|
||||
return implode('/', $segments).$add_query;
|
||||
}
|
||||
|
||||
function short_url_clean($string_url, $add_qry=''){
|
||||
@@ -110,7 +110,7 @@ function short_url_clean($string_url, $add_qry=''){
|
||||
$string_url = str_replace('&', '&', $string_url);
|
||||
$url=parse_url($string_url);
|
||||
$page_name = basename($url['path'],".php");
|
||||
|
||||
|
||||
$array_page_names = run_replace('url_clean_page_names', array('board', 'write', 'content'));
|
||||
|
||||
if( stripos(preg_replace('/^https?:/i', '', $string_url), preg_replace('/^https?:/i', '', G5_BBS_URL)) === false || ! in_array($page_name, $array_page_names) ){ //게시판이 아니면 리턴
|
||||
@@ -119,19 +119,19 @@ function short_url_clean($string_url, $add_qry=''){
|
||||
|
||||
$return_url = '';
|
||||
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 )
|
||||
foreach($vars as $k => $v) { $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 if( $page_name === 'content' ){
|
||||
$vars['action'] = 'content';
|
||||
$allow_param_keys = array('action'=>'', 'co_id'=>'');
|
||||
} else {
|
||||
$vars['action'] = 'content';
|
||||
$allow_param_keys = array('action'=>'', 'co_id'=>'');
|
||||
} else {
|
||||
$allow_param_keys = array('bo_table'=>'', 'wr_id'=>'');
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ function short_url_clean($string_url, $add_qry=''){
|
||||
|
||||
if( $config['cf_bbs_rewrite'] > 1 && $page_name === 'board' && (isset($s['wr_id']) && $s['wr_id']) && (isset($s['bo_table']) && $s['bo_table']) ){
|
||||
$get_write = get_write( get_write_table_name($s['bo_table']), $s['wr_id'], true);
|
||||
|
||||
|
||||
if( $get_write['wr_seo_title'] ){
|
||||
unset($s['wr_id']);
|
||||
$s['wr_seo_title'] = urlencode($get_write['wr_seo_title']).'/';
|
||||
@@ -175,8 +175,8 @@ function short_url_clean($string_url, $add_qry=''){
|
||||
if( $add_qry ){
|
||||
$add_param .= $add_param ? '&'.$add_qry : '?'.$add_qry;
|
||||
}
|
||||
|
||||
foreach($s as $k => $v) { $return_url .= '/'.$v; }
|
||||
|
||||
foreach($s as $k => $v) { $return_url .= '/'.$v; }
|
||||
|
||||
return $host.$return_url.$add_param.$fragment;
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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'] ?>)
|
||||
@@ -159,7 +159,7 @@ jQuery(function($){
|
||||
</section>
|
||||
<?php } ?>
|
||||
|
||||
<?php if(isset($view['link'][1]) && $view['link'][1]) { ?>
|
||||
<?php if(isset($view['link']) && array_filter($view['link'])) { ?>
|
||||
<!-- 관련링크 시작 { -->
|
||||
<section id="bo_v_link">
|
||||
<h2>관련링크</h2>
|
||||
|
||||
@@ -22,6 +22,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
$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';
|
||||
$is_comment_reply_edit = ($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) ? 1 : 0;
|
||||
?>
|
||||
<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">
|
||||
@@ -37,6 +38,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
<?php
|
||||
include(G5_SNS_PATH."/view_comment_list.sns.skin.php");
|
||||
?>
|
||||
<?php if( $is_comment_reply_edit ){ ?>
|
||||
<div class="bo_vl_opt">
|
||||
<button type="button" class="btn_cm_opt btn_b03 btn"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">댓글 옵션</span></button>
|
||||
<ul class="bo_vc_act">
|
||||
@@ -45,6 +47,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
<?php if ($list[$i]['is_del']) { ?><li><a href="<?php echo $list[$i]['del_link']; ?>" onclick="return comment_delete();">삭제</a></li><?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<script>
|
||||
$(function() {
|
||||
// 댓글 옵션창 열기
|
||||
|
||||
@@ -99,7 +99,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
$img_content = '<span class="no_img"><i class="fa fa-picture-o" aria-hidden="true"></i></span>';
|
||||
}
|
||||
|
||||
echo $img_content;
|
||||
echo run_replace('thumb_image_tag', $img_content, $thumb);
|
||||
}
|
||||
?>
|
||||
</a>
|
||||
|
||||
@@ -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}
|
||||
@@ -157,7 +158,7 @@
|
||||
#bo_gall .gall_li_wr {position:relative;}
|
||||
#bo_gall .gall_li_chk {display:inline-block;position:absolute;top:10px;left:10px}
|
||||
#bo_gall .gall_li:nth-child(2n+1) {clear:both}
|
||||
#bo_gall .gall_li .gall_img img{width:100%;height:auto}
|
||||
#bo_gall .gall_li .gall_img img, #bo_gall .gall_li .gall_img video{width:100%;height:auto}
|
||||
#bo_gall .gall_li .gall_img .no_img,
|
||||
#bo_gall .gall_li .gall_notice {display:block;background:#eaeaea;color:#d0d0d0;font-size:3em;text-align:center;padding:25% 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'] ?>)
|
||||
@@ -161,7 +161,7 @@ jQuery(function($){
|
||||
</section>
|
||||
<?php } ?>
|
||||
|
||||
<?php if(isset($view['link'][1]) && $view['link'][1]) { ?>
|
||||
<?php if(isset($view['link']) && array_filter($view['link'])) { ?>
|
||||
<!-- 관련링크 시작 { -->
|
||||
<section id="bo_v_link">
|
||||
<h2>관련링크</h2>
|
||||
|
||||
@@ -22,6 +22,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
$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';
|
||||
$is_comment_reply_edit = ($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) ? 1 : 0;
|
||||
?>
|
||||
<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">
|
||||
@@ -37,6 +38,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
<?php
|
||||
include(G5_SNS_PATH."/view_comment_list.sns.skin.php");
|
||||
?>
|
||||
<?php if( $is_comment_reply_edit ){ ?>
|
||||
<div class="bo_vl_opt">
|
||||
<button type="button" class="btn_cm_opt btn_b03 btn"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">댓글 옵션</span></button>
|
||||
<ul class="bo_vc_act">
|
||||
@@ -45,6 +47,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
<?php if ($list[$i]['is_del']) { ?><li><a href="<?php echo $list[$i]['del_link']; ?>" onclick="return comment_delete();">삭제</a></li><?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<script>
|
||||
$(function() {
|
||||
// 댓글 옵션창 열기
|
||||
|
||||
@@ -38,7 +38,7 @@ $is_show_next_prev = ($list_count > 4) ? 1 : 0;
|
||||
//echo $list[$i]['icon_reply']." ";
|
||||
|
||||
if( $img_content ){
|
||||
echo "<a href=\"".$list[$i]['href']."\" class=\"lt_thumb\">".$img_content."</a> ";
|
||||
echo "<a href=\"".$list[$i]['href']."\" class=\"lt_thumb\">".run_replace('thumb_image_tag', $img_content, $thumb)."</a> ";
|
||||
}
|
||||
|
||||
echo "<a href=\"".$list[$i]['href']."\" class=\"lt_tit\">";
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
.lt ul li:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.lt ul li:hover a.lt_tit {color:#3a8afd}
|
||||
.lt .lt_thumb {display:inline-block;float:left;margin-right:10px}
|
||||
.lt .lt_thumb img {width:138px;height:auto;overflow:hidden}
|
||||
.lt .lt_thumb img, .lt .lt_thumb video{width:138px;height:auto;overflow:hidden}
|
||||
.lt .lt_tit {display:block;font-size:1.2em;font-weight:bold;max-height:60px;overflow:hidden;padding-bottom:10px}
|
||||
.lt .lt_info {display:inline-block;position:relative;line-height:20px;color:#828282;font-size:0.925em;vertical-align:top}
|
||||
.lt .lt_date {color:#828282}
|
||||
|
||||
@@ -39,7 +39,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
||||
</div>
|
||||
|
||||
<div class="btn_confirm">
|
||||
<a href="<?php echo G5_URL ?>/"">메인으로</a>
|
||||
<a href="<?php echo G5_URL ?>/">메인으로</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -99,7 +99,7 @@ $(".btn_more_opt").on("click", function() {
|
||||
for ($i=0; $i<$view['download_count']; $i++) {
|
||||
?>
|
||||
<li>
|
||||
<a href="<?php echo $view['download_href'][$i]; ?>" class="view_file_download">
|
||||
<a href="<?php echo $view['download_href'][$i]; ?>" class="view_file_download" download>
|
||||
<img src="<?php echo $qa_skin_url ?>/img/icon_file.gif" alt="첨부">
|
||||
<strong><?php echo $view['download_source'][$i] ?></strong>
|
||||
</a>
|
||||
|
||||
@@ -14,7 +14,7 @@ if( G5_SOCIAL_USE_POPUP ) {
|
||||
$self_url = G5_SOCIAL_LOGIN_URL.'/popup.php';
|
||||
}
|
||||
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css">', 10);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css?ver='.G5_CSS_VER.'">', 10);
|
||||
?>
|
||||
|
||||
<div class="login-sns sns-wrap-32 sns-wrap-over" id="sns_login">
|
||||
|
||||
@@ -14,7 +14,7 @@ if( G5_SOCIAL_USE_POPUP ) {
|
||||
$self_url = G5_SOCIAL_LOGIN_URL.'/popup.php';
|
||||
}
|
||||
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css">', 10);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css?ver='.G5_CSS_VER.'">', 10);
|
||||
?>
|
||||
|
||||
<div class="login-sns sns-wrap-32 sns-wrap-over" id="sns_outlogin">
|
||||
|
||||
@@ -15,7 +15,7 @@ if( G5_SOCIAL_USE_POPUP ) {
|
||||
}
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css">', 10);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css?ver='.G5_CSS_VER.'">', 10);
|
||||
?>
|
||||
<div>
|
||||
<div class="login-sns sns-wrap-32 sns-wrap-over" id="sns_register">
|
||||
|
||||
@@ -8,7 +8,7 @@ if( ! $config['cf_social_login_use']) { //소셜 로그인을 사용하지
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.G5_JS_URL.'/remodal/remodal.css">', 11);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.G5_JS_URL.'/remodal/remodal-default-theme.css">', 12);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css">', 13);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css?ver='.G5_CSS_VER.'">', 13);
|
||||
add_javascript('<script src="'.G5_JS_URL.'/remodal/remodal.js"></script>', 10);
|
||||
|
||||
$email_msg = $is_exists_email ? '등록할 이메일이 중복되었습니다.다른 이메일을 입력해 주세요.' : '';
|
||||
|
||||
@@ -9,7 +9,7 @@ $socials = social_get_provider_service_name('', 'all');
|
||||
|
||||
$session_id = session_id();
|
||||
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css">', 10);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css?ver='.G5_CSS_VER.'">', 10);
|
||||
?>
|
||||
|
||||
<li>
|
||||
|
||||
@@ -118,13 +118,30 @@ add_stylesheet('<link rel="stylesheet" href="'.G5_PLUGIN_URL.'/debugbar/style.cs
|
||||
$is_print = $rowspan;
|
||||
|
||||
foreach($datas as $data){
|
||||
|
||||
$print_function = '';
|
||||
|
||||
if( $data['function'] && is_array($data['function']) ){
|
||||
foreach( (array) $data['function'] as $key=>$fn_name ){
|
||||
$str_delimiter = '';
|
||||
if($key) $str_delimiter = ' :: ';
|
||||
|
||||
if( is_object($fn_name) ){
|
||||
$fn_name = get_class($fn_name);
|
||||
}
|
||||
|
||||
$print_function .= $str_delimiter.(string) $fn_name;
|
||||
}
|
||||
} else {
|
||||
$print_function = $data['function'];
|
||||
}
|
||||
?>
|
||||
<tr>
|
||||
<?php if ($is_print){ ?>
|
||||
<td scope="row" data-label="event_tag" <?php echo $rowspan; ?>><?php echo $tag.' <span class="hook_count">('.$count.')</span>'; ?></td>
|
||||
<?php } ?>
|
||||
<td data-label="event_function">
|
||||
<?php echo $data['function']; ?>
|
||||
<?php echo $print_function; ?>
|
||||
</td>
|
||||
<td data-label="인수의 수"><?php echo $data['arguments']; ?></td>
|
||||
<td data-label="우선 순위"><?php echo $data['priority']; ?></td>
|
||||
@@ -194,13 +211,30 @@ add_stylesheet('<link rel="stylesheet" href="'.G5_PLUGIN_URL.'/debugbar/style.cs
|
||||
$is_print = $rowspan;
|
||||
|
||||
foreach($datas as $data){
|
||||
|
||||
$print_function = '';
|
||||
|
||||
if( $data['function'] && is_array($data['function']) ){
|
||||
foreach( (array) $data['function'] as $key=>$fn_name ){
|
||||
$str_delimiter = '';
|
||||
if($key) $str_delimiter = ' :: ';
|
||||
|
||||
if( is_object($fn_name) ){
|
||||
$fn_name = get_class($fn_name);
|
||||
}
|
||||
|
||||
$print_function .= $str_delimiter.(string) $fn_name;
|
||||
}
|
||||
} else {
|
||||
$print_function = $data['function'];
|
||||
}
|
||||
?>
|
||||
<tr>
|
||||
<?php if ($is_print){ ?>
|
||||
<td scope="row" data-label="replace_tag" <?php echo $rowspan; ?>><?php echo $tag.' <span class="hook_count">('.$count.')</span>'; ?></td>
|
||||
<?php } ?>
|
||||
<td data-label="replace_function">
|
||||
<?php echo $data['function']; ?>
|
||||
<?php echo $print_function; ?>
|
||||
</td>
|
||||
<td data-label="인수의 수"><?php echo $data['arguments']; ?></td>
|
||||
<td data-label="우선 순위"><?php echo $data['priority']; ?></td>
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
<?php
|
||||
include_once("_common.php");
|
||||
|
||||
if( strpos($config['cf_editor'], 'cheditor5') === false ){
|
||||
exit;
|
||||
}
|
||||
|
||||
define("CHE_UPLOAD_IMG_CHECK", 1); // 이미지 파일을 썸네일 할수 있는지 여부를 체크합니다. ( 해당 파일이 이미지 파일인지 체크합니다. 1이면 사용, 0이면 사용 안함 )
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
@@ -50,13 +50,13 @@ class KCAPTCHA{
|
||||
$transparent = (imagecolorat($font, $i, 0) >> 24) == 127;
|
||||
|
||||
if(!$reading_symbol && !$transparent){
|
||||
$font_metrics[$alphabet{$symbol}]=array('start'=>$i);
|
||||
$font_metrics[$alphabet[$symbol]]=array('start'=>$i);
|
||||
$reading_symbol=true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if($reading_symbol && $transparent){
|
||||
$font_metrics[$alphabet{$symbol}]['end']=$i;
|
||||
$font_metrics[$alphabet[$symbol]]['end']=$i;
|
||||
$reading_symbol=false;
|
||||
$symbol++;
|
||||
continue;
|
||||
@@ -75,7 +75,7 @@ class KCAPTCHA{
|
||||
$odd=mt_rand(0,1);
|
||||
if($odd==0) $odd=-1;
|
||||
for($i=0;$i<$length;$i++){
|
||||
$m=$font_metrics[$this->keystring{$i}];
|
||||
$m=$font_metrics[$this->keystring[$i]];
|
||||
|
||||
$y=(($i%2)*$fluctuation_amplitude - $fluctuation_amplitude/2)*$odd
|
||||
+ mt_rand(-round($fluctuation_amplitude/3), round($fluctuation_amplitude/3))
|
||||
|
||||
@@ -17,18 +17,18 @@ function make_mp3()
|
||||
}
|
||||
|
||||
$ip = sprintf("%u", ip2long($_SERVER['REMOTE_ADDR']));
|
||||
$mp3_file = 'data/cache/kcaptcha-'.$ip.'_'.G5_SERVER_TIME.'.mp3';
|
||||
$mp3_file = 'cache/kcaptcha-'.$ip.'_'.G5_SERVER_TIME.'.mp3';
|
||||
|
||||
$contents = '';
|
||||
foreach ($mp3s as $mp3) {
|
||||
$contents .= file_get_contents($mp3);
|
||||
}
|
||||
|
||||
file_put_contents(G5_PATH.'/'.$mp3_file, $contents);
|
||||
file_put_contents(G5_DATA_PATH.'/'.$mp3_file, $contents);
|
||||
|
||||
// 지난 캡챠 파일 삭제
|
||||
if (rand(0,99) == 0) {
|
||||
foreach (glob(G5_PATH.'/data/cache/kcaptcha-*.mp3') as $file) {
|
||||
foreach (glob(G5_DATA_PATH.'/cache/kcaptcha-*.mp3') as $file) {
|
||||
if (filemtime($file) + 86400 < G5_SERVER_TIME) {
|
||||
@unlink($file);
|
||||
}
|
||||
@@ -37,7 +37,7 @@ function make_mp3()
|
||||
|
||||
set_session("ss_captcha_save", $number);
|
||||
|
||||
return G5_URL.'/'.$mp3_file;
|
||||
return G5_DATA_URL.'/'.$mp3_file;
|
||||
}
|
||||
|
||||
echo make_mp3();
|
||||
|
||||
Binary file not shown.
@@ -100,11 +100,15 @@ if( $cert_enc_use == "Y" )
|
||||
|
||||
if ( $ct_cert->check_valid_hash ( $home_dir , $dn_hash , $veri_str ) != "1" )
|
||||
{
|
||||
// 검증 실패시 처리 영역
|
||||
if(PHP_INT_MAX == 2147483647) // 32-bit
|
||||
$bin_exe = '/bin/ct_cli';
|
||||
else
|
||||
$bin_exe = '/bin/ct_cli_x64';
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
|
||||
// 검증 실패시 처리 영역
|
||||
if(PHP_INT_MAX == 2147483647) // 32-bit
|
||||
$bin_exe = '/bin/ct_cli';
|
||||
else
|
||||
$bin_exe = '/bin/ct_cli_x64';
|
||||
} else {
|
||||
$bin_exe = '/bin/ct_cli_exe.exe';
|
||||
}
|
||||
|
||||
echo "dn_hash 변조 위험있음 (".G5_KCPCERT_PATH.$bin_exe." 파일에 실행권한이 있는지 확인하세요.)";
|
||||
exit;
|
||||
@@ -133,6 +137,13 @@ if( $cert_enc_use == "Y" )
|
||||
$dec_res_cd = $ct_cert->mf_get_key_value("res_cd" ); // 암호화된 결과코드
|
||||
$dec_mes_msg = $ct_cert->mf_get_key_value("res_msg" ); // 암호화된 결과메시지
|
||||
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && function_exists('mb_detect_encoding') ){
|
||||
if( mb_detect_encoding($user_name, 'EUC-KR') === 'EUC-KR' ){
|
||||
$user_name = iconv_utf8($user_name);
|
||||
$dec_mes_msg = iconv_utf8($dec_mes_msg);
|
||||
}
|
||||
}
|
||||
|
||||
// 정상인증인지 체크
|
||||
if(!$phone_no)
|
||||
alert_close("정상적인 인증이 아닙니다. 올바른 방법으로 이용해 주세요.");
|
||||
|
||||
@@ -22,11 +22,14 @@ class C_CT_CLI
|
||||
// hash 처리 영역
|
||||
function make_hash_data( $home_dir , $str )
|
||||
{
|
||||
if(PHP_INT_MAX == 2147483647) // 32-bit
|
||||
$bin_exe = $home_dir . '/bin/ct_cli';
|
||||
else
|
||||
$bin_exe = $home_dir . '/bin/ct_cli_x64';
|
||||
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
|
||||
if(PHP_INT_MAX == 2147483647) // 32-bit
|
||||
$bin_exe = $home_dir . '/bin/ct_cli';
|
||||
else
|
||||
$bin_exe = $home_dir . '/bin/ct_cli_x64';
|
||||
} else {
|
||||
$bin_exe = $home_dir . '/bin/ct_cli_exe.exe';
|
||||
}
|
||||
$hash_data = $this -> mf_exec( $bin_exe ,
|
||||
"lf_CT_CLI__make_hash_data",
|
||||
$str
|
||||
@@ -40,11 +43,14 @@ class C_CT_CLI
|
||||
// dn_hash 체크 함수
|
||||
function check_valid_hash ($home_dir , $hash_data , $str )
|
||||
{
|
||||
if(PHP_INT_MAX == 2147483647) // 32-bit
|
||||
$bin_exe = $home_dir . '/bin/ct_cli';
|
||||
else
|
||||
$bin_exe = $home_dir . '/bin/ct_cli_x64';
|
||||
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
|
||||
if(PHP_INT_MAX == 2147483647) // 32-bit
|
||||
$bin_exe = $home_dir . '/bin/ct_cli';
|
||||
else
|
||||
$bin_exe = $home_dir . '/bin/ct_cli_x64';
|
||||
} else {
|
||||
$bin_exe = $home_dir . '/bin/ct_cli_exe.exe';
|
||||
}
|
||||
$ret_val = $this -> mf_exec( $bin_exe ,
|
||||
"lf_CT_CLI__check_valid_hash" ,
|
||||
$hash_data ,
|
||||
@@ -59,18 +65,31 @@ class C_CT_CLI
|
||||
// 암호화 인증데이터 복호화
|
||||
function decrypt_enc_cert ( $home_dir, $site_cd , $cert_no , $enc_cert_data , $opt)
|
||||
{
|
||||
if(PHP_INT_MAX == 2147483647) // 32-bit
|
||||
$bin_exe = $home_dir . '/bin/ct_cli';
|
||||
else
|
||||
$bin_exe = $home_dir . '/bin/ct_cli_x64';
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
|
||||
if(PHP_INT_MAX == 2147483647) // 32-bit
|
||||
$bin_exe = $home_dir . '/bin/ct_cli';
|
||||
else
|
||||
$bin_exe = $home_dir . '/bin/ct_cli_x64';
|
||||
|
||||
$dec_data = $this -> mf_exec( $bin_exe ,
|
||||
"lf_CT_CLI__decrypt_enc_cert" ,
|
||||
$site_cd ,
|
||||
$cert_no ,
|
||||
$enc_cert_data ,
|
||||
$opt
|
||||
);
|
||||
|
||||
} else {
|
||||
$bin_exe = $home_dir . '/bin/ct_cli_exe.exe';
|
||||
|
||||
$dec_data = $this -> mf_exec( $bin_exe ,
|
||||
"lf_CT_CLI__decrypt_enc_cert" ,
|
||||
$site_cd ,
|
||||
$cert_no ,
|
||||
$enc_cert_data
|
||||
);
|
||||
}
|
||||
|
||||
$dec_data = $this -> mf_exec( $bin_exe ,
|
||||
"lf_CT_CLI__decrypt_enc_cert" ,
|
||||
$site_cd ,
|
||||
$cert_no ,
|
||||
$enc_cert_data ,
|
||||
$opt
|
||||
);
|
||||
if ( $dec_data == "" ) { $dec_data = "HS03"; }
|
||||
|
||||
|
||||
|
||||
+127
-150
@@ -155,96 +155,15 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
var $Result = array();
|
||||
var $Log = array();
|
||||
|
||||
// SMS 서버 접속
|
||||
function SMS_con($host, $id, $pw, $portcode) {
|
||||
$this->socket_host = $host;
|
||||
$this->socket_portcode = $portcode;
|
||||
$this->icode_id = FillSpace($id, 10);
|
||||
$this->icode_pw = FillSpace($pw, 10);
|
||||
}
|
||||
|
||||
function Init() {
|
||||
$this->Data = array(); // 발송하기 위한 패킷내용이 배열로 들어간다.
|
||||
$this->Result = array(); // 발송결과값이 배열로 들어간다.
|
||||
}
|
||||
|
||||
function Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate="", $nCount) {
|
||||
// EUC-KR로 변환
|
||||
$strCaller = iconv_euckr($strCaller);
|
||||
$strSubject = iconv_euckr($strSubject);
|
||||
$strData = iconv_euckr($strData);
|
||||
|
||||
// 문자 타입별 Port 설정.
|
||||
$sendType = strlen($strData) > 90 ? 1 : 0; // 0: SMS / 1: LMS
|
||||
|
||||
/* 개발 완료 후 아래 포트를 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)
|
||||
|
||||
if ($sendType && $sendType == 1) {
|
||||
|
||||
/** LMS 제목 **/
|
||||
/*
|
||||
제목필드의 값이 없을 경우 단말기 기종및 설정에 따라 표기 방법이 다름
|
||||
1.설정에서 제목필드보기 설정 Disable -> 제목필드값을 넣어도 미표기
|
||||
2.설정에서 제목필드보기 설정 Enable -> 제목을 넣지 않을 경우 제목없음으로 자동표시
|
||||
|
||||
제목의 첫글자에 "<",">", 개행문자가 있을경우 단말기종류 및 통신사에 따라 메세지 전송실패 -> 글자를 체크하거나 취환처리요망
|
||||
*/
|
||||
$strSubject = str_replace("\r\n", " ", $strSubject);
|
||||
$strSubject = str_replace("<", "[", $strSubject);
|
||||
$strSubject = str_replace(">", "]", $strSubject);
|
||||
|
||||
$strSubject = FillSpace($strSubject,30);
|
||||
$strData = FillSpace(CutChar($strData,1500),1500);
|
||||
} else if (!$strURL) {
|
||||
$strData = FillSpace(CutChar($strData,90),90);
|
||||
$strCaller = FillSpace($strCaller,10);
|
||||
} else {
|
||||
$strURL = FillSpace($strURL,50);
|
||||
}
|
||||
|
||||
$Error = CheckCommonTypeDest($strDest, $nCount);
|
||||
$Error = is_vaild_callback($strCallBack);
|
||||
$Error = CheckCommonTypeDate($strDate);
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return parent::Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
|
||||
}
|
||||
|
||||
|
||||
function Send() {
|
||||
global $g5;
|
||||
|
||||
@@ -265,27 +184,7 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
exit;
|
||||
}
|
||||
|
||||
$fsocket = fsockopen($this->socket_host,$this->socket_port, $errno, $errstr, 2);
|
||||
if (!$fsocket) return false;
|
||||
set_time_limit(60);
|
||||
|
||||
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);
|
||||
$this->Log[] = $puts;
|
||||
} else {
|
||||
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
|
||||
$this->Log[] = $puts;
|
||||
}
|
||||
$gets = "";
|
||||
}
|
||||
|
||||
fclose($fsocket);
|
||||
$this->Data = array();
|
||||
return true;
|
||||
return parent::Send();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -294,15 +193,6 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
class SMS5 extends SMS {
|
||||
var $Log = array();
|
||||
|
||||
function SMS_con($sms_server,$sms_id,$sms_pw,$port) {
|
||||
$this->ID=$sms_id; // 계약 후 지정
|
||||
$this->PWD=$sms_pw; // 계약 후 지정
|
||||
$this->SMS_Server=$sms_server;
|
||||
$this->SMS_Port=$port;
|
||||
$this->ID = spacing($this->ID,10);
|
||||
$this->PWD = spacing($this->PWD,10);
|
||||
}
|
||||
|
||||
/**
|
||||
* 발송번호의 값이 정확한 값인지 확인합니다.
|
||||
*
|
||||
@@ -380,7 +270,7 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
}
|
||||
}
|
||||
function Add2($strDest, $strCallBack, $strCaller, $strURL, $strMessage, $strDate="", $nCount) {
|
||||
global $g5;
|
||||
global $g5, $config;
|
||||
|
||||
$Error = $this->CheckCommonTypeDest($strDest, $nCount);
|
||||
$Error = $this->CheckCommonTypeCallBack($strCallBack);
|
||||
@@ -390,32 +280,91 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
$strCaller = spacing($strCaller,10);
|
||||
$strDate = spacing($strDate,12);
|
||||
|
||||
// 토큰키를 사용한다면
|
||||
if( isset($config['cf_icode_token_key']) && $config['cf_icode_token_key'] === $this->icode_key ){
|
||||
|
||||
for ($i=0; $i<$nCount; $i++) {
|
||||
$hp_number = spacing($strDest[$i]['bk_hp'],11);
|
||||
$strData = $strMessage;
|
||||
if( !empty($strDest[$i]['bk_name']) ){
|
||||
$strData = str_replace("{이름}", $strDest[$i]['bk_name'], $strData);
|
||||
for ($i=0; $i<$nCount; $i++) {
|
||||
$hp_number = spacing($strDest[$i]['bk_hp'],11);
|
||||
$strData = $strMessage;
|
||||
if( !empty($strDest[$i]['bk_name']) ){
|
||||
$strData = str_replace("{이름}", $strDest[$i]['bk_name'], $strData);
|
||||
}
|
||||
|
||||
$msg = $strData;
|
||||
|
||||
// 개행치환
|
||||
$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 = $hp_number;
|
||||
$callBack = $strCallBack;
|
||||
$Caller = $strCaller;
|
||||
$rsvTime = $strDate ? $strDate : '';
|
||||
|
||||
$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[$i] = '06'.str_pad(strlen($packet), 4, "0", STR_PAD_LEFT).$packet;
|
||||
}
|
||||
// 아이코드에서는 문자에 utf-8 인코딩 형식을 아직 지원하지 않는다.
|
||||
$strData = iconv('utf-8', "euc-kr", stripslashes($strData));
|
||||
|
||||
if (!$strURL) {
|
||||
$strData = spacing(cut_char($strData,80),80);
|
||||
} else {
|
||||
|
||||
$this->Data[$i] = '01144 '.$this->ID.$this->PWD.$hp_number.$strCallBack.$strCaller.$strDate.$strData;
|
||||
} else {
|
||||
$strURL = spacing($strURL,50);
|
||||
$strData = spacing($this->CheckCallCenter($strURL, $hp_number, $strData),80);
|
||||
for ($i=0; $i<$nCount; $i++) {
|
||||
$hp_number = spacing($strDest[$i]['bk_hp'],11);
|
||||
$strData = $strMessage;
|
||||
if( !empty($strDest[$i]['bk_name']) ){
|
||||
$strData = str_replace("{이름}", $strDest[$i]['bk_name'], $strData);
|
||||
}
|
||||
// 아이코드에서는 문자에 utf-8 인코딩 형식을 아직 지원하지 않는다.
|
||||
$strData = iconv('utf-8', "euc-kr", stripslashes($strData));
|
||||
|
||||
$this->Data[$i] = '05173 '.$this->ID.$this->PWD.$hp_number.$strCallBack.$strURL.$strDate.$strData;
|
||||
if (!$strURL) {
|
||||
$strData = spacing(cut_char($strData,80),80);
|
||||
|
||||
$this->Data[$i] = '01144 '.$this->ID.$this->PWD.$hp_number.$strCallBack.$strCaller.$strDate.$strData;
|
||||
} else {
|
||||
$strURL = spacing($strURL,50);
|
||||
$strData = spacing($this->CheckCallCenter($strURL, $hp_number, $strData),80);
|
||||
|
||||
$this->Data[$i] = '05173 '.$this->ID.$this->PWD.$hp_number.$strCallBack.$strURL.$strDate.$strData;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true; // 수정대기
|
||||
}
|
||||
|
||||
function Send() {
|
||||
global $g5;
|
||||
global $g5, $config;
|
||||
|
||||
$count = 1;
|
||||
|
||||
@@ -436,33 +385,61 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
exit;
|
||||
}
|
||||
|
||||
$fsocket=fsockopen($this->SMS_Server,$this->SMS_Port, $errno, $errstr, 2);
|
||||
if (!$fsocket) return false;
|
||||
set_time_limit(60);
|
||||
// 토큰키를 사용한다면
|
||||
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);
|
||||
|
||||
## php4.3.10일경우
|
||||
## zend 최신버전으로 업해주세요..
|
||||
## 또는 69번째 줄을 $this->Data as $tmp => $puts 로 변경해 주세요.
|
||||
foreach($this->Data as $puts) {
|
||||
fputs($fsocket, $puts);
|
||||
while(!$gets) { $gets = fgets($fsocket,32); }
|
||||
$json = json_decode(substr($puts,6), true);
|
||||
|
||||
foreach($this->Data as $puts) {
|
||||
$dest = substr($puts,26,11);
|
||||
fputs($fsocket, $puts);
|
||||
while(!$gets) {
|
||||
$gets = fgets($fsocket,30);
|
||||
$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 = "";
|
||||
|
||||
// 1천건씩 전송 후 5초 쉼
|
||||
if ($count++%1000 == 0) sleep(5);
|
||||
}
|
||||
if (substr($gets,0,19) == "0223 00".$dest) {
|
||||
$this->Result[] = $dest.":".substr($gets,19,10);
|
||||
$this->Log[] = $puts;
|
||||
} else {
|
||||
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
|
||||
$this->Log[] = $puts;
|
||||
}
|
||||
$gets = "";
|
||||
fclose($fsocket);
|
||||
|
||||
// 1천건씩 전송 후 5초 쉼
|
||||
if ($count++%1000 == 0) sleep(5);
|
||||
} else {
|
||||
$fsocket = fsockopen($this->SMS_Server,$this->SMS_Port);
|
||||
if (!$fsocket) return false;
|
||||
set_time_limit(300);
|
||||
|
||||
## php4.3.10일경우
|
||||
## zend 최신버전으로 업해주세요..
|
||||
## 또는 69번째 줄을 $this->Data as $tmp => $puts 로 변경해 주세요.
|
||||
|
||||
foreach($this->Data as $puts) {
|
||||
$dest = substr($puts,26,11);
|
||||
fputs($fsocket, $puts);
|
||||
while(!$gets) {
|
||||
$gets = fgets($fsocket,30);
|
||||
}
|
||||
if (substr($gets,0,19) == "0223 00".$dest) {
|
||||
$this->Result[] = $dest.":".substr($gets,19,10);
|
||||
$this->Log[] = $puts;
|
||||
} else {
|
||||
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
|
||||
$this->Log[] = $puts;
|
||||
}
|
||||
$gets = "";
|
||||
|
||||
// 1천건씩 전송 후 5초 쉼
|
||||
if ($count++%1000 == 0) sleep(5);
|
||||
}
|
||||
fclose($fsocket);
|
||||
}
|
||||
fclose($fsocket);
|
||||
$this->Data = array();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -45,7 +45,6 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
<?php echo $page ?> 페이지
|
||||
</div>
|
||||
|
||||
<?php if ($rss_href || $write_href) { ?>
|
||||
<ul class="btn_bo_user">
|
||||
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin btn" title="관리자"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">관리자</span></a></li><?php } ?>
|
||||
<?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn" title="RSS"><i class="fa fa-rss" aria-hidden="true"></i><span class="sound_only">RSS</span></a></li><?php } ?>
|
||||
@@ -66,7 +65,6 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<!-- } 게시판 페이지 정보 및 버튼 끝 -->
|
||||
|
||||
@@ -137,9 +135,9 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
<?php
|
||||
if ($list[$i]['icon_new']) echo "<span class=\"new_icon\">N<span class=\"sound_only\">새글</span></span>";
|
||||
// if ($list[$i]['file']['count']) { echo '<'.$list[$i]['file']['count'].'>'; }
|
||||
if (isset($list[$i]['icon_hot'])) echo rtrim($list[$i]['icon_hot']);
|
||||
if (isset($list[$i]['icon_file'])) echo rtrim($list[$i]['icon_file']);
|
||||
if (isset($list[$i]['icon_link'])) echo rtrim($list[$i]['icon_link']);
|
||||
if (isset($list[$i]['icon_hot'])) echo rtrim($list[$i]['icon_hot']);
|
||||
?>
|
||||
<?php if ($list[$i]['comment_cnt']) { ?><span class="sound_only">댓글</span><span class="cnt_cmt"><?php echo $list[$i]['wr_comment']; ?></span><span class="sound_only">개</span><?php } ?>
|
||||
</div>
|
||||
|
||||
@@ -101,6 +101,7 @@
|
||||
#bo_list .td_numbig {width:80px;text-align:center}
|
||||
#bo_list .txt_active {color:#5d910b}
|
||||
#bo_list .txt_expired {color:#ccc}
|
||||
#bo_list tbody tr {border-left:2px solid transparent}
|
||||
#bo_list tbody tr:hover {border-left:2px solid #253dbe}
|
||||
|
||||
#bo_cate {margin:25px 0}
|
||||
|
||||
@@ -161,7 +161,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
?>
|
||||
<li>
|
||||
<i class="fa fa-folder-open" aria-hidden="true"></i>
|
||||
<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>
|
||||
<strong><?php echo $view['file'][$i]['source'] ?></strong> <?php echo $view['file'][$i]['content'] ?> (<?php echo $view['file'][$i]['size'] ?>)
|
||||
</a>
|
||||
<br>
|
||||
@@ -176,7 +176,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
<!-- } 첨부파일 끝 -->
|
||||
<?php } ?>
|
||||
|
||||
<?php if(isset($view['link'][1]) && $view['link'][1]) { ?>
|
||||
<?php if(isset($view['link']) && array_filter($view['link'])) { ?>
|
||||
<!-- 관련링크 시작 { -->
|
||||
<section id="bo_v_link">
|
||||
<h2>관련링크</h2>
|
||||
|
||||
@@ -26,6 +26,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
$cmt_sv = $cmt_amt - $i + 1; // 댓글 헤더 z-index 재설정 ie8 이하 사이드뷰 겹침 문제 해결
|
||||
$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';
|
||||
$is_comment_reply_edit = ($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) ? 1 : 0;
|
||||
?>
|
||||
|
||||
<article id="c_<?php echo $comment_id ?>" <?php if ($cmt_depth) { ?>style="margin-left:<?php echo $cmt_depth ?>px;border-top-color:#e0e0e0"<?php } ?>>
|
||||
@@ -53,7 +54,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
<?php if (strstr($list[$i]['wr_option'], "secret")) { ?><img src="<?php echo $board_skin_url; ?>/img/icon_secret.gif" alt="비밀글"><?php } ?>
|
||||
<?php echo $comment ?>
|
||||
</p>
|
||||
<?php if($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) {
|
||||
<?php if($is_comment_reply_edit) {
|
||||
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);
|
||||
@@ -70,6 +71,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
<input type="hidden" value="<?php echo strstr($list[$i]['wr_option'],"secret") ?>" id="secret_comment_<?php echo $comment_id ?>">
|
||||
<textarea id="save_comment_<?php echo $comment_id ?>" style="display:none"><?php echo get_text($list[$i]['content1'], 0) ?></textarea>
|
||||
</div>
|
||||
<?php if($is_comment_reply_edit) { ?>
|
||||
<div class="bo_vl_opt">
|
||||
<button type="button" class="btn_cm_opt btn_b01 btn"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">댓글 옵션</span></button>
|
||||
<ul class="bo_vc_act">
|
||||
@@ -78,6 +80,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
<?php if ($list[$i]['is_del']) { ?><li><a href="<?php echo $list[$i]['del_link']; ?>" onclick="return comment_delete();">삭제</a></li><?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<script>
|
||||
$(function() {
|
||||
// 댓글 옵션창 열기
|
||||
@@ -334,13 +337,16 @@ $(function() {
|
||||
);
|
||||
});
|
||||
<?php } ?>
|
||||
$(function() {
|
||||
</script>
|
||||
<?php } ?>
|
||||
<!-- } 댓글 쓰기 끝 -->
|
||||
<script>
|
||||
jQuery(function($) {
|
||||
//댓글열기
|
||||
$(".cmt_btn").click(function(){
|
||||
$(".cmt_btn").click(function(e){
|
||||
e.preventDefault();
|
||||
$(this).toggleClass("cmt_btn_op");
|
||||
$("#bo_vc").toggle();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php } ?>
|
||||
<!-- } 댓글 쓰기 끝 -->
|
||||
</script>
|
||||
@@ -130,7 +130,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
<?php for ($i=1; $is_link && $i<=G5_LINK_COUNT; $i++) { ?>
|
||||
<div class="bo_w_link write_div">
|
||||
<label for="wr_link<?php echo $i ?>"><i class="fa fa-link" aria-hidden="true"></i><span class="sound_only"> 링크 #<?php echo $i ?></span></label>
|
||||
<input type="text" name="wr_link<?php echo $i ?>" value="<?php if($w=="u"){echo$write['wr_link'.$i];} ?>" id="wr_link<?php echo $i ?>" class="frm_input full_input" size="50">
|
||||
<input type="text" name="wr_link<?php echo $i ?>" value="<?php if($w=="u"){ echo $write['wr_link'.$i]; } ?>" id="wr_link<?php echo $i ?>" class="frm_input full_input" size="50">
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
@@ -36,7 +36,6 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
<?php echo $page ?> 페이지
|
||||
</div>
|
||||
|
||||
<?php if ($rss_href || $write_href) { ?>
|
||||
<ul class="btn_bo_user">
|
||||
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin btn" title="관리자"><i class="fa fa-cog fa-spin fa-fw"></i><span class="sound_only">관리자</span></a></li><?php } ?>
|
||||
<?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01 btn" title="RSS"><i class="fa fa-rss" aria-hidden="true"></i><span class="sound_only">RSS</span></a></li><?php } ?>
|
||||
@@ -57,7 +56,6 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
</li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<?php } ?>
|
||||
</div>
|
||||
<!-- } 게시판 페이지 정보 및 버튼 끝 -->
|
||||
|
||||
@@ -122,7 +120,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
$img_content = '<span class="no_image">no image</span>';
|
||||
}
|
||||
|
||||
echo $img_content;
|
||||
echo run_replace('thumb_image_tag', $img_content, $thumb);
|
||||
}
|
||||
?>
|
||||
</a>
|
||||
|
||||
@@ -124,9 +124,9 @@ box-shadow:inset 0 2px 5px rgb(33, 135, 202)}
|
||||
#bo_gall .gall_now .gall_text_href a {color:#ff3061}
|
||||
|
||||
#bo_gall .gall_href a:link, #bo_gall .gall_href a:focus, #bo_gall .gall_href a:hover {text-decoration:none}
|
||||
#bo_gall .gall_img {border-bottom:1px solid #eee;text-align:center;max-height:200px;overflow:hidden}
|
||||
#bo_gall .gall_img {border-bottom:1px solid #eee;text-align:center;height:200px;max-height:200px;overflow:hidden}
|
||||
#bo_gall .gall_img a,#bo_gall .gall_img .no_image,#bo_gall .gall_img .is_notice {display:block}
|
||||
#bo_gall .gall_img img {max-width:100%;height:auto !important}
|
||||
#bo_gall .gall_img img, #bo_gall .gall_img video {max-width:100%;height:auto !important}
|
||||
#bo_gall .gall_img span {display:inline-block;background:#eaeaea;text-align:center;line-height:200px;text-transform:uppercase;font-weight:bold;font-size:1.25em;color:#777}
|
||||
|
||||
#bo_gall .gall_text_href {margin:10px 0}
|
||||
|
||||
@@ -161,7 +161,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
?>
|
||||
<li>
|
||||
<i class="fa fa-folder-open" aria-hidden="true"></i>
|
||||
<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>
|
||||
<strong><?php echo $view['file'][$i]['source'] ?></strong> <?php echo $view['file'][$i]['content'] ?> (<?php echo $view['file'][$i]['size'] ?>)
|
||||
</a>
|
||||
<br>
|
||||
@@ -176,7 +176,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
<!-- } 첨부파일 끝 -->
|
||||
<?php } ?>
|
||||
|
||||
<?php if(isset($view['link'][1]) && $view['link'][1]) { ?>
|
||||
<?php if(isset($view['link']) && array_filter($view['link'])) { ?>
|
||||
<!-- 관련링크 시작 { -->
|
||||
<section id="bo_v_link">
|
||||
<h2>관련링크</h2>
|
||||
|
||||
@@ -26,6 +26,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
$cmt_sv = $cmt_amt - $i + 1; // 댓글 헤더 z-index 재설정 ie8 이하 사이드뷰 겹침 문제 해결
|
||||
$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';
|
||||
$is_comment_reply_edit = ($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) ? 1 : 0;
|
||||
?>
|
||||
|
||||
<article id="c_<?php echo $comment_id ?>" <?php if ($cmt_depth) { ?>style="margin-left:<?php echo $cmt_depth ?>px;border-top-color:#e0e0e0"<?php } ?>>
|
||||
@@ -53,7 +54,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
<?php if (strstr($list[$i]['wr_option'], "secret")) { ?><img src="<?php echo $board_skin_url; ?>/img/icon_secret.gif" alt="비밀글"><?php } ?>
|
||||
<?php echo $comment ?>
|
||||
</p>
|
||||
<?php if($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) {
|
||||
<?php if($is_comment_reply_edit) {
|
||||
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);
|
||||
@@ -70,6 +71,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
<input type="hidden" value="<?php echo strstr($list[$i]['wr_option'],"secret") ?>" id="secret_comment_<?php echo $comment_id ?>">
|
||||
<textarea id="save_comment_<?php echo $comment_id ?>" style="display:none"><?php echo get_text($list[$i]['content1'], 0) ?></textarea>
|
||||
</div>
|
||||
<?php if($is_comment_reply_edit) { ?>
|
||||
<div class="bo_vl_opt">
|
||||
<button type="button" class="btn_cm_opt btn_b01 btn"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">댓글 옵션</span></button>
|
||||
<ul class="bo_vc_act">
|
||||
@@ -78,6 +80,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
<?php if ($list[$i]['is_del']) { ?><li><a href="<?php echo $list[$i]['del_link']; ?>" onclick="return comment_delete();">삭제</a></li><?php } ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<script>
|
||||
$(function() {
|
||||
// 댓글 옵션창 열기
|
||||
@@ -335,13 +338,16 @@ $(function() {
|
||||
);
|
||||
});
|
||||
<?php } ?>
|
||||
$(function() {
|
||||
</script>
|
||||
<?php } ?>
|
||||
<!-- } 댓글 쓰기 끝 -->
|
||||
<script>
|
||||
jQuery(function($) {
|
||||
//댓글열기
|
||||
$(".cmt_btn").click(function(){
|
||||
$(".cmt_btn").click(function(e){
|
||||
e.preventDefault();
|
||||
$(this).toggleClass("cmt_btn_op");
|
||||
$("#bo_vc").toggle();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php } ?>
|
||||
<!-- } 댓글 쓰기 끝 -->
|
||||
</script>
|
||||
@@ -128,7 +128,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
|
||||
<?php for ($i=1; $is_link && $i<=G5_LINK_COUNT; $i++) { ?>
|
||||
<div class="bo_w_link write_div">
|
||||
<label for="wr_link<?php echo $i ?>"><i class="fa fa-link" aria-hidden="true"></i><span class="sound_only"> 링크 #<?php echo $i ?></span></label>
|
||||
<input type="text" name="wr_link<?php echo $i ?>" value="<?php if($w=="u"){echo$write['wr_link'.$i];} ?>" id="wr_link<?php echo $i ?>" class="frm_input full_input" size="50">
|
||||
<input type="text" name="wr_link<?php echo $i ?>" value="<?php if($w=="u"){ echo $write['wr_link'.$i]; } ?>" id="wr_link<?php echo $i ?>" class="frm_input full_input" size="50">
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
||||
}
|
||||
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
||||
?>
|
||||
<li class="galley_li">
|
||||
<a href="<?php echo $list[$i]['href'] ?>" class="lt_img"><?php echo $img_content; ?></a>
|
||||
<li class="gallery_li">
|
||||
<a href="<?php echo $list[$i]['href'] ?>" class="lt_img"><?php echo run_replace('thumb_image_tag', $img_content, $thumb); ?></a>
|
||||
<?php
|
||||
if ($list[$i]['icon_secret']) echo "<i class=\"fa fa-lock\" aria-hidden=\"true\"></i><span class=\"sound_only\">비밀글</span> ";
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
.pic_lt ul:after {display:block;visibility:hidden;clear:both;content:""}
|
||||
.pic_lt ul {margin: 0 -10px}
|
||||
.pic_lt li {float:left;width:25%;padding:0 10px}
|
||||
.pic_lt li.galley_li:nth-child(4n+1) {clear: both!important}
|
||||
.pic_lt li.gallery_li:nth-child(4n+1) {clear: both!important}
|
||||
.pic_lt li .lt_img {margin:5px 0;display:block}
|
||||
.pic_lt li .lt_img img {width:100%;height:auto}
|
||||
.pic_lt li .lt_img img, .pic_lt li .lt_img video {width:100%;height:auto}
|
||||
.pic_lt li a:hover {color:#a22121}
|
||||
.pic_lt li .fa-heart {color:#ff0000}
|
||||
.pic_lt li .fa-lock {display:inline-block;line-height:14px;width:16px;font-size:0.833em;color:#4f818c;background:#cbe3e8;text-align:center;border-radius:2px;font-size:12px;border:1px solid #cbe3e8;vertical-align:middle}
|
||||
|
||||
@@ -27,7 +27,7 @@ $list_count = (is_array($list) && $list) ? count($list) : 0;
|
||||
$thumb['alt'] = '이미지가 없습니다.';
|
||||
}
|
||||
$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';
|
||||
$img_link_html = '<a href="'.$list[$i]['href'].'" class="lt_img" >'.$img_content.'</a>';
|
||||
$img_link_html = '<a href="'.$list[$i]['href'].'" class="lt_img" >'.run_replace('thumb_image_tag', $img_content, $thumb).'</a>';
|
||||
}
|
||||
?>
|
||||
<li>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
.pic_li_lt li {border-bottom:1px solid #e5ecee;margin-bottom:10px}
|
||||
.pic_li_lt li .lt_img {display:none}
|
||||
.pic_li_lt li:first-child .lt_img {display:block;margin:0 0 10px;display:block}
|
||||
.pic_li_lt li:first-child .lt_img img {width:100%;height:auto}
|
||||
.pic_li_lt li:first-child .lt_img img, .pic_li_lt li .lt_img video {width:100%;height:auto}
|
||||
.pic_li_lt li .pic_li_tit {font-weight:bold;font-size:1.2em;line-height:20px;vertical-align:middle}
|
||||
|
||||
.pic_li_lt li .fa-heart {color:#ff0000}
|
||||
|
||||
@@ -107,7 +107,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$qa_skin_url.'/style.css">', 0);
|
||||
?>
|
||||
<li>
|
||||
<i class="fa fa-download" aria-hidden="true"></i>
|
||||
<a href="<?php echo $view['download_href'][$i]; ?>" class="view_file_download">
|
||||
<a href="<?php echo $view['download_href'][$i]; ?>" class="view_file_download" download>
|
||||
<strong><?php echo $view['download_source'][$i] ?></strong>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -14,7 +14,7 @@ if( G5_SOCIAL_USE_POPUP ) {
|
||||
$self_url = G5_SOCIAL_LOGIN_URL.'/popup.php';
|
||||
}
|
||||
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css">', 10);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css?ver='.G5_CSS_VER.'">', 10);
|
||||
?>
|
||||
|
||||
<div id="sns_login" class="login-sns sns-wrap-32 sns-wrap-over">
|
||||
|
||||
@@ -14,7 +14,7 @@ if( G5_SOCIAL_USE_POPUP ) {
|
||||
$self_url = G5_SOCIAL_LOGIN_URL.'/popup.php';
|
||||
}
|
||||
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css">', 10);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css?ver='.G5_CSS_VER.'">', 10);
|
||||
?>
|
||||
|
||||
<div class="login-sns sns-wrap-32 sns-wrap-over" id="sns_outlogin">
|
||||
|
||||
@@ -15,7 +15,7 @@ if( G5_SOCIAL_USE_POPUP ) {
|
||||
}
|
||||
|
||||
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css">', 10);
|
||||
add_stylesheet('<link rel="stylesheet" href="'.get_social_skin_url().'/style.css?ver='.G5_CSS_VER.'">', 10);
|
||||
?>
|
||||
<div>
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user