Compare commits

..
158 Commits
Author SHA1 Message Date
thisgun 2aae238d70 Merge branch 'renewal2' of github.com:gnuboard/g5 into renewal 2018-01-25 16:59:43 +09:00
thisgun 6f1c3bee2c 틀린 구문 수정 2018-01-25 16:29:51 +09:00
thisgun 5094fafdf6 Merge branch 'renewal2' of github.com:gnuboard/g5 into renewal 2018-01-25 09:50:09 +09:00
thisgun 3eac467259 버전 5.3.0.2 으로 변경 2018-01-24 18:35:45 +09:00
thisgun 326d7b9865 Merge branch 'master' into renewal2 2018-01-19 18:24:08 +09:00
thisgun 9e2204fdac 메모에 페이징 적용 2018-01-19 18:18:45 +09:00
thisgun 97483e7fdb 회원가입 스킨 수정 2018-01-18 12:22:46 +09:00
thisgun 06459ceeeb 회원 이미지 아이콘 등록 버그 수정 2018-01-18 11:42:34 +09:00
thisgun ffb3cb7fd8 일부 소셜 로그인 소스 수정 2018-01-18 10:33:37 +09:00
thisgun 365b5e53a9 모바일 댓글 스킨 수정 2018-01-17 17:33:46 +09:00
thisgun 75b8241e91 모바일 스킨 수정 2018-01-17 17:24:52 +09:00
thisgun eff027939c 댓글 부분 처리 수정 2018-01-17 17:07:38 +09:00
thisgun 99a02d692f 회원아이콘 불편한 점 수정 2018-01-17 16:53:41 +09:00
thisgun d250c772af 소셜 로그인 관련 수정 2018-01-16 17:23:45 +09:00
thisgun fab5f673d9 일부 구문 수정 2018-01-16 15:43:14 +09:00
thisgun e3f91c8a81 일부 css 수정 2018-01-16 14:55:39 +09:00
thisgun 1140c55cec Merge branch 'master' into renewal2 2018-01-16 13:46:54 +09:00
thisgun a1247d5da9 이전글 다음글 오류 수정 2018-01-11 20:12:26 +09:00
thisgun c85d6cf414 게시판 타이틀 잘못된 부분 수정 2018-01-05 10:55:21 +09:00
thisgun f2a6e758f3 충돌 수정 2017-12-27 12:22:20 +09:00
thisgun b64e3179cd 충돌 수정 2017-12-27 11:15:14 +09:00
thisgun dd51045f6d 5.3.0.1 버전 보안패치 및 오류 수정 2017-12-22 15:31:32 +09:00
thisgun 2ca86e3649 베타 버전 5.3.0.1 수정 2017-12-22 14:45:13 +09:00
thisgun 7e33fe21cb sns 댓글 코드 수정 2017-12-22 14:44:27 +09:00
thisgun abd2d60522 버전정보 수정 2017-12-22 14:35:21 +09:00
thisgun a31e155c1e 하단 로고 코드 수정 2017-12-22 14:21:22 +09:00
thisgun b8a6be9662 관리자 메뉴 아이콘 추가 2017-12-22 14:11:57 +09:00
thisgun 022322d678 일부 코드 수정 2017-12-22 14:11:44 +09:00
thisgun 1d161bb26e 썸네일 코드 수정 2017-12-22 11:39:17 +09:00
thisgun 3e123debdf 기타 오류 수정 2017-12-22 11:06:15 +09:00
thisgun 95d187eeee 5.2 버전과 충돌 수정 2017-12-21 10:27:14 +09:00
thisgun 9567478b7d Merge branch 'renewal2' of github.com:gnuboard/g5 into renewal2 2017-12-21 10:21:50 +09:00
thisgun 4566ef6935 여러 코드 수정 2017-12-21 10:16:55 +09:00
thisgun e48f823e50 관리자 메뉴 수정 2017-12-20 18:51:12 +09:00
thisgun 75de0e3e60 충돌 수정 2017-12-12 12:02:49 +09:00
thisgun 0408bae838 충돌 수정 2017-12-04 16:02:23 +09:00
thisgun 35268a413f 관리자 게시판 복사 링크 수정 2017-12-04 15:21:15 +09:00
sora90224 89ad616008 에디터 기본태그 적용 2017-11-29 16:07:07 +09:00
thisgun ad443f679c 리뉴얼 테마 포함된 5.3 버전 2017-11-21 11:06:26 +09:00
thisgun 2a94c17b58 일부 코드 수정 2017-11-21 10:56:19 +09:00
sora90224 c9924a711f #77 사이드뷰 수정 2017-11-21 10:38:27 +09:00
thisgun d04f5f54d5 모바일에서 글자 크기 조정 class 수정 2017-11-21 10:28:08 +09:00
thisgun dc005d6441 프로필 이미지 코드 수정 2017-11-21 09:56:27 +09:00
thisgun ecc5c2e7e9 기타 오류 수정 2017-11-21 09:20:15 +09:00
thisgun d37619aa95 프로필 이미지 잘못된 코드 전부 수정 2017-11-20 21:10:17 +09:00
thisgun 0ae22667a0 주석 처리 2017-11-20 10:54:03 +09:00
thisgun dff2c45acc 관리자 메뉴 정렬 부분 수정 2017-11-20 09:29:01 +09:00
thisgun 56da0d90e3 소셜 로그인 가입 처리 수정 2017-11-17 18:21:18 +09:00
thisgun 88dc122183 소셜 로그인 메일 인증에 관해서 수정 2017-11-17 18:04:23 +09:00
thisgun 7dba46f650 소셜 회원가입 코드 정리 2017-11-17 17:37:57 +09:00
thisgun 604531906a 소셜로그인 세션 관련 수정 2017-11-17 15:25:49 +09:00
thisgun 25bce8592d 회원 탈퇴 부분 수정 2017-11-17 10:30:42 +09:00
thisgun 520b99c0a5 kakao 수정 2017-11-16 16:00:43 +09:00
thisgun 22bd15b6ef 카카오 설정 수정 2017-11-16 15:38:35 +09:00
thisgun 45582cb859 소셜 로그인 잘못된 설정 수정 2017-11-16 12:17:57 +09:00
thisgun 723e485755 소셜 설정값 수정 2017-11-16 11:27:47 +09:00
thisgun 215d631ed9 소셜 로그인 정보 수정 2017-11-16 11:05:28 +09:00
thisgun 5ab4f9536a 소셜 로그인 수정 2017-11-16 10:38:02 +09:00
thisgun ca07c830b3 잘못된 문구 수정 2017-11-15 16:56:21 +09:00
thisgun d337fc41c0 Merge branch 'renewal2' of github.com:gnuboard/g5 into renewal2 2017-11-15 15:58:26 +09:00
thisgun f1a3f87d68 소셜 문구 수정 2017-11-15 15:58:17 +09:00
sora90224 1626733833 Merge branch 'renewal2' of github.com:gnuboard/g5 into renewal2 2017-11-15 10:27:16 +09:00
sora90224 a64ab417b1 #76 상단높이 수정 2017-11-15 10:25:08 +09:00
thisgun b8d788c1b4 리뉴얼 잘못된 코드 수정 2017-11-14 14:48:37 +09:00
thisgun 761722881a 소셜 css 수정 2017-11-14 12:07:33 +09:00
thisgun 05fb6f7a68 bxslider 파일 수정 2017-11-14 11:46:34 +09:00
thisgun c427c25ee4 회원가입 코드 수정 2017-11-13 12:22:03 +09:00
thisgun 53b5e8b5ff 리뉴얼 수정 중 2017-11-13 10:34:21 +09:00
thisgun a72b34adf6 리뉴얼 수정 2017-11-10 18:45:26 +09:00
sora90224 b6ffbcf901 Merge branch 'renewal2' of github.com:gnuboard/g5 into renewal2 2017-11-10 12:10:25 +09:00
sora90224 76b691c719 #75 소셜로그인 수정 2017-11-10 12:10:05 +09:00
thisgun a402501c6f 갤러리 스킨 수정 및 일부 코드 수정 2017-11-10 10:59:20 +09:00
thisgun 1afb5a76ca 리뉴얼 수정 2017-11-09 16:36:38 +09:00
thisgun 260de461bc 그누보드5 리뉴얼 테마 수정 2017-11-09 10:32:24 +09:00
thisgun f0035aeb98 리뉴얼 테마 수정 2017-11-09 09:39:49 +09:00
thisgun 320314262d 소셜 로그인 일부 소스 수정 2017-11-08 19:45:30 +09:00
thisgun b3b0762d30 소셜 로그인 수정 2017-11-08 11:59:41 +09:00
thisgun c865379f13 소셜 로그인 수정 2017-11-07 19:06:52 +09:00
thisgun 218d198716 리뉴얼 작업 수정중 2017-11-07 18:15:26 +09:00
thisgun 980ca5b11e 리뉴얼 수정중 2017-11-07 17:49:01 +09:00
thisgun 0f91e6bb09 소셜 플러그인 수정중 2017-11-07 16:56:46 +09:00
thisgun bf23913cff Merge branch 'master' of github.com:gnuboard/g5 into renewal5 2017-11-07 16:11:20 +09:00
thisgun b03b0a1b1a 그누보드5 리뉴얼 소셜 수정중 2017-11-06 16:13:13 +09:00
thisgun 23bf0d6a17 소셜로그인 수정 2017-10-26 10:19:49 +09:00
thisgun 1824cf0f27 리뉴얼 스킨 파일 수정 2017-10-25 15:50:52 +09:00
thisgun 4ab7d7a402 회원 스킨 수정 2017-10-25 15:23:59 +09:00
thisgun 4cf3013de6 리뉴얼 content 스킨 수정 2017-10-25 15:09:11 +09:00
thisgun 4ea62e4036 리뉴얼 faq 스킨 수정 2017-10-25 15:08:23 +09:00
thisgun 726f456595 리뉴얼 new 스킨 수정 2017-10-25 14:59:52 +09:00
thisgun 43310e615b 리뉴얼 visit 수정 2017-10-25 12:10:51 +09:00
thisgun 570f0cfb69 검색어 스킨 리뉴얼 수정 2017-10-25 12:07:49 +09:00
thisgun 68538d988e 리뉴얼 qa skin 수정 2017-10-25 11:59:32 +09:00
thisgun d6faf2cc72 리뉴얼 popular 스킨 수정 2017-10-25 11:57:55 +09:00
thisgun e0f330912c 리뉴얼 poll 스킨 수정 2017-10-25 11:57:27 +09:00
thisgun f25cf1a69b outlogin skin 리뉴얼에서 수정 2017-10-25 11:51:06 +09:00
thisgun 82a48854a7 리뉴얼 수정중 1 2017-10-25 11:49:05 +09:00
thisgun 376025ba31 master 와 merge 2017-10-25 11:09:31 +09:00
thisgun 2d51200270 테마 파일 수정 2017-10-25 10:37:21 +09:00
thisgun 1b37f8b4e7 관리자 페이지 앵커 스크립트 적용 2017-10-24 17:52:49 +09:00
thisgun 8a5b733d92 리뉴얼5 브랜치 수정중 2017-10-24 14:05:47 +09:00
thisgun d66b56484f 리뉴얼 수정중 10-18 2017-10-18 16:59:52 +09:00
thisgun cb7fda687c 리뉴얼 수정중 10-18 2017-10-18 16:59:33 +09:00
thisgun 2b73333273 테마 수정중 2017-09-01 21:01:48 +09:00
thisgun b5b4c67bcd 테마 모바일 수정중 2017-09-01 14:53:27 +09:00
thisgun bb896d81aa 틀린 구문 수정 2017-09-01 14:19:06 +09:00
thisgun ae2bab45aa 테마 수정 2017-09-01 14:09:49 +09:00
thisgun b7adf0a158 리뉴얼 테마 수정중 2017-09-01 13:55:58 +09:00
thisgun dac658451e 테마 일부 수정 2017-09-01 11:45:50 +09:00
thisgun a20dc27a5a 리뉴얼 부분 수정 2017-09-01 11:28:15 +09:00
thisgun 00a98ea6ea 그누보드5 리뉴얼 수정 2017-08-31 17:58:08 +09:00
thisgun 63907105f3 소셜 로그인 등 수정 2017-08-31 15:15:56 +09:00
thisgun 4447579b20 모바일 스킨 수정 2017-08-28 20:40:23 +09:00
thisgun fe63e1c4ad 찾기 수정 2017-08-28 20:39:48 +09:00
thisgun e285dadef5 QA 스킨 모바일 수정 2017-08-28 20:39:19 +09:00
thisgun 3b081723ba 모바일 스킨 수정 2017-08-28 20:38:09 +09:00
thisgun d400071b87 모바일 스킨 수정 2017-08-28 20:37:47 +09:00
thisgun 32c93ff469 모바일 스킨 수정 2017-08-28 20:37:06 +09:00
thisgun d52c2fb9fc 모바일 새창 스킨 수정 2017-08-28 20:36:33 +09:00
thisgun 6d8d45410a 모바일 수정 2017-08-28 20:35:47 +09:00
thisgun 624a944262 123 2017-08-28 20:33:22 +09:00
thisgun da0ade0de1 123 2017-08-28 20:32:48 +09:00
thisgun f4da43acfc 123 2017-08-28 20:31:37 +09:00
thisgun 123bea4607 1 2017-08-28 20:30:54 +09:00
thisgun 08bbdb090a 모바일 수정중 2017-08-28 20:28:42 +09:00
thisgun 05a474714b 리뉴얼 수정중 2017-08-28 20:08:21 +09:00
thisgun dd51aeb47f 리뉴얼 수정중 2017-08-28 11:26:10 +09:00
thisgun 597e4f711e 리뉴얼 수정중 2017-08-28 11:24:51 +09:00
thisgun 116bb30468 관리자 메뉴 수정 2017-08-28 10:43:49 +09:00
thisgun 12f0e53d41 sms 관리 수정 2017-08-28 10:39:53 +09:00
thisgun 5712c7540b 관리자 메뉴 처리 2017-08-28 10:26:56 +09:00
thisgun aede8990fb 6 2017-08-25 17:26:15 +09:00
thisgun 53e1ecb15f 5 2017-08-25 17:25:48 +09:00
thisgun f3e8404acf 5 2017-08-25 17:25:40 +09:00
thisgun 0468981740 5 2017-08-25 17:24:36 +09:00
thisgun d9b983678a 5 2017-08-25 17:24:11 +09:00
thisgun d5406effd7 5 2017-08-25 17:23:37 +09:00
thisgun 70282230e7 5 2017-08-25 17:23:08 +09:00
thisgun adac801b42 5 2017-08-25 17:17:17 +09:00
thisgun cd37bcde96 회원폼 수정 2017-08-25 17:13:20 +09:00
thisgun a2eb5044db 3 2017-08-25 17:10:06 +09:00
thisgun 4e3926bbf8 3 2017-08-25 17:09:06 +09:00
thisgun 1d2ab850fd 환경설정 파일 수정 2017-08-25 17:08:25 +09:00
thisgun be3687cef3 2 2017-08-25 16:52:30 +09:00
thisgun 453fce1649 2 2017-08-25 16:50:43 +09:00
thisgun cf3ec61f07 2 2017-08-25 16:49:28 +09:00
thisgun 8a63521550 2 2017-08-25 16:48:12 +09:00
thisgun a02634c386 1 2017-08-25 16:30:11 +09:00
thisgun 0352b2d59d 1 2017-08-25 16:29:01 +09:00
thisgun 4fc41d05ae 관리자 페이지 수정 2017-08-25 16:11:47 +09:00
thisgun 6dbafdaadb 관리자 페이지 수정중 2017-08-25 14:37:58 +09:00
thisgun f145b12932 관리자 페이지 수정 2017-08-25 14:27:54 +09:00
thisgun ab3f7a3c76 Merge branch 'master' of github.com:gnuboard/g5 into renewal10 2017-08-25 09:30:17 +09:00
thisgun 47a4a10f89 리뉴얼 소스 수정 2017-08-24 12:02:40 +09:00
thisgun 97cb50ab8b Merge branch 'master' into renewal10 2017-08-22 17:04:59 +09:00
thisgun 7e5c171a6d 리뉴얼소스 수정 2017-08-14 20:30:22 +09:00
thisgun 816247ab53 Merge branch 'master' of github.com:gnuboard/g5 into renewal10 2017-08-14 17:31:05 +09:00
thisgun 0432bd677b 그누보드5 리뉴얼 패치중 2017-08-14 16:40:48 +09:00
thisgun 0954b3ce74 리뉴얼과 합침 2017-08-11 15:35:18 +09:00
181 changed files with 1182 additions and 1828 deletions
+1 -49
View File
@@ -355,29 +355,6 @@ function get_admin_token()
return $token;
}
// 관리자가 자동등록방지를 사용해야 할 경우
function get_admin_captcha_by($type='get'){
$captcha_name = 'ss_admin_use_captcha';
if($type === 'remove'){
set_session($captcha_name, '');
}
return get_session($captcha_name);
}
//input value 에서 xss 공격 filter 역할을 함 ( 반드시 input value='' 타입에만 사용할것 )
function get_sanitize_input($s, $is_html=false){
if(!$is_html){
$s = strip_tags($s);
}
$s = htmlspecialchars($s, ENT_QUOTES, 'utf-8');
return $s;
}
// POST로 넘어온 토큰과 세션에 저장된 토큰 비교
function check_admin_token()
@@ -426,25 +403,6 @@ function admin_referer_check($return=false)
}
}
function admin_check_xss_params($params){
if( ! $params ) return;
foreach( $params as $key=>$value ){
if ( empty($value) ) continue;
if( is_array($value) ){
admin_check_xss_params($params);
} else if ( preg_match('/<\s?[^\>]*\/?\s?>/i', $value) && preg_match('/script.*?\/script/ius', $value) ){
alert('요청 쿼리에 잘못된 스크립트문장이 있습니다.\\nXSS 공격일수도 있습니다.');
die();
}
}
return;
}
// 접근 권한 검사
if (!$member['mb_id'])
{
@@ -467,7 +425,7 @@ else if ($is_admin != 'super')
}
// 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.
$admin_key = md5($member['mb_datetime'] . get_real_client_ip() . $_SERVER['HTTP_USER_AGENT']);
$admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
if (get_session('ss_mb_key') !== $admin_key) {
session_destroy();
@@ -508,12 +466,6 @@ if (isset($stx)) $arr_query[] = 'stx='.$stx;
if (isset($page)) $arr_query[] = 'page='.$page;
$qstr = implode("&amp;", $arr_query);
if ( isset($_REQUEST) && $_REQUEST ){
if( admin_referer_check(true) ){
admin_check_xss_params($_REQUEST);
}
}
// 관리자에서는 추가 스크립트는 사용하지 않는다.
//$config['cf_add_script'] = '';
?>
-1
View File
@@ -19,6 +19,5 @@ if(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') &&
$menu['menu100'][] = array('100520', '접속로그 변환', G5_ADMIN_URL.'/browscap_convert.php', 'cf_visit_cnvrt');
}
$menu['menu100'][] = array('100410', 'DB업그레이드', G5_ADMIN_URL.'/dbupgrade.php', 'db_upgrade');
$menu['menu100'][] = array('100400', '부가서비스', G5_ADMIN_URL.'/service.php', 'cf_service');
?>
-7
View File
@@ -1,7 +0,0 @@
<?php
include_once('./_common.php');
if( isset($_POST['admin_use_captcha']) ){
set_session('ss_admin_use_captcha', true);
}
?>
+2 -9
View File
@@ -9,24 +9,17 @@ if ($is_admin != 'super')
check_admin_token();
$count = (isset($_POST['chk']) && is_array($_POST['chk'])) ? count($_POST['chk']) : 0;
$count = count($_POST['chk']);
if (!$count)
alert($_POST['act_button']." 하실 항목을 하나 이상 체크하세요.");
if ( (isset($_POST['mb_id']) && ! is_array($_POST['mb_id'])) || (isset($_POST['au_menu']) && ! is_array($_POST['au_menu'])) ){
alert("잘못된 요청입니다.");
}
for ($i=0; $i<$count; $i++)
{
// 실제 번호를 넘김
$k = $chk[$i];
$mb_id = preg_replace('/[^a-zA-Z0-9_]/', '', $_POST['mb_id'][$k]);
$au_menu = preg_replace('/[^a-zA-Z0-9_]/', '', $_POST['au_menu'][$k]);
$sql = " delete from {$g5['auth_table']} where mb_id = '".$mb_id."' and au_menu = '".$au_menu."' ";
$sql = " delete from {$g5['auth_table']} where mb_id = '{$_POST['mb_id'][$k]}' and au_menu = '{$_POST['au_menu'][$k]}' ";
sql_query($sql);
}
+2 -70
View File
@@ -230,7 +230,7 @@ $pg_anchor = '<ul class="anchor">
<tr>
<th scope="row"><label for="bo_category_list">분류</label></th>
<td>
<?php echo help('분류와 분류 사이는 | 로 구분하세요. (예: 질문|답변) 첫자로 #은 입력하지 마세요. (예: #질문|#답변 [X])'."\n".'분류명에 일부 특수문자 ()/ 는 사용할수 없습니다.'); ?>
<?php echo help('분류와 분류 사이는 | 로 구분하세요. (예: 질문|답변) 첫자로 #은 입력하지 마세요. (예: #질문|#답변 [X])') ?>
<input type="text" name="bo_category_list" value="<?php echo get_text($board['bo_category_list']) ?>" id="bo_category_list" class="frm_input" size="70">
<input type="checkbox" name="bo_use_category" value="1" id="bo_use_category" <?php echo $board['bo_use_category']?'checked':''; ?>>
<label for="bo_use_category">사용</label>
@@ -825,7 +825,6 @@ $pg_anchor = '<ul class="anchor">
<label for="chk_all_mobile_skin">전체적용</label>
</td>
</tr>
<?php if ($is_admin === 'super'){ // 슈퍼관리자인 경우에만 수정 가능 ?>
<tr>
<th scope="row"><label for="bo_include_head">상단 파일 경로</label></th>
<td>
@@ -850,22 +849,6 @@ $pg_anchor = '<ul class="anchor">
<label for="chk_all_include_tail">전체적용</label>
</td>
</tr>
<tr id="admin_captcha_box" style="display:none;">
<th scope="row">자동등록방지</th>
<td>
<?php
echo help("파일 경로를 입력 또는 수정시 캡챠를 반드시 입력해야 합니다.");
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
$captcha_html = captcha_html();
$captcha_js = chk_captcha_js();
echo $captcha_html;
?>
<script>
jQuery("#captcha_key").removeAttr("required").removeClass("required");
</script>
</td>
</tr>
<tr>
<th scope="row"><label for="bo_content_head">상단 내용</label></th>
<td>
@@ -914,7 +897,6 @@ $pg_anchor = '<ul class="anchor">
<label for="chk_all_mobile_content_tail">전체적용</label>
</td>
</tr>
<?php } //end if $is_admin === 'super' ?>
<tr>
<th scope="row"><label for="bo_insert_content">글쓰기 기본 내용</label></th>
<td>
@@ -1261,7 +1243,7 @@ $pg_anchor = '<ul class="anchor">
<div class="btn_fixed_top">
<?php if( $bo_table && $w ){ ?>
<a href="./board_copy.php?bo_table=<?php echo $board['bo_table']; ?>" id="board_copy" target="win_board_copy" class=" btn_02 btn">게시판복사</a>
<a href="<?php echo G5_BBS_URL ?>/board.php?bo_table=<?php echo $board['bo_table']; ?>" class=" btn_02 btn">게시판 바로가기</a>
<a href="<?php echo G5_BBS_URL ?>/board.php?bo_table=<?php echo $board['bo_table']; ?>'" class=" btn_02 btn">게시판 바로가기</a>
<a href="./board_thumbnail_delete.php?bo_table=<?php echo $board['bo_table'].'&amp;'.$qstr;?>" onclick="return delete_confirm2('게시판 썸네일 파일을 삭제하시겠습니까?');" class="btn_02 btn">게시판 썸네일 삭제</a>
<?php } ?>
<input type="submit" value="확인" class="btn_submi btn btn_01" accesskey="s">
@@ -1326,52 +1308,6 @@ function set_point(f) {
}
}
var captcha_chk = false;
function use_captcha_check(){
$.ajax({
type: "POST",
url: g5_admin_url+"/ajax.use_captcha.php",
data: { admin_use_captcha: "1" },
cache: false,
async: false,
dataType: "json",
success: function(data) {
}
});
}
function frm_check_file(){
var bo_include_head = "<?php echo $board['bo_include_head']; ?>";
var bo_include_tail = "<?php echo $board['bo_include_tail']; ?>";
var head = jQuery.trim(jQuery("#bo_include_head").val());
var tail = jQuery.trim(jQuery("#bo_include_tail").val());
if(bo_include_head !== head || bo_include_tail !== tail){
// 캡챠를 사용합니다.
jQuery("#admin_captcha_box").show();
captcha_chk = true;
use_captcha_check();
return false;
} else {
jQuery("#admin_captcha_box").hide();
}
return true;
}
jQuery(function($){
if( window.self !== window.top ){ // frame 또는 iframe을 사용할 경우 체크
$("#bo_include_head, #bo_include_tail").on("change paste keyup", function(e) {
frm_check_file();
});
use_captcha_check();
}
});
function fboardform_submit(f)
{
<?php echo get_editor_js("bo_content_head"); ?>
@@ -1391,10 +1327,6 @@ function fboardform_submit(f)
return false;
}
if( captcha_chk ) {
<?php echo isset($captcha_js) ? $captcha_js : ''; // 캡챠 사용시 자바스크립트에서 입력된 캡챠를 검사함 ?>
}
return true;
}
</script>
+32 -66
View File
@@ -14,42 +14,33 @@ if (!$bo_table) { alert('게시판 TABLE명은 반드시 입력하세요.'); }
if (!preg_match("/^([A-Za-z0-9_]{1,20})$/", $bo_table)) { alert('게시판 TABLE명은 공백없이 영문자, 숫자, _ 만 사용 가능합니다. (20자 이내)'); }
if (!$_POST['bo_subject']) { alert('게시판 제목을 입력하세요.'); }
$bo_include_head = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($bo_include_head, 0, 255));
$bo_include_tail = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($bo_include_tail, 0, 255));
$_POST['bo_include_head'] = preg_replace("#[\\\]+$#", "", substr($_POST['bo_include_head'], 0, 255));
$_POST['bo_include_tail'] = preg_replace("#[\\\]+$#", "", substr($_POST['bo_include_tail'], 0, 255));
// 관리자가 자동등록방지를 사용해야 할 경우
if ($board && ($board['bo_include_head'] !== $bo_include_head || $board['bo_include_tail'] !== $bo_include_tail) && function_exists('get_admin_captcha_by') && get_admin_captcha_by()){
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
if (!chk_captcha()) {
alert('자동등록방지 숫자가 틀렸습니다.');
}
}
if ($file = $bo_include_head) {
$file_ext = pathinfo($file, PATHINFO_EXTENSION);
if( ! $file_ext || ! in_array($file_ext, array('php', 'htm', 'html')) || ! preg_match('/^.*\.(php|htm|html)$/i', $file) ) {
alert('상단 파일 경로의 확장자는 php, htm, html 만 허용합니다.');
if ($file = $_POST['bo_include_head']) {
$purl = parse_url($file);
$file = $purl['path'];
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
alert('상단 파일 경로의 확장자는 php, html 만 허용합니다.');
}
$_POST['bo_include_head'] = $file;
}
if ($file = $bo_include_tail) {
$file_ext = pathinfo($file, PATHINFO_EXTENSION);
if( ! $file_ext || ! in_array($file_ext, array('php', 'htm', 'html')) || ! preg_match('/^.*\.(php|htm|html)$/i', $file) ) {
alert('하단 파일 경로의 확장자는 php, htm, html 만 허용합니다.');
if ($file = $_POST['bo_include_tail']) {
$purl = parse_url($file);
$file = $purl['path'];
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
alert('하단 파일 경로의 확장자는 php, html 만 허용합니다.');
}
$_POST['bo_include_tail'] = $file;
}
if(!is_include_path_check($bo_include_head, 1)) {
alert('상단 파일 경로에 포함시킬수 없는 문자열이 있습니다.');
if(!is_include_path_check($_POST['bo_include_head'], 1)) {
alert('/data/file/ 또는 /data/editor/ 포함된 문자를 상단 파일 경로에 포함시킬수 없습니다.');
}
if(!is_include_path_check($bo_include_tail, 1)) {
alert('하단 파일 경로에 포함시킬수 없는 문자열이 있습니다.');
if(!is_include_path_check($_POST['bo_include_tail'], 1)) {
alert('/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.');
}
$board_path = G5_DATA_PATH.'/file/'.$bo_table;
@@ -69,11 +60,6 @@ $f = @fopen($file, 'w');
$src_char = array('&', '=');
$dst_char = array('&', '〓');
$bo_category_list = str_replace($src_char, $dst_char, $bo_category_list);
//https://github.com/gnuboard/gnuboard5/commit/f5f4925d4eb28ba1af728e1065fc2bdd9ce1da58 에 따른 조치
$str_bo_category_list = isset($_POST['bo_category_list']) ? preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\/\^\*]/", "", $_POST['bo_category_list']) : '';
$_POST['bo_subject'] = strip_tags($_POST['bo_subject']);
$_POST['bo_mobile_subject'] = strip_tags($_POST['bo_mobile_subject']);
$sql_common = " gr_id = '{$_POST['gr_id']}',
bo_subject = '{$_POST['bo_subject']}',
@@ -96,7 +82,7 @@ $sql_common = " gr_id = '{$_POST['gr_id']}',
bo_comment_point = '{$_POST['bo_comment_point']}',
bo_download_point = '{$_POST['bo_download_point']}',
bo_use_category = '{$_POST['bo_use_category']}',
bo_category_list = '{$str_bo_category_list}',
bo_category_list = '{$_POST['bo_category_list']}',
bo_use_sideview = '{$_POST['bo_use_sideview']}',
bo_use_file_content = '{$_POST['bo_use_file_content']}',
bo_use_secret = '{$_POST['bo_use_secret']}',
@@ -124,20 +110,13 @@ $sql_common = " gr_id = '{$_POST['gr_id']}',
bo_image_width = '{$_POST['bo_image_width']}',
bo_skin = '{$_POST['bo_skin']}',
bo_mobile_skin = '{$_POST['bo_mobile_skin']}',
";
// 최고 관리자인 경우에만 수정가능
if ($is_admin === 'super'){
$sql_common .= " bo_include_head = '".$bo_include_head."',
bo_include_tail = '".$bo_include_tail."',
bo_include_head = '{$_POST['bo_include_head']}',
bo_include_tail = '{$_POST['bo_include_tail']}',
bo_content_head = '{$_POST['bo_content_head']}',
bo_content_tail = '{$_POST['bo_content_tail']}',
bo_mobile_content_head = '{$_POST['bo_mobile_content_head']}',
bo_mobile_content_tail = '{$_POST['bo_mobile_content_tail']}',
";
}
$sql_common .= " bo_insert_content = '{$_POST['bo_insert_content']}',
bo_insert_content = '{$_POST['bo_insert_content']}',
bo_gallery_cols = '{$_POST['bo_gallery_cols']}',
bo_gallery_width = '{$_POST['bo_gallery_width']}',
bo_gallery_height = '{$_POST['bo_gallery_height']}',
@@ -322,17 +301,12 @@ if (is_checked('chk_grp_comment_min')) $grp_fields .= " , bo_comment_mi
if (is_checked('chk_grp_comment_max')) $grp_fields .= " , bo_comment_max = '{$bo_comment_max}' ";
if (is_checked('chk_grp_upload_count')) $grp_fields .= " , bo_upload_count = '{$bo_upload_count}' ";
if (is_checked('chk_grp_upload_size')) $grp_fields .= " , bo_upload_size = '{$bo_upload_size}' ";
//최고관리자만 수정가능
if ($is_admin === 'super'){
if (is_checked('chk_grp_include_head')) $grp_fields .= " , bo_include_head = '{$bo_include_head}' ";
if (is_checked('chk_grp_include_tail')) $grp_fields .= " , bo_include_tail = '{$bo_include_tail}' ";
if (is_checked('chk_grp_content_head')) $grp_fields .= " , bo_content_head = '{$bo_content_head}' ";
if (is_checked('chk_grp_content_tail')) $grp_fields .= " , bo_content_tail = '{$bo_content_tail}' ";
if (is_checked('chk_grp_mobile_content_head')) $grp_fields .= " , bo_mobile_content_head = '{$bo_mobile_content_head}' ";
if (is_checked('chk_grp_mobile_content_tail')) $grp_fields .= " , bo_mobile_content_tail = '{$bo_mobile_content_tail}' ";
}
if (is_checked('chk_grp_include_head')) $grp_fields .= " , bo_include_head = '{$bo_include_head}' ";
if (is_checked('chk_grp_include_tail')) $grp_fields .= " , bo_include_tail = '{$bo_include_tail}' ";
if (is_checked('chk_grp_content_head')) $grp_fields .= " , bo_content_head = '{$bo_content_head}' ";
if (is_checked('chk_grp_content_tail')) $grp_fields .= " , bo_content_tail = '{$bo_content_tail}' ";
if (is_checked('chk_grp_mobile_content_head')) $grp_fields .= " , bo_mobile_content_head = '{$bo_mobile_content_head}' ";
if (is_checked('chk_grp_mobile_content_tail')) $grp_fields .= " , bo_mobile_content_tail = '{$bo_mobile_content_tail}' ";
if (is_checked('chk_grp_insert_content')) $grp_fields .= " , bo_insert_content = '{$bo_insert_content}' ";
if (is_checked('chk_grp_use_search')) $grp_fields .= " , bo_use_search = '{$bo_use_search}' ";
if (is_checked('chk_grp_order')) $grp_fields .= " , bo_order = '{$bo_order}' ";
@@ -411,17 +385,12 @@ if (is_checked('chk_all_comment_min')) $all_fields .= " , bo_comment_mi
if (is_checked('chk_all_comment_max')) $all_fields .= " , bo_comment_max = '{$bo_comment_max}' ";
if (is_checked('chk_all_upload_count')) $all_fields .= " , bo_upload_count = '{$bo_upload_count}' ";
if (is_checked('chk_all_upload_size')) $all_fields .= " , bo_upload_size = '{$bo_upload_size}' ";
//최고관리자만 수정가능
if ($is_admin === 'super'){
if (is_checked('chk_all_include_head')) $all_fields .= " , bo_include_head = '{$bo_include_head}' ";
if (is_checked('chk_all_include_tail')) $all_fields .= " , bo_include_tail = '{$bo_include_tail}' ";
if (is_checked('chk_all_content_head')) $all_fields .= " , bo_content_head = '{$bo_content_head}' ";
if (is_checked('chk_all_content_tail')) $all_fields .= " , bo_content_tail = '{$bo_content_tail}' ";
if (is_checked('chk_all_mobile_content_head')) $all_fields .= " , bo_mobile_content_head = '{$bo_mobile_content_head}' ";
if (is_checked('chk_all_mobile_content_tail')) $all_fields .= " , bo_mobile_content_tail = '{$bo_mobile_content_tail}' ";
}
if (is_checked('chk_all_include_head')) $all_fields .= " , bo_include_head = '{$bo_include_head}' ";
if (is_checked('chk_all_include_tail')) $all_fields .= " , bo_include_tail = '{$bo_include_tail}' ";
if (is_checked('chk_all_content_head')) $all_fields .= " , bo_content_head = '{$bo_content_head}' ";
if (is_checked('chk_all_content_tail')) $all_fields .= " , bo_content_tail = '{$bo_content_tail}' ";
if (is_checked('chk_all_mobile_content_head')) $all_fields .= " , bo_mobile_content_head = '{$bo_mobile_content_head}' ";
if (is_checked('chk_all_mobile_content_tail')) $all_fields .= " , bo_mobile_content_tail = '{$bo_mobile_content_tail}' ";
if (is_checked('chk_all_insert_content')) $all_fields .= " , bo_insert_content = '{$bo_insert_content}' ";
if (is_checked('chk_all_use_search')) $all_fields .= " , bo_use_search = '{$bo_use_search}' ";
if (is_checked('chk_all_order')) $all_fields .= " , bo_order = '{$bo_order}' ";
@@ -438,8 +407,5 @@ if ($all_fields) {
delete_cache_latest($bo_table);
if(function_exists('get_admin_captcha_by'))
get_admin_captcha_by('remove');
goto_url("./board_form.php?w=u&bo_table={$bo_table}&amp;{$qstr}");
?>
+16 -17
View File
@@ -8,8 +8,6 @@ if (!count($_POST['chk'])) {
alert($_POST['act_button']." 하실 항목을 하나 이상 체크하세요.");
}
check_admin_token();
if ($_POST['act_button'] == "선택수정") {
auth_check($auth[$sub_menu], 'w');
@@ -21,7 +19,7 @@ if ($_POST['act_button'] == "선택수정") {
if ($is_admin != 'super') {
$sql = " select count(*) as cnt from {$g5['board_table']} a, {$g5['group_table']} b
where a.gr_id = '".sql_real_escape_string($_POST['gr_id'][$k])."'
where a.gr_id = '{$_POST['gr_id'][$k]}'
and a.gr_id = b.gr_id
and b.gr_admin = '{$member['mb_id']}' ";
$row = sql_fetch($sql);
@@ -30,20 +28,19 @@ if ($_POST['act_button'] == "선택수정") {
}
$sql = " update {$g5['board_table']}
set gr_id = '".sql_real_escape_string($_POST['gr_id'][$k])."',
bo_subject = '".sql_real_escape_string($_POST['bo_subject'][$k])."',
bo_device = '".sql_real_escape_string($_POST['bo_device'][$k])."',
bo_skin = '".sql_real_escape_string($_POST['bo_skin'][$k])."',
bo_mobile_skin = '".sql_real_escape_string($_POST['bo_mobile_skin'][$k])."',
bo_read_point = '".sql_real_escape_string($_POST['bo_read_point'][$k])."',
bo_write_point = '".sql_real_escape_string($_POST['bo_write_point'][$k])."',
bo_comment_point = '".sql_real_escape_string($_POST['bo_comment_point'][$k])."',
bo_download_point = '".sql_real_escape_string($_POST['bo_download_point'][$k])."',
bo_use_search = '".sql_real_escape_string($_POST['bo_use_search'][$k])."',
bo_use_sns = '".sql_real_escape_string($_POST['bo_use_sns'][$k])."',
bo_order = '".sql_real_escape_string($_POST['bo_order'][$k])."'
where bo_table = '".sql_real_escape_string($_POST['board_table'][$k])."' ";
set gr_id = '{$_POST['gr_id'][$k]}',
bo_subject = '{$_POST['bo_subject'][$k]}',
bo_device = '{$_POST['bo_device'][$k]}',
bo_skin = '{$_POST['bo_skin'][$k]}',
bo_mobile_skin = '{$_POST['bo_mobile_skin'][$k]}',
bo_read_point = '{$_POST['bo_read_point'][$k]}',
bo_write_point = '{$_POST['bo_write_point'][$k]}',
bo_comment_point = '{$_POST['bo_comment_point'][$k]}',
bo_download_point = '{$_POST['bo_download_point'][$k]}',
bo_use_search = '{$_POST['bo_use_search'][$k]}',
bo_use_sns = '{$_POST['bo_use_sns'][$k]}',
bo_order = '{$_POST['bo_order'][$k]}'
where bo_table = '{$_POST['board_table'][$k]}' ";
sql_query($sql);
}
@@ -54,6 +51,8 @@ if ($_POST['act_button'] == "선택수정") {
auth_check($auth[$sub_menu], 'd');
check_admin_token();
// _BOARD_DELETE_ 상수를 선언해야 board_delete.inc.php 가 정상 작동함
define('_BOARD_DELETE_', true);
+2 -2
View File
@@ -12,7 +12,7 @@ $sound_only = '';
if ($w == '') {
$gr_id_attr = 'required';
$sound_only = '<strong class="sound_only"> 필수</strong>';
$gr = array('gr_use_access' => 0);
$gr['gr_use_access'] = 0;
$html_title .= ' 생성';
} else if ($w == 'u') {
$gr_id_attr = 'readonly';
@@ -117,7 +117,7 @@ include_once('./admin.head.php');
<label for="gr_<?php echo $i ?>_subj">여분필드 <?php echo $i ?> 제목</label>
<input type="text" name="gr_<?php echo $i ?>_subj" value="<?php echo get_text($group['gr_'.$i.'_subj']) ?>" id="gr_<?php echo $i ?>_subj" class="frm_input">
<label for="gr_<?php echo $i ?>">여분필드 <?php echo $i ?> 내용</label>
<input type="text" name="gr_<?php echo $i ?>" value="<?php echo get_sanitize_input($gr['gr_'.$i]); ?>" id="gr_<?php echo $i ?>" class="frm_input">
<input type="text" name="gr_<?php echo $i ?>" value="<?php echo $gr['gr_'.$i] ?>" id="gr_<?php echo $i ?>" class="frm_input">
</td>
</tr>
<?php } ?>
+1 -3
View File
@@ -16,9 +16,7 @@ if (!preg_match("/^([A-Za-z0-9_]{1,10})$/", $_POST['gr_id']))
if (!$gr_subject) alert('그룹 제목을 입력하세요.');
$gr_subject = isset($_POST['gr_subject']) ? strip_tags($_POST['gr_subject']) : '';
$sql_common = " gr_subject = '{$gr_subject}',
$sql_common = " gr_subject = '{$_POST['gr_subject']}',
gr_device = '{$_POST['gr_device']}',
gr_admin = '{$_POST['gr_admin']}',
gr_1_subj = '{$_POST['gr_1_subj']}',
+1 -2
View File
@@ -19,11 +19,10 @@ for ($i=0; $i<$count; $i++)
{
$k = $_POST['chk'][$i];
$gr_id = $_POST['group_id'][$k];
$gr_subject = strip_tags($_POST['gr_subject'][$k]);
if($_POST['act_button'] == '선택수정') {
$sql = " update {$g5['group_table']}
set gr_subject = '{$gr_subject}',
set gr_subject = '{$_POST['gr_subject'][$k]}',
gr_device = '{$_POST['gr_device'][$k]}',
gr_admin = '{$_POST['gr_admin'][$k]}',
gr_use_access = '{$_POST['gr_use_access'][$k]}',
-5
View File
@@ -5,11 +5,6 @@ include_once('./_common.php');
if ($is_admin != 'super')
alert('최고관리자만 접근 가능합니다.', G5_URL);
@include_once('./safe_check.php');
if(function_exists('social_log_file_delete')){
social_log_file_delete();
}
$g5['title'] = '캐시파일 일괄삭제';
include_once('./admin.head.php');
?>
+1 -1
View File
@@ -1317,7 +1317,7 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
<label for="cf_<?php echo $i ?>_subj">여분필드<?php echo $i ?> 제목</label>
<input type="text" name="cf_<?php echo $i ?>_subj" value="<?php echo get_text($config['cf_'.$i.'_subj']) ?>" id="cf_<?php echo $i ?>_subj" class="frm_input" size="30">
<label for="cf_<?php echo $i ?>">여분필드<?php echo $i ?> 값</label>
<input type="text" name="cf_<?php echo $i ?>" value="<?php echo get_sanitize_input($config['cf_'.$i]); ?>" id="cf_<?php echo $i ?>" class="frm_input" size="30">
<input type="text" name="cf_<?php echo $i ?>" value="<?php echo $config['cf_'.$i] ?>" id="cf_<?php echo $i ?>" class="frm_input" size="30">
</td>
</tr>
<?php } ?>
-2
View File
@@ -26,8 +26,6 @@ if(!$_POST['cf_cert_use']) {
$cf_social_servicelist = !empty($_POST['cf_social_servicelist']) ? implode(',', $_POST['cf_social_servicelist']) : '';
$_POST['cf_title'] = strip_tags($_POST['cf_title']);
$sql = " update {$g5['config_table']}
set cf_title = '{$_POST['cf_title']}',
cf_admin = '{$_POST['cf_admin']}',
+5 -77
View File
@@ -49,11 +49,9 @@ if ($w == "u")
else
{
$html_title .= ' 입력';
$co = array(
'co_html' => 2,
'co_skin' => 'basic',
'co_mobile_skin' => 'basic'
);
$co['co_html'] = 2;
$co['co_skin'] = 'basic';
$co['co_mobile_skin'] = 'basic';
}
include_once (G5_ADMIN_PATH.'/admin.head.php');
@@ -109,8 +107,8 @@ include_once (G5_ADMIN_PATH.'/admin.head.php');
<td>
<?php echo help("내용에서 iframe 등의 태그를 사용하려면 사용안함으로 선택해 주십시오."); ?>
<select name="co_tag_filter_use" id="co_tag_filter_use">
<option value="1"<?php echo get_selected($co['co_tag_filter_use'], 1); ?>>사용함</option>
<option value="0"<?php echo get_selected($co['co_tag_filter_use'], 0); ?>>사용안함</option>
<option value="1"<?php echo get_selected(1, $co['co_tag_filter_use']); ?>>사용함</option>
<option value="0"<?php echo get_selected(0, $co['co_tag_filter_use']); ?>>사용안함</option>
</select>
</td>
</tr>
@@ -128,22 +126,6 @@ include_once (G5_ADMIN_PATH.'/admin.head.php');
<input type="text" name="co_include_tail" value="<?php echo $co['co_include_tail']; ?>" id="co_include_tail" class="frm_input" size="60">
</td>
</tr>
<tr id="admin_captcha_box" style="display:none;">
<th scope="row">자동등록방지</th>
<td>
<?php
echo help("파일 경로를 입력 또는 수정시 캡챠를 반드시 입력해야 합니다.");
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
$captcha_html = captcha_html();
$captcha_js = chk_captcha_js();
echo $captcha_html;
?>
<script>
jQuery("#captcha_key").removeAttr("required").removeClass("required");
</script>
</td>
</tr>
<tr>
<th scope="row"><label for="co_himg">상단이미지</label></th>
<td>
@@ -203,56 +185,7 @@ include_once (G5_ADMIN_PATH.'/admin.head.php');
</form>
<?php
// [KVE-2018-2089] 취약점 으로 인해 파일 경로 수정시에만 자동등록방지 코드 사용
?>
<script>
var captcha_chk = false;
function use_captcha_check(){
$.ajax({
type: "POST",
url: g5_admin_url+"/ajax.use_captcha.php",
data: { admin_use_captcha: "1" },
cache: false,
async: false,
dataType: "json",
success: function(data) {
}
});
}
function frm_check_file(){
var co_include_head = "<?php echo $co['co_include_head']; ?>";
var co_include_tail = "<?php echo $co['co_include_tail']; ?>";
var head = jQuery.trim(jQuery("#co_include_head").val());
var tail = jQuery.trim(jQuery("#co_include_tail").val());
if(co_include_head !== head || co_include_tail !== tail){
// 캡챠를 사용합니다.
jQuery("#admin_captcha_box").show();
captcha_chk = true;
use_captcha_check();
return false;
} else {
jQuery("#admin_captcha_box").hide();
}
return true;
}
jQuery(function($){
if( window.self !== window.top ){ // frame 또는 iframe을 사용할 경우 체크
$("#co_include_head, #co_include_tail").on("change paste keyup", function(e) {
frm_check_file();
});
use_captcha_check();
}
});
function frmcontentform_check(f)
{
errmsg = "";
@@ -271,11 +204,6 @@ function frmcontentform_check(f)
errfld.focus();
return false;
}
if( captcha_chk ) {
<?php echo $captcha_js; // 캡챠 사용시 자바스크립트에서 입력된 캡챠를 검사함 ?>
}
return true;
}
</script>
+15 -38
View File
@@ -12,28 +12,6 @@ else
check_admin_token();
if ($w == "" || $w == "u")
{
if(preg_match("/[^a-z0-9_]/i", $co_id)) alert("ID 는 영문자, 숫자, _ 만 가능합니다.");
$sql = " select * from {$g5['content_table']} where co_id = '$co_id' ";
$co_row = sql_fetch($sql);
}
$co_id = preg_replace('/[^a-z0-9_]/i', '', $co_id);
$co_subject = strip_tags($co_subject);
$co_include_head = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($co_include_head, 0, 255));
$co_include_tail = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($co_include_tail, 0, 255));
// 관리자가 자동등록방지를 사용해야 할 경우
if (($co_row['co_include_head'] !== $co_include_head || $co_row['co_include_tail'] !== $co_include_tail) && function_exists('get_admin_captcha_by') && get_admin_captcha_by()){
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
if (!chk_captcha()) {
alert('자동등록방지 숫자가 틀렸습니다.');
}
}
@mkdir(G5_DATA_PATH."/content", G5_DIR_PERMISSION);
@chmod(G5_DATA_PATH."/content", G5_DIR_PERMISSION);
@@ -43,29 +21,27 @@ if ($co_timg_del) @unlink(G5_DATA_PATH."/content/{$co_id}_t");
$error_msg = '';
if( $co_include_head ){
$file_ext = pathinfo($co_include_head, PATHINFO_EXTENSION);
if( ! $file_ext || ! in_array($file_ext, array('php', 'htm', 'html')) || ! preg_match('/^.*\.(php|htm|html)$/i', $co_include_head) ) {
alert('상단 파일 경로의 확장자는 php, htm, html 만 허용합니다.');
$purl = parse_url($co_include_head);
$file = $purl['path'];
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
alert('상단 파일 경로의 확장자는 php, html 만 허용합니다.');
}
}
if( $co_include_tail ){
$file_ext = pathinfo($co_include_tail, PATHINFO_EXTENSION);
if( ! $file_ext || ! in_array($file_ext, array('php', 'htm', 'html')) || ! preg_match('/^.*\.(php|htm|html)$/i', $co_include_tail) ) {
alert('하단 파일 경로의 확장자는 php, htm, html 만 허용합니다.');
$purl = parse_url($co_include_tail);
$file = $purl['path'];
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
alert('하단 파일 경로의 확장자는 php, html 만 허용합니다.');
}
}
if( $co_include_head && ! is_include_path_check($co_include_head, 1) ){
if( $co_include_head && ! is_include_path_check($co_include_head) ){
$co_include_head = '';
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 상단 파일 경로에 포함시킬수 없습니다.';
}
if( $co_include_tail && ! is_include_path_check($co_include_tail, 1) ){
if( $co_include_tail && ! is_include_path_check($co_include_tail) ){
$co_include_tail = '';
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.';
}
@@ -82,7 +58,11 @@ $sql_common = " co_include_head = '$co_include_head',
if ($w == "")
{
$row = $co_row;
//if(eregi("[^a-z0-9_]", $co_id)) alert("ID 는 영문자, 숫자, _ 만 가능합니다.");
if(preg_match("/[^a-z0-9_]/i", $co_id)) alert("ID 는 영문자, 숫자, _ 만 가능합니다.");
$sql = " select co_id from {$g5['content_table']} where co_id = '$co_id' ";
$row = sql_fetch($sql);
if ($row['co_id'])
alert("이미 같은 ID로 등록된 내용이 있습니다.");
@@ -107,9 +87,6 @@ else if ($w == "d")
sql_query($sql);
}
if(function_exists('get_admin_captcha_by'))
get_admin_captcha_by('remove');
if ($w == "" || $w == "u")
{
if ($_FILES['co_himg']['name'])
-9
View File
@@ -685,15 +685,6 @@ box-shadow: 2px 2px 3px 0px rgba(0,0,0,0.2);}
.sevice_2 .svc_design{overflow:hidden;height:210px;position:relative}
.sevice_2 .svc_design .svc_btn a{margin:0 0 20px}
/* 캡챠 */
#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_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}
-88
View File
@@ -1,88 +0,0 @@
<?php
$sub_menu = '100410';
include_once('./_common.php');
auth_check($auth[$sub_menu], 'r');
$g5['title'] = 'DB 업그레이드';
include_once('./admin.head.php');
$is_check = false;
//소셜 로그인 관련 필드 및 구글 리챕챠 필드 추가
if(!isset($config['cf_social_login_use'])) {
sql_query("ALTER TABLE `{$g5['config_table']}`
ADD `cf_social_login_use` tinyint(4) NOT NULL DEFAULT '0' AFTER `cf_googl_shorturl_apikey`,
ADD `cf_google_clientid` varchar(100) NOT NULL DEFAULT '' AFTER `cf_twitter_secret`,
ADD `cf_google_secret` varchar(100) NOT NULL DEFAULT '' AFTER `cf_google_clientid`,
ADD `cf_naver_clientid` varchar(100) NOT NULL DEFAULT '' AFTER `cf_google_secret`,
ADD `cf_naver_secret` varchar(100) NOT NULL DEFAULT '' AFTER `cf_naver_clientid`,
ADD `cf_kakao_rest_key` varchar(100) NOT NULL DEFAULT '' AFTER `cf_naver_secret`,
ADD `cf_social_servicelist` varchar(255) NOT NULL DEFAULT '' AFTER `cf_social_login_use`,
ADD `cf_payco_clientid` varchar(100) NOT NULL DEFAULT '' AFTER `cf_social_servicelist`,
ADD `cf_payco_secret` varchar(100) NOT NULL DEFAULT '' AFTER `cf_payco_clientid`,
ADD `cf_captcha` varchar(100) NOT NULL DEFAULT '' AFTER `cf_kakao_js_apikey`,
ADD `cf_recaptcha_site_key` varchar(100) NOT NULL DEFAULT '' AFTER `cf_captcha`,
ADD `cf_recaptcha_secret_key` varchar(100) NOT NULL DEFAULT '' AFTER `cf_recaptcha_site_key`
", true);
$is_check = true;
}
//소셜 로그인 관련 필드 카카오 클라이언트 시크릿 추가
if(!isset($config['cf_kakao_client_secret'])) {
sql_query("ALTER TABLE `{$g5['config_table']}`
ADD `cf_kakao_client_secret` varchar(100) NOT NULL DEFAULT '' AFTER `cf_kakao_rest_key`
", true);
$is_check = true;
}
// 회원 이미지 관련 필드 추가
if(!isset($config['cf_member_img_size'])) {
sql_query("ALTER TABLE `{$g5['config_table']}`
ADD `cf_member_img_size` int(11) NOT NULL DEFAULT '0' AFTER `cf_member_icon_height`,
ADD `cf_member_img_width` int(11) NOT NULL DEFAULT '0' AFTER `cf_member_img_size`,
ADD `cf_member_img_height` int(11) NOT NULL DEFAULT '0' AFTER `cf_member_img_width`
", true);
$sql = " update {$g5['config_table']} set cf_member_img_size = 50000, cf_member_img_width = 60, cf_member_img_height = 60 ";
sql_query($sql, false);
$is_check = true;
}
// 소셜 로그인 관리 테이블 없을 경우 생성
if( isset($g5['social_profile_table']) && !sql_query(" DESC {$g5['social_profile_table']} ", false)) {
sql_query(" CREATE TABLE IF NOT EXISTS `{$g5['social_profile_table']}` (
`mp_no` int(11) NOT NULL AUTO_INCREMENT,
`mb_id` varchar(255) NOT NULL DEFAULT '',
`provider` varchar(50) NOT NULL DEFAULT '',
`object_sha` varchar(45) NOT NULL DEFAULT '',
`identifier` varchar(255) NOT NULL DEFAULT '',
`profileurl` varchar(255) NOT NULL DEFAULT '',
`photourl` varchar(255) NOT NULL DEFAULT '',
`displayname` varchar(150) NOT NULL DEFAULT '',
`description` varchar(255) NOT NULL DEFAULT '',
`mp_register_day` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`mp_latest_day` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
UNIQUE KEY `mp_no` (`mp_no`),
KEY `mb_id` (`mb_id`),
KEY `provider` (`provider`)
) ", true);
$is_check = true;
}
$db_upgrade_msg = $is_check ? 'DB 업그레이드가 완료되었습니다.' : '더 이상 업그레이드 할 내용이 없습니다.<br>현재 DB 업그레이드가 완료된 상태입니다.';
?>
<div class="local_desc01 local_desc">
<p>
<?php echo $db_upgrade_msg; ?>
</p>
</div>
<?php
include_once ('./admin.tail.php');
?>
-3
View File
@@ -5,9 +5,6 @@ include_once(G5_EDITOR_LIB);
auth_check($auth[$sub_menu], "w");
$fm_id = (int) $fm_id;
$fa_id = isset($fa_id) ? (int) $fa_id : 0;
$sql = " select * from {$g5['faq_master_table']} where fm_id = '$fm_id' ";
$fm = sql_fetch($sql);
+1 -1
View File
@@ -5,7 +5,7 @@ include_once('./_common.php');
if ($w == "u" || $w == "d")
check_demo();
if ($w == 'd')
if ($W == 'd')
auth_check($auth[$sub_menu], "d");
else
auth_check($auth[$sub_menu], "w");
+3 -9
View File
@@ -5,13 +5,7 @@ include_once('./_common.php');
auth_check($auth[$sub_menu], "r");
$g5['title'] = 'FAQ 상세관리';
if ($fm_subject){
$fm_subject = clean_xss_tags(strip_tags($fm_subject));
$g5['title'] .= ' : '.$fm_subject;
}
$fm_id = (int) $fm_id;
if ($fm_subject) $g5['title'] .= ' : '.$fm_subject;
include_once (G5_ADMIN_PATH.'/admin.head.php');
$sql = " select * from {$g5['faq_master_table']} where fm_id = '$fm_id' ";
@@ -22,7 +16,7 @@ $sql_common = " from {$g5['faq_table']} where fm_id = '$fm_id' ";
// 테이블의 전체 레코드수만 얻음
$sql = " select count(*) as cnt " . $sql_common;
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$total_count = $row[cnt];
$sql = "select * $sql_common order by fa_order , fa_id ";
$result = sql_query($sql);
@@ -60,7 +54,7 @@ $result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$row1 = sql_fetch(" select COUNT(*) as cnt from {$g5['faq_table']} where fm_id = '{$row['fm_id']}' ");
$cnt = $row1['cnt'];
$cnt = $row1[cnt];
$s_mod = icon("수정", "");
$s_del = icon("삭제", "");
-1
View File
@@ -21,7 +21,6 @@ if ($w == "u")
else
{
$html_title .= ' 입력';
$fm = array();
}
$g5['title'] = $html_title.' 관리';
-2
View File
@@ -18,8 +18,6 @@ check_admin_token();
if ($fm_himg_del) @unlink(G5_DATA_PATH."/faq/{$fm_id}_h");
if ($fm_timg_del) @unlink(G5_DATA_PATH."/faq/{$fm_id}_t");
$fm_subject = strip_tags($fm_subject);
$sql_common = " set fm_subject = '$fm_subject',
fm_head_html = '$fm_head_html',
fm_tail_html = '$fm_tail_html',
-5
View File
@@ -2,11 +2,6 @@
$sub_menu = '100000';
include_once('./_common.php');
@include_once('./safe_check.php');
if(function_exists('social_log_file_delete')){
social_log_file_delete(86400); //소셜로그인 디버그 파일 24시간 지난것은 삭제
}
$g5['title'] = '관리자메인';
include_once ('./admin.head.php');
+8 -8
View File
@@ -29,19 +29,19 @@ if ($_POST['act_button'] == "선택수정") {
$msg .= $mb['mb_id'].' : 로그인 중인 관리자는 수정 할 수 없습니다.\\n';
} else {
if($_POST['mb_certify'][$k])
$mb_adult = (int) $_POST['mb_adult'][$k];
$mb_adult = $_POST['mb_adult'][$k];
else
$mb_adult = 0;
$sql = " update {$g5['member_table']}
set mb_level = '".sql_real_escape_string($_POST['mb_level'][$k])."',
mb_intercept_date = '".sql_real_escape_string($_POST['mb_intercept_date'][$k])."',
mb_mailling = '".sql_real_escape_string($_POST['mb_mailling'][$k])."',
mb_sms = '".sql_real_escape_string($_POST['mb_sms'][$k])."',
mb_open = '".sql_real_escape_string($_POST['mb_open'][$k])."',
mb_certify = '".sql_real_escape_string($_POST['mb_certify'][$k])."',
set mb_level = '{$_POST['mb_level'][$k]}',
mb_intercept_date = '{$_POST['mb_intercept_date'][$k]}',
mb_mailling = '{$_POST['mb_mailling'][$k]}',
mb_sms = '{$_POST['mb_sms'][$k]}',
mb_open = '{$_POST['mb_open'][$k]}',
mb_certify = '{$_POST['mb_certify'][$k]}',
mb_adult = '{$mb_adult}'
where mb_id = '".sql_real_escape_string($_POST['mb_id'][$k])."' ";
where mb_id = '{$_POST['mb_id'][$k]}' ";
sql_query($sql);
}
}
-14
View File
@@ -196,20 +196,6 @@ function base_convert(number, frombase, tobase) {
function fmenulist_submit(f)
{
var me_links = document.getElementsByName('me_link[]');
var reg = /^javascript/;
for (i=0; i<me_links.length; i++){
if( reg.test(me_links[i].value) ){
alert('링크에 자바스크립트문을 입력할수 없습니다.');
me_links[i].focus();
return false;
}
}
return true;
}
</script>
+2 -2
View File
@@ -23,8 +23,8 @@ for ($i=0; $i<$count; $i++)
$code = $_POST['code'][$i];
$me_name = $_POST['me_name'][$i];
$me_link = preg_match('/^javascript/i', $_POST['me_link'][$i]) ? G5_URL : strip_tags($_POST['me_link'][$i]);
$me_link = $_POST['me_link'][$i];
if(!$code || !$me_name || !$me_link)
continue;
+1 -1
View File
@@ -109,7 +109,7 @@ include_once (G5_ADMIN_PATH.'/admin.head.php');
<tr>
<th scope="row"><label for="nw_subject">팝업 제목<strong class="sound_only"> 필수</strong></label></th>
<td>
<input type="text" name="nw_subject" value="<?php echo get_sanitize_input($nw['nw_subject']); ?>" id="nw_subject" required class="frm_input required" size="80">
<input type="text" name="nw_subject" value="<?php echo stripslashes($nw['nw_subject']) ?>" id="nw_subject" required class="frm_input required" size="80">
</td>
</tr>
<tr>
+1 -3
View File
@@ -12,8 +12,6 @@ else
check_admin_token();
$nw_subject = isset($_POST['nw_subject']) ? strip_tags($_POST['nw_subject']) : '';
$sql_common = " nw_device = '{$_POST['nw_device']}',
nw_begin_time = '{$_POST['nw_begin_time']}',
nw_end_time = '{$_POST['nw_end_time']}',
@@ -22,7 +20,7 @@ $sql_common = " nw_device = '{$_POST['nw_device']}',
nw_top = '{$_POST['nw_top']}',
nw_height = '{$_POST['nw_height']}',
nw_width = '{$_POST['nw_width']}',
nw_subject = '{$nw_subject}',
nw_subject = '{$_POST['nw_subject']}',
nw_content = '{$_POST['nw_content']}',
nw_content_html = '{$_POST['nw_content_html']}' ";
+3 -3
View File
@@ -6,9 +6,9 @@ auth_check($auth[$sub_menu], 'w');
check_admin_token();
$mb_id = strip_tags($_POST['mb_id']);
$po_point = strip_tags($_POST['po_point']);
$po_content = strip_tags($_POST['po_content']);
$mb_id = $_POST['mb_id'];
$po_point = $_POST['po_point'];
$po_content = $_POST['po_content'];
$expire = preg_replace('/[^0-9]/', '', $_POST['po_expire_term']);
$mb = get_member($mb_id);
+1 -1
View File
@@ -7,7 +7,7 @@ auth_check($auth[$sub_menu], 'r');
// 체크된 자료 삭제
if (isset($_POST['chk']) && is_array($_POST['chk'])) {
for ($i=0; $i<count($_POST['chk']); $i++) {
$pp_id = (int) $_POST['chk'][$i];
$pp_id = $_POST['chk'][$i];
sql_query(" delete from {$g5['popular_table']} where pp_id = '$pp_id' ", true);
}
-67
View File
@@ -263,22 +263,6 @@ if(!isset($qaconfig['qa_include_head'])) {
<input type="text" name="qa_include_tail" value="<?php echo $qaconfig['qa_include_tail'] ?>" id="qa_include_tail" class="frm_input" size="50">
</td>
</tr>
<tr id="admin_captcha_box" style="display:none;">
<th scope="row">자동등록방지</th>
<td>
<?php
echo help("파일 경로를 입력 또는 수정시 캡챠를 반드시 입력해야 합니다.");
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
$captcha_html = captcha_html();
$captcha_js = chk_captcha_js();
echo $captcha_html;
?>
<script>
jQuery("#captcha_key").removeAttr("required").removeClass("required");
</script>
</td>
</tr>
<tr>
<th scope="row"><label for="qa_content_head">상단 내용</label></th>
<td>
@@ -332,53 +316,6 @@ if(!isset($qaconfig['qa_include_head'])) {
</form>
<script>
var captcha_chk = false;
function use_captcha_check(){
$.ajax({
type: "POST",
url: g5_admin_url+"/ajax.use_captcha.php",
data: { admin_use_captcha: "1" },
cache: false,
async: false,
dataType: "json",
success: function(data) {
}
});
}
function frm_check_file(){
var qa_include_head = "<?php echo $qaconfig['qa_include_head']; ?>";
var qa_include_tail = "<?php echo $qaconfig['qa_include_tail']; ?>";
var head = jQuery.trim(jQuery("#qa_include_head").val());
var tail = jQuery.trim(jQuery("#qa_include_tail").val());
if(qa_include_head !== head || qa_include_tail !== tail){
// 캡챠를 사용합니다.
jQuery("#admin_captcha_box").show();
captcha_chk = true;
use_captcha_check();
return false;
} else {
jQuery("#admin_captcha_box").hide();
}
return true;
}
jQuery(function($){
if( window.self !== window.top ){ // frame 또는 iframe을 사용할 경우 체크
$("#qa_include_head, #qa_include_tail").on("change paste keyup", function(e) {
frm_check_file();
});
use_captcha_check();
}
});
function fqaconfigform_submit(f)
{
<?php echo get_editor_js("qa_content_head"); ?>
@@ -386,10 +323,6 @@ function fqaconfigform_submit(f)
<?php echo get_editor_js("qa_mobile_content_head"); ?>
<?php echo get_editor_js("qa_mobile_content_tail"); ?>
if( captcha_chk ) {
<?php echo isset($captcha_js) ? $captcha_js : ''; // 캡챠 사용시 자바스크립트에서 입력된 캡챠를 검사함 ?>
}
f.action = "./qa_config_update.php";
return true;
}
+8 -25
View File
@@ -10,33 +10,19 @@ check_admin_token();
$error_msg = '';
$qaconfig = get_qa_config();
$qa_include_head = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($qa_include_head, 0, 255));
$qa_include_tail = preg_replace(array("#[\\\]+$#", "#(<\?php|<\?)#i"), "", substr($qa_include_tail, 0, 255));
// 관리자가 자동등록방지를 사용해야 할 경우
if ($board && ($qaconfig['qa_include_head'] !== $qa_include_head || $qaconfig['qa_include_tail'] !== $qa_include_tail) && function_exists('get_admin_captcha_by') && get_admin_captcha_by()){
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
if (!chk_captcha()) {
alert('자동등록방지 숫자가 틀렸습니다.');
}
}
if( $qa_include_head ){
$file_ext = pathinfo($qa_include_head, PATHINFO_EXTENSION);
if( ! $file_ext || ! in_array($file_ext, array('php', 'htm', 'html')) || ! preg_match('/^.*\.(php|htm|html)$/i', $qa_include_head) ) {
alert('상단 파일 경로의 확장자는 php, htm, html 만 허용합니다.');
$purl = parse_url($qa_include_head);
$file = $purl['path'];
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
alert('상단 파일 경로의 확장자는 php, html 만 허용합니다.');
}
}
if( $qa_include_tail ){
$file_ext = pathinfo($qa_include_tail, PATHINFO_EXTENSION);
if( ! $file_ext || ! in_array($file_ext, array('php', 'htm', 'html')) || ! preg_match('/^.*\.(php|htm|html)$/i', $qa_include_tail) ) {
alert('하단 파일 경로의 확장자는 php, htm, html 만 허용합니다.');
$purl = parse_url($qa_include_tail);
$file = $purl['path'];
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
alert('하단 파일 경로의 확장자는 php, html 만 허용합니다.');
}
}
@@ -89,9 +75,6 @@ $sql = " update {$g5['qa_config_table']}
qa_5 = '{$_POST['qa_5']}' ";
sql_query($sql);
if(function_exists('get_admin_captcha_by'))
get_admin_captcha_by('remove');
if($error_msg){
alert($error_msg, './qa_config.php');
} else {
-17
View File
@@ -1,17 +0,0 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
function social_log_file_delete($second=0){
$files = glob(G5_DATA_PATH.'/tmp/social_*');
if (is_array($files)) {
$before_time = $second ? G5_SERVER_TIME - $second : 0;
foreach ($files as $social_log_file) {
$modification_time = filemtime($log_file); // 파일접근시간
if ($before_time && $modification_time > $before_time) continue;
unlink($social_log_file);
}
}
}
?>
+2 -3
View File
@@ -11,8 +11,7 @@ auth_check($auth[$sub_menu], "r");
$g5['title'] = '이모티콘그룹 이동';
include_once(G5_PATH.'/head.sub.php');
$list = array(); //배열 변수 초기화
$fo_no_list = isset($_POST['fo_no']) ? implode(',', $_POST['fo_no']) : '';
$fo_no_list = implode(',', $_POST['fo_no']);
$sql = " select * from {$g5['sms5_form_group_table']} order by fg_no ";
$result = sql_query($sql);
@@ -28,7 +27,7 @@ for ($i=0; $row=sql_fetch_array($result); $i++)
<form name="fboardmoveall" method="post" action="./emoticon_move_update.php" onsubmit="return fboardmoveall_submit(this);">
<input type="hidden" name="sw" value="<?php echo $sw ?>">
<input type="hidden" name="fo_no_list" value="<?php echo $fo_no_list ?>">
<input type="hidden" name="url" value="<?php echo clean_xss_tags(strip_tags($_SERVER['HTTP_REFERER'])); ?>">
<input type="hidden" name="url" value="<?php echo $_SERVER['HTTP_REFERER'] ?>">
<div class="tbl_head01 tbl_wrap">
<table>
-2
View File
@@ -13,8 +13,6 @@ $g5['title'] = "이모티콘 관리";
if ($page < 1) $page = 1;
$fg_no = isset($fg_no) ? (int) $fg_no : '';
if (is_numeric($fg_no))
$sql_group = " and fg_no='$fg_no' ";
else
+2 -2
View File
@@ -4,7 +4,7 @@ include_once("./_common.php");
auth_check($auth[$sub_menu], "w");
check_admin_token();
check_token();
if($atype == "del"){
$count = count($_POST['fo_no']);
@@ -14,7 +14,7 @@ if($atype == "del"){
for ($i=0; $i<$count; $i++)
{
// 실제 번호를 넘김
$fo_no = (int) $_POST['fo_no'][$i];
$fo_no = $_POST['fo_no'][$i];
if (!trim($fo_no)) continue;
$res = sql_fetch("select * from {$g5['sms5_form_table']} where fo_no='$fo_no'");
+1 -1
View File
@@ -27,7 +27,7 @@ $vnum = $total_count - (($page-1) * $page_size);
include_once(G5_ADMIN_PATH.'/admin.head.php');
?>
<form name="search_form" method="get" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" class="local_sch01 local_sch" >
<form name="search_form" method="get" action="<?echo $_SERVER['SCRIPT_NAME']?>" class="local_sch01 local_sch" >
<label for="st" class="sound_only">검색대상</label>
<select name="st" id="st">
<option value="hs_name"<?php echo get_selected('hs_name', $st); ?>>이름</option>
+6 -9
View File
@@ -5,9 +5,6 @@ include_once("./_common.php");
$spage_size = 20;
$colspan = 10;
$st = isset($st) ? strip_tags($st) : '';
$ssv = isset($ssv) ? strip_tags($ssv) : '';
auth_check($auth[$sub_menu], "r");
$g5['title'] = "문자전송 상세내역";
@@ -67,18 +64,18 @@ function all_send()
</script>
<form name="search_form" method="get" action="<?php echo $_SERVER['SCRIPT_NAME']?>" class="local_sch01 local_sch">
<input type="hidden" name="wr_no" value="<?php echo get_sanitize_input($wr_no); ?>">
<input type="hidden" name="wr_renum" value="<?php echo get_sanitize_input($wr_renum); ?>">
<input type="hidden" name="page" value="<?php echo get_sanitize_input($page); ?>">
<input type="hidden" name="st" value="<?php echo get_sanitize_input($st); ?>">
<input type="hidden" name="sv" value="<?php echo get_sanitize_input($sv); ?>">
<input type="hidden" name="wr_no" value="<?php echo $wr_no?>">
<input type="hidden" name="wr_renum" value="<?php echo $wr_renum?>">
<input type="hidden" name="page" value="<?php echo $page?>">
<input type="hidden" name="st" value="<?php echo $st?>">
<input type="hidden" name="sv" value="<?php echo $sv?>">
<label for="sst" class="sound_only">검색대상</label>
<select name="sst" id="sst">
<option value="hs_name" <?php echo get_selected('hs_name', $sst); ?>>이름</option>
<option value="hs_hp" <?php echo get_selected('hs_hp', $sst); ?>>휴대폰번호</option>
</select>
<label for="ssv" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
<input type="text" name="ssv" value="<?php echo get_sanitize_input($ssv); ?>" id="ssv" class="frm_input">
<input type="text" name="ssv" value="<?php echo $ssv?>" id="ssv" class="frm_input">
<input type="submit" value="검색" class="btn_submit">
</form>
-3
View File
@@ -13,9 +13,6 @@ $g5['title'] = "휴대폰번호 관리";
if ($page < 1) $page = 1;
$bg_no = isset($bg_no) ? (int) $bg_no : 0;
$st = isset($st) ? preg_replace('/[^a-z0-9]/i', '', $st) : '';
if (is_numeric($bg_no))
$sql_group = " and bg_no='$bg_no' ";
else
+1 -1
View File
@@ -33,7 +33,7 @@ for ($i=0; $row=sql_fetch_array($result); $i++)
<input type="hidden" name="sw" value="<?php echo $sw ?>">
<input type="hidden" name="bk_no_list" value="<?php echo $bk_no_list ?>">
<input type="hidden" name="act" value="<?php echo $act ?>">
<input type="hidden" name="url" value="<?php echo clean_xss_tags(strip_tags($_SERVER['HTTP_REFERER'])); ?>">
<input type="hidden" name="url" value="<?php echo $_SERVER['HTTP_REFERER'] ?>">
<div class=" new_win_con">
<div class="tbl_head01 tbl_wrap">
<table>
-2
View File
@@ -21,8 +21,6 @@ if ($w=='u') // 업데이트
if (!strlen(trim($bk_name)))
alert('이름을 입력해주세요');
$bk_name = strip_tags($bk_name);
if ($bk_hp == '')
alert('휴대폰번호만 입력 가능합니다.');
/*
+8 -6
View File
@@ -30,7 +30,7 @@ if ($w == 'u' && is_numeric($bk_no)) {
$g5['title'] .= '수정';
}
else {
$write = array('bg_no' => (int) $bg_no);
$write['bg_no'] = $bg_no;
$g5['title'] .= '추가';
}
@@ -43,12 +43,12 @@ include_once(G5_ADMIN_PATH."/admin.head.php");
?>
<form name="book_form" id="book_form" method="post" action="./num_book_update.php">
<input type="hidden" name="w" value="<?php echo get_sanitize_input($w); ?>">
<input type="hidden" name="page" value="<?php echo get_sanitize_input($page); ?>">
<input type="hidden" name="ap" value="<?php echo get_sanitize_input($ap); ?>">
<input type="hidden" name="w" value="<?php echo $w?>">
<input type="hidden" name="page" value="<?php echo $page?>">
<input type="hidden" name="ap" value="<?php echo $ap?>">
<input type="hidden" name="bk_no" value="<?php echo $write['bk_no']?>">
<input type="hidden" name="mb_id" id="mb_id" value="<?php echo $write['mb_id']?>">
<input type="hidden" name="get_bg_no" value="<?php echo get_sanitize_input($bg_no); ?>">
<input type="hidden" name="get_bg_no" value="<?php echo $bg_no?>">
<div class="tbl_frm01 tbl_wrap">
<table>
@@ -74,7 +74,7 @@ include_once(G5_ADMIN_PATH."/admin.head.php");
</tr>
<tr>
<th scope="row"><label for="bk_name">이름<strong class="sound_only"> 필수</strong></label></th>
<td><input type="text" name="bk_name" id="bk_name" maxlength="50" value="<?php echo get_sanitize_input($write['bk_name']); ?>" required class="frm_input required"></td>
<td><input type="text" name="bk_name" id="bk_name" maxlength="50" value="<?php echo $write['bk_name']?>" required class="frm_input required"></td>
</tr>
<tr>
<th scope="row"><label for="bk_hp">휴대폰번호<strong class="sound_only"> 필수</strong></label></th>
@@ -187,12 +187,14 @@ function book_submit(){
if($check_msg.size()> 0)
$check_msg.remove();
// $("#exist_msg").text("<?php echo $exist_msg_2; ?>");
is_submit = true;
} else {
if($check_msg.size() < 1)
$("input#bk_hp").after("<div id=\"hp_check_el\"><h3>이 번호를 쓰는 회원 정보</h3><ul></ul></div>");
$("#hp_check_el").find("ul").html( list_text );
// $("#exist_msg").html("<?php echo $exist_msg_1 ?>");
if(confirm("회원 정보에 중복 휴대폰 번호가 있습니다.수정하실 경우 회원정보에 반영되지 않습니다.\n수정하시겠습니까?"))
is_submit = true;
+2 -3
View File
@@ -28,7 +28,6 @@ include_once(G5_PATH.'/head.sub.php');
// 파일만 가능합니다.
// 공백이 없어야 합니다.
$msg = isset($msg) ? strip_tags($msg) : '';
$msg2 = str_replace("\\n", "<br>", $msg);
$url = clean_xss_tags($url);
@@ -37,7 +36,7 @@ if (!$url) $url = clean_xss_tags($_SERVER['HTTP_REFERER']);
$url = preg_replace("/[\<\>\'\"\\\'\\\"\(\)]/", "", $url);
// url 체크
check_url_host($url, $msg);
check_url_host($url);
if($error) {
$header2 = "다음 항목에 오류가 있습니다.";
@@ -47,7 +46,7 @@ if($error) {
?>
<script>
alert("<?php echo $msg; ?>");
alert("<?php echo strip_tags($msg); ?>");
//document.location.href = "<?php echo $url; ?>";
<?php if ($url) { ?>
document.location.replace("<?php echo str_replace('&amp;', '&', $url); ?>");
-2
View File
@@ -2,8 +2,6 @@
include_once('./_common.php');
include_once(G5_PATH.'/head.sub.php');
$msg = isset($msg) ? strip_tags($msg) : '';
$msg2 = str_replace("\\n", "<br>", $msg);
if($error) {
+6 -8
View File
@@ -16,8 +16,6 @@ if (!$bo_table) {
alert($msg);
}
$g5['board_title'] = ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']);
// wr_id 값이 있으면 글읽기
if (isset($wr_id) && $wr_id) {
// 글이 없을 경우 해당 게시판 목록으로 이동
@@ -79,7 +77,7 @@ if (isset($wr_id) && $wr_id) {
}
// 자신의 글이거나 관리자라면 통과
if (($write['mb_id'] && $write['mb_id'] === $member['mb_id']) || $is_admin) {
if (($write['mb_id'] && $write['mb_id'] == $member['mb_id']) || $is_admin) {
;
} else {
// 비밀글이라면
@@ -95,7 +93,7 @@ if (isset($wr_id) && $wr_id) {
and wr_reply = ''
and wr_is_comment = 0 ";
$row = sql_fetch($sql);
if ($row['mb_id'] === $member['mb_id'])
if ($row['mb_id'] == $member['mb_id'])
$is_owner = true;
}
@@ -122,7 +120,7 @@ if (isset($wr_id) && $wr_id) {
sql_query(" update {$write_table} set wr_hit = wr_hit + 1 where wr_id = '{$wr_id}' ");
// 자신의 글이면 통과
if ($write['mb_id'] && $write['mb_id'] === $member['mb_id']) {
if ($write['mb_id'] && $write['mb_id'] == $member['mb_id']) {
;
} else if ($is_guest && $board['bo_read_level'] == 1 && $write['wr_ip'] == $_SERVER['REMOTE_ADDR']) {
// 비회원이면서 읽기레벨이 1이고 등록된 아이피가 같다면 자신의 글이므로 통과
@@ -138,7 +136,7 @@ if (isset($wr_id) && $wr_id) {
set_session($ss_name, TRUE);
}
$g5['title'] = strip_tags(conv_subject($write['wr_subject'], 255))." > ".$g5['board_title'];
$g5['title'] = strip_tags(conv_subject($write['wr_subject'], 255))." > ".((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']);
} else {
if ($member['mb_level'] < $board['bo_list_level']) {
if ($member['mb_id'])
@@ -173,7 +171,7 @@ if (isset($wr_id) && $wr_id) {
if (!isset($page) || (isset($page) && $page == 0)) $page = 1;
$g5['title'] = $g5['board_title'].' '.$page.' 페이지';
$g5['title'] = ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$page.' 페이지';
}
include_once(G5_PATH.'/head.sub.php');
@@ -221,7 +219,7 @@ if ($board['bo_use_nogood'])
$admin_href = "";
// 최고관리자 또는 그룹관리자라면
if ($member['mb_id'] && ($is_admin === 'super' || $group['gr_admin'] === $member['mb_id']))
if ($member['mb_id'] && ($is_admin == 'super' || $group['gr_admin'] == $member['mb_id']))
$admin_href = G5_ADMIN_URL.'/board_form.php?w=u&amp;bo_table='.$bo_table;
include_once(G5_BBS_PATH.'/board_head.php');
+2 -2
View File
@@ -5,13 +5,13 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if (G5_IS_MOBILE) {
// 모바일의 경우 설정을 따르지 않는다.
include_once(G5_BBS_PATH.'/_head.php');
echo html_purifier(stripslashes($board['bo_mobile_content_head']));
echo stripslashes($board['bo_mobile_content_head']);
} else {
if(is_include_path_check($board['bo_include_head'])) { //파일경로 체크
@include ($board['bo_include_head']);
} else { //파일경로가 올바르지 않으면 기본파일을 가져옴
include_once(G5_BBS_PATH.'/_head.php');
}
echo html_purifier(stripslashes($board['bo_content_head']));
echo stripslashes($board['bo_content_head']);
}
?>
+2 -2
View File
@@ -3,11 +3,11 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 게시판 관리의 하단 파일 경로
if (G5_IS_MOBILE) {
echo html_purifier(stripslashes($board['bo_mobile_content_tail']));
echo stripslashes($board['bo_mobile_content_tail']);
// 모바일의 경우 설정을 따르지 않는다.
include_once(G5_BBS_PATH.'/_tail.php');
} else {
echo html_purifier(stripslashes($board['bo_content_tail']));
echo stripslashes($board['bo_content_tail']);
if(is_include_path_check($board['bo_include_tail'])) { //파일경로 체크
@include ($board['bo_include_tail']);
} else { //파일경로가 올바르지 않으면 기본파일을 가져옴
+3 -3
View File
@@ -2,9 +2,9 @@
include_once('./_common.php');
include_once(G5_PATH.'/head.sub.php');
$url1 = preg_replace("/[\<\>\'\"\\\'\\\"\(\)]/", "", clean_xss_tags($url1));
$url2 = preg_replace("/[\<\>\'\"\\\'\\\"\(\)]/", "", clean_xss_tags($url2));
$url3 = preg_replace("/[\<\>\'\"\\\'\\\"\(\)]/", "", clean_xss_tags($url3));
$url1 = clean_xss_tags($url1);
$url2 = clean_xss_tags($url2);
$url3 = clean_xss_tags($url3);
// url 체크
check_url_host($url1);
-2
View File
@@ -1,8 +1,6 @@
<?php
include_once('./_common.php');
$co_id = preg_replace('/[^a-z0-9_]/i', '', $co_id);
//dbconfig파일에 $g5['content_table'] 배열변수가 있는지 체크
if( !isset($g5['content_table']) ){
die('<meta charset="utf-8">관리자 모드에서 게시판관리->내용 관리를 먼저 확인해 주세요.');
+2 -2
View File
@@ -26,7 +26,7 @@ else if ($is_admin == 'group') { // 그룹관리자
else if ($member['mb_level'] < $mb['mb_level']) // 자신의 레벨이 크거나 같다면 통과
alert('자신의 권한보다 높은 권한의 회원이 작성한 글은 삭제할 수 없습니다.');
} else if ($member['mb_id']) {
if ($member['mb_id'] !== $write['mb_id'])
if ($member['mb_id'] != $write['mb_id'])
alert('자신의 글이 아니므로 삭제할 수 없습니다.');
} else {
if ($write['mb_id'])
@@ -80,7 +80,7 @@ while ($row = sql_fetch_array($result))
$sql2 = " select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$row['wr_id']}' ";
$result2 = sql_query($sql2);
while ($row2 = sql_fetch_array($result2)) {
@unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.str_replace('../', '', $row2['bf_file']));
@unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.$row2['bf_file']);
// 썸네일삭제
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row2['bf_file'])) {
delete_board_thumbnail($bo_table, $row2['bf_file']);
+1 -1
View File
@@ -98,7 +98,7 @@ for ($i=$chk_count-1; $i>=0; $i--)
$result2 = sql_query($sql2);
while ($row2 = sql_fetch_array($result2)) {
// 파일삭제
@unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.str_replace('../', '',$row2['bf_file']));
@unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.$row2['bf_file']);
// 썸네일삭제
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row2['bf_file'])) {
+4 -6
View File
@@ -2,8 +2,6 @@
// 코멘트 삭제
include_once('./_common.php');
$comment_id = (int) $comment_id;
$delete_comment_token = get_session('ss_delete_comment_'.$comment_id.'_token');
set_session('ss_delete_comment_'.$comment_id.'_token', '');
@@ -22,16 +20,16 @@ if ($is_admin == 'super') // 최고관리자 통과
;
else if ($is_admin == 'group') { // 그룹관리자
$mb = get_member($write['mb_id']);
if ($member['mb_id'] === $group['gr_admin']) { // 자신이 관리하는 그룹인가?
if ($member['mb_id'] == $group['gr_admin']) { // 자신이 관리하는 그룹인가?
if ($member['mb_level'] >= $mb['mb_level']) // 자신의 레벨이 크거나 같다면 통과
;
else
alert('그룹관리자의 권한보다 높은 회원의 코멘트이므로 삭제할 수 없습니다.');
} else
alert('자신이 관리하는 그룹의 게시판이 아니므로 코멘트를 삭제할 수 없습니다.');
} else if ($is_admin === 'board') { // 게시판관리자이면
} else if ($is_admin == 'board') { // 게시판관리자이면
$mb = get_member($write['mb_id']);
if ($member['mb_id'] === $board['bo_admin']) { // 자신이 관리하는 게시판인가?
if ($member['mb_id'] == $board['bo_admin']) { // 자신이 관리하는 게시판인가?
if ($member['mb_level'] >= $mb['mb_level']) // 자신의 레벨이 크거나 같다면 통과
;
else
@@ -39,7 +37,7 @@ else if ($is_admin == 'group') { // 그룹관리자
} else
alert('자신이 관리하는 게시판이 아니므로 코멘트를 삭제할 수 없습니다.');
} else if ($member['mb_id']) {
if ($member['mb_id'] !== $write['mb_id'])
if ($member['mb_id'] != $write['mb_id'])
alert('자신의 글이 아니므로 삭제할 수 없습니다.');
} else {
if (!check_password($wr_password, $write['wr_password']))
+4 -20
View File
@@ -67,28 +67,17 @@ if (!get_session($ss_name))
insert_point($member['mb_id'], $board['bo_download_point'], "{$board['bo_subject']} $wr_id 파일 다운로드", $bo_table, $wr_id, "다운로드");
}
set_session($ss_name, TRUE);
}
// 이미 다운로드 받은 파일인지를 검사한 후 다운로드 카운트 증가 ( SIR 그누위즈 님 코드 제안 )
$ss_name = 'ss_down_'.$bo_table.'_'.$wr_id.'_'.$no;
if (!get_session($ss_name))
{
// 다운로드 카운트 증가
$sql = " update {$g5['board_file_table']} set bf_download = bf_download + 1 where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$no' ";
sql_query($sql);
// 다운로드 카운트를 증가시키고 세션을 생성
$_SESSION[$ss_name] = true;
set_session($ss_name, TRUE);
}
$g5['title'] = '다운로드 &gt; '.conv_subject($write['wr_subject'], 255);
//파일명에 한글이 있는 경우
if(preg_match("/[\xA1-\xFE][\xA1-\xFE]/", $file['bf_source'])){
$original = iconv('utf-8', 'euc-kr', $file['bf_source']); // SIR 잉끼님 제안코드
} else {
$original = urlencode($file['bf_source']);
}
//$original = urlencode($file['bf_source']);
$original = iconv('utf-8', 'euc-kr', $file['bf_source']); // SIR 잉끼님 제안코드
@include_once($board_skin_path.'/download.tail.skin.php');
@@ -97,11 +86,6 @@ if(preg_match("/msie/i", $_SERVER['HTTP_USER_AGENT']) && preg_match("/5\.5/", $_
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-description: php generated data");
} else {
header("content-type: file/unknown");
header("content-length: ".filesize("$filepath"));
+1 -5
View File
@@ -4,15 +4,11 @@ include_once('./_common.php');
$mb_id = trim($_GET['mb_id']);
$mb_md5 = trim($_GET['mb_md5']);
$sql = " select mb_id, mb_email_certify2, mb_leave_date, mb_intercept_date from {$g5['member_table']} where mb_id = '{$mb_id}' ";
$sql = " select mb_id, mb_email_certify2 from {$g5['member_table']} where mb_id = '{$mb_id}' ";
$row = sql_fetch($sql);
if (!$row['mb_id'])
alert('존재하는 회원이 아닙니다.', G5_URL);
if ( $row['mb_leave_date'] || $row['mb_intercept_date'] ){
alert('탈퇴 또는 차단된 회원입니다.', G5_URL);
}
// 인증 링크는 한번만 처리가 되게 한다.
sql_query(" update {$g5['member_table']} set mb_email_certify2 = '' where mb_id = '$mb_id' ");
+4 -3
View File
@@ -12,13 +12,14 @@ if (!$is_member && $config['cf_formmail_is_member'])
$email_enc = new str_encrypt();
$to = $email_enc->decrypt($to);
if (substr_count($to, "@") > 1)
alert_close('한번에 한사람에게만 메일을 발송할 수 있습니다.');
if (!chk_captcha()) {
alert('자동등록방지 숫자가 틀렸습니다.');
}
if (!preg_match("/([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/", $to)){
alert_close('E-mail 주소가 형식에 맞지 않아서, 메일을 보낼수 없습니다.');
}
$file = array();
for ($i=1; $i<=$attach; $i++) {
+5 -9
View File
@@ -33,11 +33,7 @@ if ($sop != 'and' && $sop != 'or')
// 분류 선택 또는 검색어가 있다면
$stx = trim($stx);
//검색인지 아닌지 구분하는 변수 초기화
$is_search_bbs = false;
if ($sca || $stx || $stx === '0') { //검색이면
$is_search_bbs = true; //검색구분변수 true 지정
if ($sca || $stx) {
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
@@ -84,7 +80,7 @@ $notice_count = 0;
$notice_array = array();
// 공지 처리
if (!$is_search_bbs) {
if (!$sca && !$stx) {
$arr_notice = explode(',', trim($board['bo_notice']));
$from_notice_idx = ($page - 1) * $page_rows;
if($from_notice_idx < 0)
@@ -166,7 +162,7 @@ if ($sst) {
$sql_order = " order by {$sst} {$sod} ";
}
if ($is_search_bbs) {
if ($sca || $stx) {
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";
} else {
$sql = " select * from {$write_table} where wr_is_comment = 0 ";
@@ -184,7 +180,7 @@ if($page_rows > 0) {
while ($row = sql_fetch_array($result))
{
// 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다
if ($is_search_bbs)
if ($sca || $stx)
$row = sql_fetch(" select * from {$write_table} where wr_id = '{$row['wr_parent']}' ");
$list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
@@ -205,7 +201,7 @@ $write_pages = get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['c
$list_href = '';
$prev_part_href = '';
$next_part_href = '';
if ($is_search_bbs) {
if ($sca || $stx) {
$list_href = './board.php?bo_table='.$bo_table;
$patterns = array('#&amp;page=[0-9]*#', '#&amp;spt=[0-9\-]*#');
+3 -3
View File
@@ -56,7 +56,7 @@ if ( is_use_email_certify() && !preg_match("/[1-9]/", $mb['mb_email_certify']))
// 회원아이디 세션 생성
set_session('ss_mb_id', $mb['mb_id']);
// FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106
set_session('ss_mb_key', md5($mb['mb_datetime'] . get_real_client_ip() . $_SERVER['HTTP_USER_AGENT']));
set_session('ss_mb_key', md5($mb['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']));
// 포인트 체크
if($config['cf_use_point']) {
@@ -72,7 +72,7 @@ if ($auto_login) {
// 3.27
// 자동로그인 ---------------------------
// 쿠키 한달간 저장
$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['SERVER_SOFTWARE'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']);
$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']);
set_cookie('ck_mb_id', $mb['mb_id'], 86400 * 31);
set_cookie('ck_auto', $key, 86400 * 31);
// 자동로그인 end ---------------------------
@@ -83,7 +83,7 @@ if ($auto_login) {
if ($url) {
// url 체크
check_url_host($url, '', G5_URL, true);
check_url_host($url);
$link = urldecode($url);
// 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)
+4 -13
View File
@@ -11,27 +11,18 @@ else
$urlencode = urlencode($_SERVER[REQUEST_URI]);
*/
$url = clean_xss_tags($_GET['url']);
//소셜 로그인 한 경우
if( function_exists('social_member_comfirm_redirect') && (! $url || $url === 'register_form.php') ){
if( function_exists('social_member_comfirm_redirect') ){
social_member_comfirm_redirect();
}
$g5['title'] = '회원 비밀번호 확인';
include_once('./_head.sub.php');
$url = clean_xss_tags($_GET['url']);
// url 체크
check_url_host($url, '', G5_URL, true);
if($url){
$url = preg_replace('#^/\\\{1,}#', '/', $url);
if( preg_match('#^/{3,}#', $url) ){
$url = preg_replace('#^/{3,}#', '/', $url);
}
}
check_url_host($url);
$url = get_text($url);
+1 -1
View File
@@ -20,7 +20,7 @@ else
$sql = " select count(*) as cnt from {$g5['memo_table']} where me_{$kind}_mb_id = '{$member['mb_id']}' ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$total_count = number_format($row['cnt']);
$total_page = ceil($total_count / $config['cf_page_rows']); // 전체 페이지 계산
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
+2 -2
View File
@@ -68,8 +68,8 @@ $mb = get_member($memo['me_'.$unkind.'_mb_id']);
$list_link = './memo.php?kind='.$kind;
if(isset($page) && $page){
$prev_link .= $prev_link ? '&amp;page='.(int) $page : '';
$next_link .= $next_link ? '&amp;page='.(int) $page : '';
$prev_link .= '&amp;page='.(int) $page;
$next_link .= '&amp;page='.(int) $page;
$list_link .= '&amp;page='.(int) $page;
}
+1 -8
View File
@@ -28,14 +28,7 @@ while ($row = sql_fetch_array($result))
$wr_num = $row['wr_num'];
for ($i=0; $i<count($_POST['chk_bo_table']); $i++)
{
$move_bo_table = preg_replace('/[^a-z0-9_]/i', '', $_POST['chk_bo_table'][$i]);
// 취약점 18-0075 참고
$sql = "select * from {$g5['board_table']} where bo_table = '".sql_real_escape_string($move_bo_table)."' ";
$move_board = sql_fetch($sql);
// 존재하지 않다면
if( !$move_board['bo_table'] ) continue;
$move_bo_table = $_POST['chk_bo_table'][$i];
$move_write_table = $g5['write_prefix'] . $move_bo_table;
$src_dir = G5_DATA_PATH.'/file/'.$bo_table; // 원본 디렉토리
+1 -1
View File
@@ -128,7 +128,7 @@ for($i=0;$i<count($_POST['chk_bn_id']);$i++)
$row = sql_fetch($sql);
// 원글의 코멘트 숫자를 감소
sql_query(" update $write_table set wr_comment = wr_comment - 1, wr_last = '{$row['wr_last']}' where wr_id = '{$write['wr_parent']}' ");
sql_query(" update $write_table set wr_comment = wr_comment - 1, wr_last = '$row[wr_last]' where wr_id = '{$write['wr_parent']}' ");
// 코멘트 숫자 감소
sql_query(" update {$g5['board_table']} set bo_count_comment = bo_count_comment - 1 where bo_table = '$bo_table' ");
+4 -4
View File
@@ -43,8 +43,8 @@ switch ($w) {
include_once(G5_PATH.'/head.sub.php');
//if ($board['bo_include_head'] && is_include_path_check($board['bo_content_head'])) { @include ($board['bo_include_head']); }
//if ($board['bo_content_head']) { echo html_purifier(stripslashes($board['bo_content_head'])); }
//if ($board['bo_include_head']) { @include ($board['bo_include_head']); }
//if ($board['bo_content_head']) { echo stripslashes($board['bo_content_head']); }
/* 비밀글의 제목을 가져옴 지운아빠 2013-01-29 */
$sql = " select wr_subject from {$write_table}
@@ -57,8 +57,8 @@ $g5['title'] = get_text($row['wr_subject']);
include_once($member_skin_path.'/password.skin.php');
//if ($board['bo_content_tail']) { echo html_purifier(stripslashes($board['bo_content_tail'])); }
//if ($board['bo_include_tail'] && is_include_path_check($board['bo_content_tail'])) { @include ($board['bo_include_tail']); }
//if ($board['bo_content_tail']) { echo stripslashes($board['bo_content_tail']); }
//if ($board['bo_include_tail']) { @include ($board['bo_include_tail']); }
include_once(G5_PATH.'/tail.sub.php');
?>
+3 -4
View File
@@ -7,8 +7,7 @@ if($is_guest)
$delete_token = get_session('ss_qa_delete_token');
set_session('ss_qa_delete_token', '');
//관리자가 아닌경우에는 토큰을 검사합니다.
if (!$is_admin && !($token && $delete_token == $token))
if (!($token && $delete_token == $token))
alert('토큰 에러로 삭제 불가합니다.');
$tmp_array = array();
@@ -22,7 +21,7 @@ if(!$count)
alert('삭제할 게시글을 하나이상 선택해 주십시오.');
for($i=0; $i<$count; $i++) {
$qa_id = (int) $tmp_array[$i];
$qa_id = $tmp_array[$i];
$sql = " select qa_id, mb_id, qa_type, qa_status, qa_parent, qa_content, qa_file1, qa_file2
from {$g5['qa_content_table']}
@@ -33,7 +32,7 @@ for($i=0; $i<$count; $i++) {
continue;
// 자신의 글이 아니면 건너뜀
if($is_admin != 'super' && $row['mb_id'] !== $member['mb_id'])
if($is_admin != 'super' && $row['mb_id'] != $member['mb_id'])
continue;
// 답변이 달린 글은 삭제못함
+1 -9
View File
@@ -45,14 +45,6 @@ if ($wr_content && ($member['mb_level'] >= $board['bo_comment_level']))
// 원글이 존재한다면
if ($wr['wr_id'])
{
// 세션의 시간 검사
// 4.00.15 - 댓글 수정시 연속 게시물 등록 메시지로 인한 오류 수정
if ($w == 'c' && $_SESSION['ss_datetime'] >= (G5_SERVER_TIME - $config['cf_delay_sec']) && !$is_admin)
alert('너무 빠른 시간내에 게시물을 연속해서 올릴 수 없습니다.');
set_session('ss_datetime', G5_SERVER_TIME);
$mb_id = $member['mb_id'];
$wr_name = addslashes(clean_xss_tags($board['bo_use_name'] ? $member['mb_name'] : $member['mb_nick']));
$wr_password = $member['mb_password'];
@@ -94,7 +86,7 @@ if ($wr_content && ($member['mb_level'] >= $board['bo_comment_level']))
sql_query(" update {$g5['board_table']} set bo_count_comment = bo_count_comment + 1 where bo_table = '$bo_table' ");
// 포인트 부여
insert_point($member['mb_id'], $board['bo_comment_point'], "{$board['bo_subject']} {$wr_id}-{$comment_id} 댓글쓰기(스크랩)", $bo_table, $comment_id, '댓글');
insert_point($member['mb_id'], $board['bo_comment_point'], "{$board['bo_subject']} {$wr_id}-{$comment_id} 코멘트쓰기", $bo_table, $comment_id, '코멘트');
}
}
+2 -2
View File
@@ -10,7 +10,7 @@ if ($sop != 'and' && $sop != 'or')
$sql_search = "";
// 검색이면
if ($sca || $stx || $stx === '0') {
if ($sca || $stx) {
// where 문을 얻음
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
$search_href = './board.php?bo_table='.$bo_table.'&amp;page='.$page.$qstr;
@@ -72,7 +72,7 @@ if ($member['mb_level'] >= $board['bo_reply_level'])
// 수정, 삭제 링크
$update_href = $delete_href = '';
// 로그인중이고 자신의 글이라면 또는 관리자라면 비밀번호를 묻지 않고 바로 수정, 삭제 가능
if (($member['mb_id'] && ($member['mb_id'] === $write['mb_id'])) || $is_admin) {
if (($member['mb_id'] && ($member['mb_id'] == $write['mb_id'])) || $is_admin) {
$update_href = './write.php?w=u&amp;bo_table='.$bo_table.'&amp;wr_id='.$wr_id.'&amp;page='.$page.$qstr;
set_session('ss_delete_token', $token = uniqid(time()));
$delete_href ='./delete.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id.'&amp;token='.$token.'&amp;page='.$page.urldecode($qstr);
+3 -3
View File
@@ -39,8 +39,8 @@ for ($i=0; $row=sql_fetch_array($result); $i++)
$list[$i]['content'] = $list[$i]['content1']= '비밀글 입니다.';
if (!strstr($row['wr_option'], 'secret') ||
$is_admin ||
($write['mb_id']===$member['mb_id'] && $member['mb_id']) ||
($row['mb_id']===$member['mb_id'] && $member['mb_id'])) {
($write['mb_id']==$member['mb_id'] && $member['mb_id']) ||
($row['mb_id']==$member['mb_id'] && $member['mb_id'])) {
$list[$i]['content1'] = $row['wr_content'];
$list[$i]['content'] = conv_content($row['wr_content'], 0, 'wr_content');
$list[$i]['content'] = search_font($stx, $list[$i]['content']);
@@ -71,7 +71,7 @@ for ($i=0; $row=sql_fetch_array($result); $i++)
if ($member['mb_id'])
{
if ($row['mb_id'] === $member['mb_id'] || $is_admin)
if ($row['mb_id'] == $member['mb_id'] || $is_admin)
{
set_session('ss_delete_comment_'.$row['wr_id'].'_token', $token = uniqid(time()));
$list[$i]['del_link'] = './delete_comment.php?bo_table='.$bo_table.'&amp;comment_id='.$row['wr_id'].'&amp;token='.$token.'&amp;page='.$page.$qstr;
+2 -7
View File
@@ -4,13 +4,8 @@ include_once('./_common.php');
$g5['title'] = '이미지 크게보기';
include_once(G5_PATH.'/head.sub.php');
$filename = preg_replace('/[^A-Za-z0-9 _ .\-\/]/', '', $_GET['fn']);
$extension = pathinfo($filename, PATHINFO_EXTENSION);
if ( ! preg_match('/(jpg|jpeg|png|gif|bmp)$/i', $extension) ){
alert_close('이미지 확장자가 아닙니다.');
}
$filename = $_GET['fn'];
$bo_table = $_GET['bo_table'];
if(strpos($filename, 'data/editor')) {
$editor_file = strstr($filename, 'editor');
+6 -6
View File
@@ -56,7 +56,7 @@ if ($w == '') {
} else if ($w == 'u') {
// 김선용 1.00 : 글쓰기 권한과 수정은 별도로 처리되어야 함
//if ($member['mb_level'] < $board['bo_write_level']) {
if($member['mb_id'] && $write['mb_id'] === $member['mb_id']) {
if($member['mb_id'] && $write['mb_id'] == $member['mb_id']) {
;
} else if ($member['mb_level'] < $board['bo_write_level']) {
if ($member['mb_id']) {
@@ -116,7 +116,7 @@ if ($w == '') {
if (strstr($write['wr_option'], 'secret')) {
if ($write['mb_id']) {
// 회원의 경우는 해당 글쓴 회원 및 관리자
if (!($write['mb_id'] === $member['mb_id'] || $is_admin))
if (!($write['mb_id'] == $member['mb_id'] || $is_admin))
alert('비밀글에는 자신 또는 관리자만 답변이 가능합니다.');
} else {
// 비회원의 경우는 비밀글에 답변이 불가함
@@ -168,7 +168,7 @@ if (!empty($group['gr_use_access'])) {
alert("접근 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.", 'login.php?'.$qstr.'&amp;url='.urlencode($_SERVER['SCRIPT_NAME'].'?bo_table='.$bo_table));
}
if ($is_admin == 'super' || $group['gr_admin'] === $member['mb_id'] || $board['bo_admin'] === $member['mb_id']) {
if ($is_admin == 'super' || $group['gr_admin'] == $member['mb_id'] || $board['bo_admin'] == $member['mb_id']) {
; // 통과
} else {
// 그룹접근
@@ -251,7 +251,7 @@ $is_name = false;
$is_password = false;
$is_email = false;
$is_homepage = false;
if ($is_guest || ($is_admin && $w == 'u' && $member['mb_id'] !== $write['mb_id'])) {
if ($is_guest || ($is_admin && $w == 'u' && $member['mb_id'] != $write['mb_id'])) {
$is_name = true;
$is_password = true;
$is_email = true;
@@ -308,7 +308,7 @@ if ($w == '') {
$password_required = '';
if (!$is_admin) {
if (!($is_member && $member['mb_id'] === $write['mb_id'])) {
if (!($is_member && $member['mb_id'] == $write['mb_id'])) {
if (!check_password($wr_password, $write['wr_password'])) {
alert('비밀번호가 틀립니다.');
}
@@ -386,7 +386,7 @@ else
$captcha_html = '';
$captcha_js = '';
$is_use_captcha = ((($board['bo_use_captcha'] && $w !== 'u') || $is_guest) && !$is_admin) ? 1 : 0;
$is_use_captcha = ((($board['bo_use_captcha'] && $w!=='u') || $is_guest) && !$is_admin) ? 1 : 0;
if ($is_use_captcha) {
$captcha_html = captcha_html();
+3 -3
View File
@@ -269,7 +269,7 @@ else if ($w == 'cu') // 댓글 수정
;
else if ($is_admin == 'group') { // 그룹관리자
$mb = get_member($comment['mb_id']);
if ($member['mb_id'] === $group['gr_admin']) { // 자신이 관리하는 그룹인가?
if ($member['mb_id'] == $group['gr_admin']) { // 자신이 관리하는 그룹인가?
if ($member['mb_level'] >= $mb['mb_level']) // 자신의 레벨이 크거나 같다면 통과
;
else
@@ -278,7 +278,7 @@ else if ($w == 'cu') // 댓글 수정
alert('자신이 관리하는 그룹의 게시판이 아니므로 댓글을 수정할 수 없습니다.');
} else if ($is_admin == 'board') { // 게시판관리자이면
$mb = get_member($comment['mb_id']);
if ($member['mb_id'] === $board['bo_admin']) { // 자신이 관리하는 게시판인가?
if ($member['mb_id'] == $board['bo_admin']) { // 자신이 관리하는 게시판인가?
if ($member['mb_level'] >= $mb['mb_level']) // 자신의 레벨이 크거나 같다면 통과
;
else
@@ -286,7 +286,7 @@ else if ($w == 'cu') // 댓글 수정
} else
alert('자신이 관리하는 게시판이 아니므로 댓글을 수정할 수 없습니다.');
} else if ($member['mb_id']) {
if ($member['mb_id'] !== $comment['mb_id'])
if ($member['mb_id'] != $comment['mb_id'])
alert('자신의 글이 아니므로 수정할 수 없습니다.');
} else {
if($comment['wr_password'] != $wr_password)
+8 -13
View File
@@ -129,23 +129,18 @@ for ($i=1; $i<=10; $i++) {
if ($w == '' || $w == 'u') {
// 외부에서 글을 등록할 수 있는 버그가 존재하므로 공지는 관리자만 등록이 가능해야 함
if (!$is_admin && $notice) {
alert('관리자만 공지할 수 있습니다.');
}
//회원 자신이 쓴글을 수정할 경우 공지가 풀리는 경우가 있음
if($w =='u' && !$is_admin && $board['bo_notice'] && in_array($wr['wr_id'], $notice_array)){
$notice = 1;
}
// 김선용 1.00 : 글쓰기 권한과 수정은 별도로 처리되어야 함
if($w =='u' && $member['mb_id'] && $wr['mb_id'] === $member['mb_id']) {
if($w =='u' && $member['mb_id'] && $wr['mb_id'] == $member['mb_id']) {
;
} else if ($member['mb_level'] < $board['bo_write_level']) {
alert('글을 쓸 권한이 없습니다.');
}
// 외부에서 글을 등록할 수 있는 버그가 존재하므로 공지는 관리자만 등록이 가능해야 함
if (!$is_admin && $notice) {
alert('관리자만 공지할 수 있습니다.');
}
} else if ($w == 'r') {
if (in_array((int)$wr_id, $notice_array)) {
@@ -193,7 +188,7 @@ if ($w == '' || $w == 'u') {
alert('w 값이 제대로 넘어오지 않았습니다.');
}
$is_use_captcha = ((($board['bo_use_captcha'] && $w !== 'u') || $is_guest) && !$is_admin) ? 1 : 0;
$is_use_captcha = ((($board['bo_use_captcha'] && $w!=='u') || $is_guest) && !$is_admin) ? 1 : 0;
if ($is_use_captcha && !chk_captcha()) {
alert('자동등록방지 숫자가 틀렸습니다.');
@@ -333,7 +328,7 @@ if ($w == '' || $w == 'r') {
if ($member['mb_id']) {
// 자신의 글이라면
if ($member['mb_id'] === $wr['mb_id']) {
if ($member['mb_id'] == $wr['mb_id']) {
$mb_id = $member['mb_id'];
$wr_name = addslashes(clean_xss_tags($board['bo_use_name'] ? $member['mb_name'] : $member['mb_nick']));
$wr_email = addslashes($member['mb_email']);
+14 -17
View File
@@ -254,7 +254,7 @@ if (isset($_REQUEST['sfl'])) {
if (isset($_REQUEST['stx'])) { // search text (검색어)
$stx = get_search_string(trim($_REQUEST['stx']));
if ($stx || $stx === '0')
if ($stx)
$qstr .= '&amp;stx=' . urlencode(cut_str($stx, 20, ''));
} else {
$stx = '';
@@ -373,22 +373,20 @@ if ($_SESSION['ss_mb_id']) { // 로그인중이라면
if (strtolower($tmp_mb_id) != strtolower($config['cf_admin'])) {
$sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify from {$g5['member_table']} where mb_id = '{$tmp_mb_id}' ";
$row = sql_fetch($sql);
if($row['mb_password']){
$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['SERVER_SOFTWARE'] . $_SERVER['HTTP_USER_AGENT'] . $row['mb_password']);
// 쿠키에 저장된 키와 같다면
$tmp_key = get_cookie('ck_auto');
if ($tmp_key === $key && $tmp_key) {
// 차단, 탈퇴가 아니고 메일인증이 사용이면서 인증을 받았다면
if ($row['mb_intercept_date'] == '' &&
$row['mb_leave_date'] == '' &&
(!$config['cf_use_email_certify'] || preg_match('/[1-9]/', $row['mb_email_certify'])) ) {
// 세션에 회원아이디를 저장하여 로그인으로 간주
set_session('ss_mb_id', $tmp_mb_id);
$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $row['mb_password']);
// 쿠키에 저장된 키와 같다면
$tmp_key = get_cookie('ck_auto');
if ($tmp_key === $key && $tmp_key) {
// 차단, 탈퇴가 아니고 메일인증이 사용이면서 인증을 받았다면
if ($row['mb_intercept_date'] == '' &&
$row['mb_leave_date'] == '' &&
(!$config['cf_use_email_certify'] || preg_match('/[1-9]/', $row['mb_email_certify'])) ) {
// 세션에 회원아이디를 저장하여 로그인으로 간주
set_session('ss_mb_id', $tmp_mb_id);
// 페이지를 재실행
echo "<script type='text/javascript'> window.location.reload(); </script>";
exit;
}
// 페이지를 재실행
echo "<script type='text/javascript'> window.location.reload(); </script>";
exit;
}
}
// $row 배열변수 해제
@@ -621,7 +619,6 @@ if(!empty($extend_file) && is_array($extend_file)) {
foreach($extend_file as $file) {
include_once(G5_EXTEND_PATH.'/'.$file);
}
unset($file);
}
unset($extend_file);
+2 -2
View File
@@ -5,7 +5,7 @@
********************/
define('G5_VERSION', '그누보드5');
define('G5_GNUBOARD_VER', '5.3.2.0');
define('G5_GNUBOARD_VER', '5.3.0.2');
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
define('_GNUBOARD_', true);
@@ -152,7 +152,7 @@ define('G5_DIR_PERMISSION', 0755); // 디렉토리 생성시 퍼미션
define('G5_FILE_PERMISSION', 0644); // 파일 생성시 퍼미션
// 모바일 인지 결정 $_SERVER['HTTP_USER_AGENT']
define('G5_MOBILE_AGENT', 'phone|samsung|lgtel|mobile|[^A]skt|nokia|blackberry|BB10|android|sony');
define('G5_MOBILE_AGENT', 'phone|samsung|lgtel|mobile|[^A]skt|nokia|blackberry|android|sony');
// SMTP
// lib/mailer.lib.php 에서 사용
+20 -30
View File
@@ -43,18 +43,8 @@ border: 1px solid #558ab7 !important;
}
.placeholdersjs { color: #aaa !important; }
/* 레이아웃 크기 지정 */
#hd, #wrapper, #ft{min-width:1200px}
#hd_pop,
#hd_wrapper,
#tnb ul,
#gnb .gnb_wrap,
#container_wr,
#ft_wr{width:1200px}
/* 팝업레이어 */
#hd_pop {z-index:1000;position:relative;margin:0 auto;height:0}
#hd_pop {z-index:1000;position:relative;margin:0 auto;width:1200px;height:0}
#hd_pop h2 {position:absolute;font-size:0;line-height:0;overflow:hidden}
.hd_pops {position:absolute;border:1px solid #e9e9e9;background:#fff;}
.hd_pops img{max-width:100%}
@@ -66,32 +56,32 @@ border: 1px solid #558ab7 !important;
.hd_pops_footer .hd_pops_close{background:#393939;position:absolute;top:0;right:0}
/* 상단 레이아웃 */
#hd {border-top:2px solid #253dbe}
#hd {min-width:1000px;border-top:2px solid #253dbe}
#hd_h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#hd_wrapper {position:relative;margin:0 auto;padding:10px 0;height:115px;zoom:1}
#hd_wrapper {position:relative;margin:0 auto;padding:10px 0;height:115px;width:1200px;zoom:1}
#hd_wrapper:after {display:block;visibility:hidden;clear:both;content:""}
#logo {float:left;padding:30px 0 0}
.hd_sch_wr{position:absolute;top:25px;left:50%;width:430px;margin-left:-215px;}
#hd_sch h3 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#hd_sch{border:2px solid #556ada;background:#fff;border-radius:5px;overflow:hidden}
#hd_sch #sch_stx {padding-left:10px;height:40px;width:376px;border:0;border-right:0;float:left;font-size:1.25em}
#hd_sch{;border:2px solid #556ada;background:#fff;border-radius:5px;overflow:hidden}
#hd_sch #sch_stx {padding-left:10px;height:40px;width:376px;border:0;;border-right:0;float:left;font-size:1.25em}
#hd_sch #sch_submit {height:40px;border:0;background:#fff;color:#253dbe;width:50px;float:left;cursor:pointer;font-size:18px}
#sbn_side{position:absolute;top:20px;right:0}
#tnb {border-bottom:1px solid #ddd;background:#fff}
#tnb h3 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#tnb ul {margin:0 auto;zoom:1}
#tnb ul {margin:0 auto;width:1200px;zoom:1}
#tnb ul:after {display:block;visibility:hidden;clear:both;content:""}
#tnb li {float:right;border-left:1px solid #ddd;margin-bottom:-1px;font-size:0.92em}
#tnb a {display:inline-block;padding:0 10px;color:#646464;line-height:35px}
#tnb a:focus, #tnb a:hover {color:#253dbe;background:#fafafa}
#tnb .tnb_admin a{color:#ff0000;}
#tnb .tnb_left{float:left}
#tnb .tnb_left a{padding:0 14px}
#tnb .tnb_left a{;padding:0 14px}
#tnb .tnb_cart{border-right:1px solid #ddd;}
#tnb .tnb_community{border-right:1px solid #ddd}
#tnb .tnb_community i{font-size:15px}
@@ -118,7 +108,7 @@ border: 1px solid #558ab7 !important;
/* 메인메뉴 */
#gnb{position:relative}
#gnb h2{position:absolute;font-size:0;line-height:0;overflow:hidden}
#gnb .gnb_wrap{margin:0 auto;position:relative}
#gnb .gnb_wrap{margin:0 auto;width:1200px;position:relative}
#gnb #gnb_1dul {font-size:1.083em;padding: 0;background:#253dbe;zoom:1;
-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.3);
-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.3);
@@ -149,7 +139,7 @@ transition: all 0.3s ease-out;}
.gnb_1dli_on .gnb_2da {}
.gnb_2da:focus, .gnb_2da:hover {color:#fff}
.gnb_1dli_over .gnb_2dul {display:block;left:0}
.gnb_1dli_over2 .gnb_2dul {display:block;right:0}
.gnb_1dli_over2 .gnb_2dul {display:block;right:0;background:#fff}
.gnb_wrap .gnb_empty {padding:10px 0;width:100%;text-align:center;line-height:2em;color:#fff}
.gnb_wrap .gnb_empty a{color:#fff;text-decoration:underline}
.gnb_wrap .gnb_al_ul .gnb_empty, .gnb_wrap .gnb_al_ul .gnb_empty a{color:#555}
@@ -173,12 +163,12 @@ box-shadow: 0 2px 5px rgba(0,0,0,0.2);}
/* 중간 레이아웃 */
#wrapper{}
#container_wr:after {display:block;visibility:hidden;clear:both;content:""}
#container_wr {z-index:5;margin:0 auto;height:100%;zoom:1}
#aside {float:right;width:305px;padding:0;background: #e7ebf3;height: 100%;border: 1px solid #adbfd2;margin:20px 0 20px 20px}
#container_wr {z-index:5;margin:0 auto;width:1200px;height:100%;;zoom:1}
#aside {float:right;width:305px;padding:0;background: #e7ebf3;height: 100%;border: 1px solid #adbfd2;;margin:20px 0 20px 20px}
#container {z-index:4;position:relative;float:left;min-height:500px;height:auto !important;margin:20px 0;height:500px;font-size:1em;width:875px;zoom:1}
#container:after {display:block;visibility:hidden;clear:both;content:""}
#container_title {font-size:1.333em;margin:0 auto;font-weight:bold;}
#container_title {font-size:1.333em;max-width:1200px;margin:0 auto;font-weight:bold;}
#container_title span{margin:0 auto 10px;display:block;line-height:30px;}
/*.latest_wr:after {display:block;visibility:hidden;clear:both;content:""}*/
.lt_wr{width:49%}
@@ -187,9 +177,9 @@ box-shadow: 0 2px 5px rgba(0,0,0,0.2);}
/* 하단 레이아웃 */
#ft {border-top:1px solid #d5d5d5;background:#fff;padding-bottom:30px;margin:0 auto;text-align:center}
#ft h1 {position:absolute;font-size:0;line-height:0;overflow:hidden}
#ft_wr {margin:0 auto;position:relative;}
#ft_wr {width:1200px;margin:0 auto;position:relative;}
#ft_link{padding:15px 0;border-bottom:1px solid #eee}
#ft_link a{display:inline-block;padding:0 8px;line-height:1.083em;font-weight:bold}
#ft_link a{;display:inline-block;padding:0 8px;line-height:1.083em;font-weight:bold}
#ft_catch{margin:20px 0 10px}
#ft_copy{color:#555;font-size:0.92em}
#top_btn {position:fixed;bottom:20px;right:20px;width:50px;height:50px;line-height:46px;border:2px solid #333;color:#333;text-align:center;font-size:15px;z-index:90;background:rgba(255,255,255,0.5)}
@@ -216,8 +206,8 @@ box-shadow: 0 2px 5px rgba(0,0,0,0.2);}
/* 캡챠 자동등록(입력)방지 기본 -pc */
#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_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}
@@ -257,7 +247,7 @@ button.btn02 {display:inline-block;margin:0;padding:7px;border:1px solid #3b3c3f
.btn_confirm {text-align:right} /* 서식단계 진행 */
.btn_submit {border:0;background:#253dbe;color:#fff;cursor:pointer;border:0}
.btn_submit {border:0;background:#253dbe;color:#fff;;cursor:pointer;border:0}
.btn_submit:hover {background:#0025eb}
a.btn_cancel {display:inline-block;background:#969696;color:#fff;text-decoration:none;vertical-align:middle;}
@@ -296,7 +286,7 @@ a.btn_admin,.btn_admin {display:inline-block;background:#d13f4a;color:#fff;text-
.tbl_head01 thead th input {vertical-align:top} /* middle 로 하면 게시판 읽기에서 목록 사용시 체크박스 라인 깨짐 */
.tbl_head01 tfoot th, .tbl_head01 tfoot td {padding:10px 0;border-top:1px solid #c1d1d5;border-bottom:1px solid #c1d1d5;background:#d7e0e2;text-align:center}
.tbl_head01 tbody th {padding:8px 0;border-bottom:1px solid #e8e8e8}
.tbl_head01 td {color:#666;background:#fff;padding:10px 5px;border-top:1px solid #ecf0f1;line-height:1.4em;height:60px;word-break:break-all}
.tbl_head01 td {color:#666;background:#fff;;padding:10px 5px;border-top:1px solid #ecf0f1;line-height:1.4em;height:60px;word-break:break-all}
.tbl_head01 tbody tr:hover td{background:#fafafa;}
.tbl_head01 a:hover {text-decoration:underline}
@@ -325,7 +315,7 @@ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
.full_input{width:100%}
.half_input{width:49.5%}
.tbl_frm01 textarea, .write_div textarea {width:100%;height:100px}
.tbl_frm01 textarea {width:100%;height:100px}
.tbl_frm01 a {text-decoration:none}
.tbl_frm01 .frm_file {display:block;margin-bottom:5px}
.tbl_frm01 .frm_info {display:block;padding:0 0 5px;line-height:1.4em}
@@ -420,7 +410,7 @@ box-shadow: 2px 2px 3px 0px rgba(0,0,0,0.2);}
.pg_page, .pg_current {display:inline-block;vertical-align:middle;background:#f3f3f3;border:1px solid #bbbcc3}
.pg a:focus, .pg a:hover {text-decoration:none}
.pg_page {color:#555;font-size:1.083em;height:30px;line-height:28px;padding:0 5px;min-width:30px;text-decoration:none;border-radius:3px;}
.pg_page:hover{background-color:#ddd}
.pg_page:hover{background:#ddd}
.pg_start {text-indent:-999px;overflow:hidden;background:url('../img/btn_first.gif') no-repeat 50% 50% #fff;padding:0;border:1px solid #bbb;}
.pg_prev {text-indent:-999px;overflow:hidden;background:url('../img/btn_prev.gif') no-repeat 50% 50% #fff;padding:0;border:1px solid #bbb}
.pg_end {text-indent:-999px;overflow:hidden;background:url('../img/btn_end.gif') no-repeat 50% 50% #fff;padding:0;border:1px solid #bbb}
+9 -9
View File
@@ -43,8 +43,8 @@ ul,li,dl,dt,dd{list-style:none;padding:0;margin:0}
#logo img{vertical-align:middle;max-height:100%;width:auto}
#gnb_open {position:absolute;top:10px;left:10px;padding:0 10px;height:30px;width:30px;border:0;background-size:70%;color:#fff;background:none; font-size: 16px;}
#gnb {display:none;background:#262626;position:fixed;top:0;left:0;z-index:99999;height:100%;overflow-y:auto;width:300px;
-webkit-box-shadow:0 0 5px rgba(55,55,5,0.4);
-moz-box-shadow:0 0 5px rgba(55,55,5,0.4);
-webkit-box-shadow:0 0 5px rgba(55,55,5,0.4));
-moz-box-shadow:0 0 5px rgba(55,55,5,0.4));
box-shadow: 0 0 5px rgba(55,55,5,0.4);}
#gnb a {display:block;color:#efefef}
@@ -68,8 +68,8 @@ box-shadow: 0 0 5px rgba(55,55,5,0.4);}
#user_btn {position:absolute;top:10px;right:10px;padding:0 10px;height:30px;width:30px;border:0;;color:#fff;font-size:16px;background:none;letter-spacing:-0.1em}
#user_menu{display:none;position:fixed;top:0;right:0;height:100%;;overflow-y:auto;width:320px;z-index:9999;background:#fff;text-align:center;
-webkit-box-shadow:0 0 5px rgba(55,55,5,0.4);
-moz-box-shadow:0 0 5px rgba(55,55,5,0.4);
-webkit-box-shadow:0 0 5px rgba(55,55,5,0.4));
-moz-box-shadow:0 0 5px rgba(55,55,5,0.4));
box-shadow: 0 0 5px rgba(55,55,5,0.4);}
#user_close {display:block;margin:0;height:50px;width:100%;border:0;background:url(../img/mobile/btn_close.png) no-repeat right 50%
#222;background-size:25px;color:#fff;text-indent:-999999999px;overflow:hidden}
@@ -102,8 +102,8 @@ box-shadow: 0 0 5px rgba(100,100,100,0.2);}
#container {position:relative;min-height:300px}
#container:after {display:block;visibility:hidden;clear:both;content:""}
#container_title {font-size:1.2em;font-weight:bold;height:50px;padding:10px;line-height:30px;background:#fff;color:#333;
-webkit-box-shadow: 0 0 5px rgba(55,55,5,0.4);
-moz-box-shadow: 0 0 5px rgba(55,55,5,0.4);
-webkit-box-shadow: 0 0 5px rgba(55,55,5,0.4));
-moz-box-shadow: 0 0 5px rgba(55,55,5,0.4));
box-shadow: 0 0 5px rgba(55,55,5,0.4);
}
.top{position:relative}
@@ -150,8 +150,8 @@ box-shadow: 0 0 5px rgba(100,100,100,0.2);}
/* 캡챠 자동등록(입력)방지 기본 -pc */
#captcha {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;width:40px;height:40px;background:url('../img/captcha2.png') no-repeat;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;width:40px;height:40px;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:3px 0 5px ;font-size:0.95em;letter-spacing:-0.1em}
@@ -185,7 +185,7 @@ button.btn02 {display:inline-block;margin:0;padding:7px;border:1px solid #3b3c3f
.btn_confirm {text-align:center} /* 서식단계 진행 */
.btn_submit {border:0;background:#ff506a;color:#fff;cursor:pointer;border-radius:3px}
.btn_submit {;border:0;background:#ff506a;color:#fff;cursor:pointer;border-radius:3px}
fieldset .btn_submit {}
a.btn_cancel {display:inline-block;background:#ddd;color:#444;text-decoration:none;vertical-align:middle}
+1 -4
View File
@@ -39,10 +39,7 @@ define('G5_SOCIAL_USE_POPUP', ! is_mobile() ); // 모바일에서는 팝업사
define('G5_SOCIAL_DELETE_DAY', 0);
// 메일 인증관련, false 이면 메일인증을 받지 않고 로그인됩니다. true 이고 기본환경설정에서 메일인증설정이 활성화 되어 있는 경우 메일인증을 받아야만 로그인 됩니다.
define('G5_SOCIAL_CERTIFY_MAIL', false);
// 소셜 DEBUG 관련 설정, 기본값은 false, true 로 설정시 data/tmp/social_anystring.log 파일이 생성됩니다.
define('G5_SOCIAL_IS_DEBUG', false);
define('G5_SOCIAL_CERTIFY_MAIL', false );
include_once(G5_SOCIAL_LOGIN_PATH.'/includes/functions.php');
?>
+8
View File
@@ -1,3 +1,11 @@
<?php
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>');
/**
* 이 아래에 사용자 코드를 적용해 주세요.
*/
?>
+148 -29
View File
@@ -11,8 +11,6 @@ if(get_session('tables_copied') == 'done')
if($is_admin != 'super')
alert('최고관리자로 로그인 후 실행해 주십시오.', G5_URL);
include_once(G5_PATH.'/head.php');
?>
<style>
@@ -22,41 +20,162 @@ include_once(G5_PATH.'/head.php');
#g4_import_frm .btn_submit {padding:0 10px;height:24px}
</style>
<div id="g4_import">
<p>
이 프로그램은 그누보드5 설치 후 바로 실행하셔야만 합니다.<br>
만약 그누보드5 사이트를 운영 중에 이 프로그램을 실행하시면 DB 데이터가 망실되거나 데이터의 오류가 발생할 수 있습니다.<br>
또한 중복해서 실행하실 경우에도 DB 데이터의 오류가 발생할 수 있으니 반드시 한번만 실행해 주십시오.
</p>
<p>프로그램을 실행하시려면 그누보드4의 config.php 파일 경로를 입력하신 후 확인을 클릭해 주십시오.</p>
<!-- 상단 시작 { -->
<div id="hd">
<h1 id="hd_h1"><?php echo $g5['title'] ?></h1>
<form name="fimport" method="post" action="./g4_import_run.php" onsubmit="return fimport_submit(this);">
<input type="hidden" name="token" value="" >
<div id="g4_import_frm">
<label for="file_path">config.php 파일 경로</label>
<input type="text" name="file_path" id="file_path" required class="frm_input required">
<input type="submit" value="확인" class="btn_submit">
<div id="skip_to_container"><a href="#container">본문 바로가기</a></div>
<div id="hd_wrapper">
<div id="logo">
<a href="<?php echo G5_URL ?>"><img src="<?php echo G5_IMG_URL ?>/logo.jpg" alt="<?php echo $config['cf_title']; ?>"></a>
</div>
<fieldset id="hd_sch">
<legend>사이트 내 전체검색</legend>
<form name="fsearchbox" method="get" action="<?php echo G5_BBS_URL ?>/search.php" onsubmit="return fsearchbox_submit(this);">
<input type="hidden" name="sfl" value="wr_subject||wr_content">
<input type="hidden" name="sop" value="and">
<label for="sch_stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
<input type="text" name="stx" id="sch_stx" maxlength="20">
<input type="submit" id="sch_submit" value="검색">
</form>
<script>
function fsearchbox_submit(f)
{
if (f.stx.value.length < 2) {
alert("검색어는 두글자 이상 입력하십시오.");
f.stx.select();
f.stx.focus();
return false;
}
// 검색에 많은 부하가 걸리는 경우 이 주석을 제거하세요.
var cnt = 0;
for (var i=0; i<f.stx.value.length; i++) {
if (f.stx.value.charAt(i) == ' ')
cnt++;
}
if (cnt > 1) {
alert("빠른 검색을 위하여 검색어에 공백은 한개만 입력할 수 있습니다.");
f.stx.select();
f.stx.focus();
return false;
}
return true;
}
</script>
</fieldset>
<ul id="tnb">
<?php if ($is_member) { ?>
<?php if ($is_admin) { ?>
<li><a href="<?php echo G5_ADMIN_URL ?>"><b>관리자</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/member_confirm.php?url=<?php echo G5_BBS_URL ?>/register_form.php">정보수정</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/logout.php">로그아웃</a></li>
<?php } else { ?>
<li><a href="<?php echo G5_BBS_URL ?>/register.php">회원가입</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/login.php"><b>로그인</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/qalist.php">1:1문의</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/current_connect.php">접속자 <?php echo connect(); // 현재 접속자수 ?></a></li>
<li><a href="<?php echo G5_BBS_URL ?>/new.php">새글</a></li>
</ul>
<div id="text_size">
<!-- font_resize('엘리먼트id', '제거할 class', '추가할 class'); -->
<button id="size_down" onclick="font_resize('container', 'ts_up ts_up2', '');"><img src="<?php echo G5_URL; ?>/img/ts01.gif" alt="기본"></button>
<button id="size_def" onclick="font_resize('container', 'ts_up ts_up2', 'ts_up');"><img src="<?php echo G5_URL; ?>/img/ts02.gif" alt="크게"></button>
<button id="size_up" onclick="font_resize('container', 'ts_up ts_up2', 'ts_up2');"><img src="<?php echo G5_URL; ?>/img/ts03.gif" alt="더크게"></button>
</div>
</div>
</form>
<p>
경로는 그누보드5 설치 루트를 기준으로 그누보드4의 config.php 파일의 상대경로입니다.<br>
예를 들어 그누보드4를 웹루트에 설치하셨고 그누보드5를 g5라는 하위 폴더에 설치하셨다면 입력하실 경로는 ../config.php 입니다.
</p>
<hr>
<nav id="gnb">
<h2>메인메뉴</h2>
<ul id="gnb_1dul">
<li class="gnb_empty">메뉴는 표시하지 않습니다.</li>
</ul>
</nav>
</div>
<!-- } 상단 끝 -->
<hr>
<!-- 콘텐츠 시작 { -->
<div id="wrapper">
<div id="aside">
<?php echo outlogin('basic'); // 외부 로그인 ?>
</div>
<div id="container">
<?php if ((!$bo_table || $w == 's' ) && !defined("_INDEX_")) { ?><div id="container_title"><?php echo $g5['title'] ?></div><?php } ?>
<div id="g4_import">
<p>
이 프로그램은 그누보드5 설치 후 바로 실행하셔야만 합니다.<br>
만약 그누보드5 사이트를 운영 중에 이 프로그램을 실행하시면 DB 데이터가 망실되거나 데이터의 오류가 발생할 수 있습니다.<br>
또한 중복해서 실행하실 경우에도 DB 데이터의 오류가 발생할 수 있으니 반드시 한번만 실행해 주십시오.
</p>
<p>프로그램을 실행하시려면 그누보드4의 config.php 파일 경로를 입력하신 후 확인을 클릭해 주십시오.</p>
<form name="fimport" method="post" action="./g4_import_run.php" onsubmit="return fimport_submit(this);">
<input type="hidden" name="token" value="" >
<div id="g4_import_frm">
<label for="file_path">config.php 파일 경로</label>
<input type="text" name="file_path" id="file_path" required class="frm_input required">
<input type="submit" value="확인" class="btn_submit">
</div>
</form>
<p>
경로는 그누보드5 설치 루트를 기준으로 그누보드4의 config.php 파일의 상대경로입니다.<br>
예를 들어 그누보드4를 웹루트에 설치하셨고 그누보드5를 g5라는 하위 폴더에 설치하셨다면 입력하실 경로는 ../config.php 입니다.
</p>
</div>
<script>
function fimport_submit(f)
{
var token = get_write_token('g4_import');
f.token.value = token;
return confirm('그누보드4의 DB 데이터를 이전하시겠습니까?');
}
</script>
</div>
</div>
<!-- } 콘텐츠 끝 -->
<hr>
<!-- 하단 시작 { -->
<div id="ft">
<div id="ft_catch"><img src="<?php echo G5_IMG_URL; ?>/ft.png" alt="<?php echo G5_VERSION ?>"></div>
<div id="ft_copy">
<p>
Copyright &copy; <b>소유하신 도메인.</b> All rights reserved.<br>
<a href="#">상단으로</a>
</p>
</div>
</div>
<script>
function fimport_submit(f)
{
var token = get_write_token('g4_import');
f.token.value = token;
return confirm('그누보드4의 DB 데이터를 이전하시겠습니까?');
}
$(function() {
// 폰트 리사이즈 쿠키있으면 실행
font_resize("container", get_cookie("ck_font_resize_rmv_class"), get_cookie("ck_font_resize_add_class"));
});
</script>
<?php
include_once(G5_PATH.'/tail.php');
include_once(G5_PATH.'/'.G5_THEME_DIR.'/basic/tail.sub.php');
?>
+463 -339
View File
@@ -3,9 +3,17 @@ include_once('./_common.php');
ob_end_clean();
include_once(G5_LIB_PATH.'/connect.lib.php');
include_once(G5_LIB_PATH.'/outlogin.lib.php');
set_time_limit ( 0 );
ini_set('memory_limit', '50M');
$g5['title'] = '그누보드4 DB 데이터 이전';
include_once(G5_PATH.'/'.G5_THEME_DIR.'/basic/head.sub.php');
echo '<link rel="stylesheet" href="'.G5_URL.'/g4_import.css">';
if(empty($_POST))
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
@@ -33,9 +41,6 @@ if(!is_file($g4_config_file))
alert('입력하신 경로에 config.php 파일이 존재하지 않습니다.');
$is_euckr = false;
$g5['title'] = '그누보드4 DB 데이터 이전';
include_once(G5_PATH.'/head.php');
?>
<script>
// 새로고침 방지
@@ -63,376 +68,495 @@ document.onkeydown = noRefresh ;
#g4_import_run ol {margin: 0;padding: 0 0 0 25px;border: 1px solid #E9E9E9;border-bottom: 0;background: #f5f8f9;list-style:none;zoom:1}
#g4_import_run li {padding:7px 10px;border-bottom:1px solid #e9e9e9}
#g4_import_run #run_msg {padding:30px 0;text-align:center}
#container_wr #aside{display:none}
</style>
<div id="g4_import_run">
<ol>
<?php
flush();
<!-- 상단 시작 { -->
<div id="hd">
<h1 id="hd_h1"><?php echo $g5['title'] ?></h1>
$g4 = array();
// g4의 confing.php
require('./'.$g4_config_file);
<div id="skip_to_container"><a href="#container">본문 바로가기</a></div>
if(preg_replace('/[^a-z]/', '', strtolower($g4['charset'])) == 'euckr')
$is_euckr = true;
<div id="hd_wrapper">
// member table 복사
$columns = sql_field_names($g5['member_table']);
<div id="logo">
<a href="<?php echo G5_URL ?>"><img src="<?php echo G5_IMG_URL ?>/logo.jpg" alt="<?php echo $config['cf_title']; ?>"></a>
</div>
$sql = " select * from {$g4['member_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
<fieldset id="hd_sch">
<legend>사이트 내 전체검색</legend>
<form name="fsearchbox" method="get" action="<?php echo G5_BBS_URL ?>/search.php" onsubmit="return fsearchbox_submit(this);">
<input type="hidden" name="sfl" value="wr_subject||wr_content">
<input type="hidden" name="sop" value="and">
<label for="sch_stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
<input type="text" name="stx" id="sch_stx" maxlength="20">
<input type="submit" id="sch_submit" value="검색">
</form>
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
<script>
function fsearchbox_submit(f)
{
if (f.stx.value.length < 2) {
alert("검색어는 두글자 이상 입력하십시오.");
f.stx.select();
f.stx.focus();
return false;
}
$comma = '';
$sql_common = '';
// 검색에 많은 부하가 걸리는 경우 이 주석을 제거하세요.
var cnt = 0;
for (var i=0; i<f.stx.value.length; i++) {
if (f.stx.value.charAt(i) == ' ')
cnt++;
}
foreach($row as $key=>$val) {
if($key == 'mb_no')
continue;
if (cnt > 1) {
alert("빠른 검색을 위하여 검색어에 공백은 한개만 입력할 수 있습니다.");
f.stx.select();
f.stx.focus();
return false;
}
if(!in_array($key, $columns))
continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['member_table']} SET $sql_common ");
}
echo '<li>member table 복사</li>'.PHP_EOL;
unset($columns);
unset($fiels);
// point table 복사
$sql = " select * from {$g4['point_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
if($key == 'po_id')
continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['point_table']} SET $sql_common ");
}
echo '<li>point table 복사</li>'.PHP_EOL;
// login table 복사
$sql = " select * from {$g4['login_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['login_table']} where lo_ip = '{$row['lo_ip']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['login_table']} SET $sql_common ");
}
echo '<li>login table 복사</li>'.PHP_EOL;
// visit table 복사
$sql = " select * from {$g4['visit_table']} ";
$result = sql_query($sql);
// g5_visit 테이블 초기화
sql_query(" delete from {$g5['visit_table']} ");
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
/*
$sql2 = " select count(*) as cnt from {$g5['visit_table']} where vi_ip = '{$row['vi_ip']}' and vi_date = '{$row['vi_date']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
*/
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['visit_table']} SET $sql_common ");
}
echo '<li>visit table 복사</li>'.PHP_EOL;
// visit sum table 복사
$sql = " select * from {$g4['visit_sum_table']} ";
$result = sql_query($sql);
// g5_visit_sub 테이블 초기화
sql_query(" delete from {$g5['visit_sum_table']} ");
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
/*
$sql2 = " select count(*) as cnt from {$g5['visit_sum_table']} where vs_date = '{$row['vs_date']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
*/
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['visit_sum_table']} SET $sql_common ");
}
echo '<li>visit sum table 복사</li>'.PHP_EOL;
// group table 복사
$columns = sql_field_names($g5['group_table']);
$sql = " select * from {$g4['group_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['group_table']} where gr_id = '{$row['gr_id']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
if(!in_array($key, $columns))
continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['group_table']} SET $sql_common ");
}
echo '<li>group table 복사</li>'.PHP_EOL;
unset($columns);
unset($fiels);
// board 복사
$columns = sql_field_names($g5['board_table']);
$sql = " select * from {$g4['board_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['board_table']} where bo_table = '{$row['bo_table']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
$comma = '';
$sql_common = '';
// 모바일 스킨 디렉토리
if( ! isset($row['bo_mobile_skin']) ){
$row['bo_mobile_skin'] = 'basic';
}
// 모바일 제목 길이
if( ! isset($row['bo_mobile_subject_len']) ){
$row['bo_mobile_subject_len'] = '30';
}
// 모바일 페이지당 목록 수
if( ! isset($row['bo_mobile_page_rows']) ){
$row['bo_mobile_page_rows'] = '15';
}
// 갤러리 이미지 폭 ( 리스트 )
if( ! isset($row['bo_gallery_width']) ){
$row['bo_gallery_width'] = '174';
}
// 갤러리 이미지 높이 ( 리스트 )
if( ! isset($row['bo_gallery_height']) ){
$row['bo_gallery_height'] = '124';
}
// 모바일 갤러리 이미지 폭 ( 리스트 )
if( ! isset($row['bo_mobile_gallery_width']) ){
$row['bo_mobile_gallery_width'] = '125';
}
// 모바일 갤러리 이미지 높이 ( 리스트 )
if( ! isset($row['bo_mobile_gallery_height']) ){
$row['bo_mobile_gallery_height'] = '100';
}
foreach($row as $key=>$val) {
if(!in_array($key, $columns))
continue;
if($key === 'bo_notice'){
$val = str_replace("\n", ",", $val);
if( substr($val, -1) === ',' ){
$val = substr($val, 0, -1);
return true;
}
}
</script>
</fieldset>
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
<ul id="tnb">
<?php if ($is_member) { ?>
<?php if ($is_admin) { ?>
<li><a href="<?php echo G5_ADMIN_URL ?>"><b>관리자</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/member_confirm.php?url=<?php echo G5_BBS_URL ?>/register_form.php">정보수정</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/logout.php">로그아웃</a></li>
<?php } else { ?>
<li><a href="<?php echo G5_BBS_URL ?>/register.php">회원가입</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/login.php"><b>로그인</b></a></li>
<?php } ?>
<li><a href="<?php echo G5_BBS_URL ?>/qalist.php">1:1문의</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/current_connect.php">접속자 <?php echo connect(); // 현재 접속자수 ?></a></li>
<li><a href="<?php echo G5_BBS_URL ?>/new.php">새글</a></li>
</ul>
$comma = ',';
}
<div id="text_size">
<!-- font_resize('엘리먼트id', '제거할 class', '추가할 class'); -->
<button id="size_down" onclick="font_resize('container', 'ts_up ts_up2', '');"><img src="<?php echo G5_URL; ?>/img/ts01.gif" alt="기본"></button>
<button id="size_def" onclick="font_resize('container', 'ts_up ts_up2', 'ts_up');"><img src="<?php echo G5_URL; ?>/img/ts02.gif" alt="크게"></button>
<button id="size_up" onclick="font_resize('container', 'ts_up ts_up2', 'ts_up2');"><img src="<?php echo G5_URL; ?>/img/ts03.gif" alt="더크게"></button>
</div>
</div>
sql_query(" INSERT INTO {$g5['board_table']} SET $sql_common ");
<hr>
// 게시판 테이블 생성
$bo_table = $row['bo_table'];
$file = file(G5_ADMIN_PATH.'/sql_write.sql');
$sql = implode($file, "\n");
<nav id="gnb">
<h2>메인메뉴</h2>
<ul id="gnb_1dul">
<li class="gnb_empty">메뉴는 표시하지 않습니다.</li>
</ul>
</nav>
</div>
<!-- } 상단 끝 -->
$create_table = $g5['write_prefix'] . $bo_table;
<hr>
$source = array('/__TABLE_NAME__/', '/;/');
$target = array($create_table, '');
$sql = preg_replace($source, $target, $sql);
<!-- 콘텐츠 시작 { -->
<div id="wrapper">
<div id="aside">
<?php echo outlogin('basic'); // 외부 로그인 ?>
</div>
<div id="container">
<?php if ((!$bo_table || $w == 's' ) && !defined("_INDEX_")) { ?><div id="container_title"><?php echo $g5['title'] ?></div><?php } ?>
// 게시글 복사
if(sql_query($sql, FALSE)) {
$write_table = $g4['write_prefix'].$bo_table;
$columns2 = sql_field_names($create_table);
<div id="g4_import_run">
<ol>
<?php
flush();
$sql3 = " select * from $write_table ";
$result3 = sql_query($sql3);
// g4의 confing.php
require('./'.$g4_config_file);
for($k=0; $row3=sql_fetch_array($result3); $k++) {
if(preg_replace('/[^a-z]/', '', strtolower($g4['charset'])) == 'euckr')
$is_euckr = true;
// member table 복사
$columns = sql_field_names($g5['member_table']);
$sql = " select * from {$g4['member_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row3 = array_map('iconv_utf8', $row3);
$row = array_map('iconv_utf8', $row);
$comma3 = '';
$sql_common3 = '';
foreach($row3 as $key=>$val) {
if(!in_array($key, $columns2))
continue;
$sql_common3 .= $comma3 . " $key = '".addslashes($val)."' ";
$comma3 = ',';
}
// 첨부파일개수
$wr_id = $row3['wr_id'];
$sql4 = " select count(*) as cnt from {$g4['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' ";
$row4 = sql_fetch($sql4);
$sql_common3 .= " , wr_file = '{$row4['cnt']}' ";
sql_query(" INSERT INTO $create_table SET $sql_common3 ");
}
echo '<li>'.str_replace(G5_TABLE_PREFIX.'write_', '', $create_table).' 게시글 복사</li>';
}
}
unset($columns);
unset($fiels);
// 그외 테이블 복사
$tables = array('board_file', 'board_new', 'board_good', 'mail', 'memo', 'group_member', 'auth', 'popular', 'poll', 'poll_etc', 'scrap');
foreach($tables as $table) {
$columns = sql_field_names($g5[$table.'_table']);
$src_table = $g4[$table.'_table'];
$dst_table = $g5[$table.'_table'];
$sql = " select * from $src_table ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
if(!in_array($key, $columns))
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = '';
$sql_common = '';
$comma = ',';
foreach($row as $key=>$val) {
if($key == 'mb_no')
continue;
if(!in_array($key, $columns))
continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['member_table']} SET $sql_common ");
}
$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ", false);
echo '<li>member table 복사</li>'.PHP_EOL;
unset($columns);
unset($fiels);
if(!$result2)
continue;
}
// point table 복사
$sql = " select * from {$g4['point_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
echo '<li>'.$table.' table 복사</li>'.PHP_EOL;
}
$comma = '';
$sql_common = '';
unset($columns);
unset($fiels);
foreach($row as $key=>$val) {
if($key == 'po_id')
continue;
echo '</ol>'.PHP_EOL;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
echo '<div id="run_msg">그누보드4 DB 데이터 이전 완료</div>'.PHP_EOL;
$comma = ',';
}
// 실행완료 세션에 기록
set_session('tables_copied', 'done');
?>
sql_query(" INSERT INTO {$g5['point_table']} SET $sql_common ");
}
echo '<li>point table 복사</li>'.PHP_EOL;
// login table 복사
$sql = " select * from {$g4['login_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['login_table']} where lo_ip = '{$row['lo_ip']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['login_table']} SET $sql_common ");
}
echo '<li>login table 복사</li>'.PHP_EOL;
// visit table 복사
$sql = " select * from {$g4['visit_table']} ";
$result = sql_query($sql);
// g5_visit 테이블 초기화
sql_query(" delete from {$g5['visit_table']} ");
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
/*
$sql2 = " select count(*) as cnt from {$g5['visit_table']} where vi_ip = '{$row['vi_ip']}' and vi_date = '{$row['vi_date']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
*/
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['visit_table']} SET $sql_common ");
}
echo '<li>visit table 복사</li>'.PHP_EOL;
// visit sum table 복사
$sql = " select * from {$g4['visit_sum_table']} ";
$result = sql_query($sql);
// g5_visit_sub 테이블 초기화
sql_query(" delete from {$g5['visit_sum_table']} ");
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
/*
$sql2 = " select count(*) as cnt from {$g5['visit_sum_table']} where vs_date = '{$row['vs_date']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
*/
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['visit_sum_table']} SET $sql_common ");
}
echo '<li>visit sum table 복사</li>'.PHP_EOL;
// group table 복사
$columns = sql_field_names($g5['group_table']);
$sql = " select * from {$g4['group_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['group_table']} where gr_id = '{$row['gr_id']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
if(!in_array($key, $columns))
continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['group_table']} SET $sql_common ");
}
echo '<li>group table 복사</li>'.PHP_EOL;
unset($columns);
unset($fiels);
// board 복사
$columns = sql_field_names($g5['board_table']);
$sql = " select * from {$g4['board_table']} ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
// 중복체크
$sql2 = " select count(*) as cnt from {$g5['board_table']} where bo_table = '{$row['bo_table']}' ";
$row2 = sql_fetch($sql2);
if($row2['cnt'])
continue;
$comma = '';
$sql_common = '';
// 모바일 스킨 디렉토리
if( ! isset($row['bo_mobile_skin']) ){
$row['bo_mobile_skin'] = 'basic';
}
// 모바일 제목 길이
if( ! isset($row['bo_mobile_subject_len']) ){
$row['bo_mobile_subject_len'] = '30';
}
// 모바일 페이지당 목록 수
if( ! isset($row['bo_mobile_page_rows']) ){
$row['bo_mobile_page_rows'] = '15';
}
// 갤러리 이미지 폭 ( 리스트 )
if( ! isset($row['bo_gallery_width']) ){
$row['bo_gallery_width'] = '174';
}
// 갤러리 이미지 높이 ( 리스트 )
if( ! isset($row['bo_gallery_height']) ){
$row['bo_gallery_height'] = '124';
}
// 모바일 갤러리 이미지 폭 ( 리스트 )
if( ! isset($row['bo_mobile_gallery_width']) ){
$row['bo_mobile_gallery_width'] = '125';
}
// 모바일 갤러리 이미지 높이 ( 리스트 )
if( ! isset($row['bo_mobile_gallery_height']) ){
$row['bo_mobile_gallery_height'] = '100';
}
foreach($row as $key=>$val) {
if(!in_array($key, $columns))
continue;
if($key === 'bo_notice'){
$val = str_replace("\n", ",", $val);
if( substr($val, -1) === ',' ){
$val = substr($val, 0, -1);
}
}
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
sql_query(" INSERT INTO {$g5['board_table']} SET $sql_common ");
// 게시판 테이블 생성
$bo_table = $row['bo_table'];
$file = file(G5_ADMIN_PATH.'/sql_write.sql');
$sql = implode($file, "\n");
$create_table = $g5['write_prefix'] . $bo_table;
$source = array('/__TABLE_NAME__/', '/;/');
$target = array($create_table, '');
$sql = preg_replace($source, $target, $sql);
// 게시글 복사
if(sql_query($sql, FALSE)) {
$write_table = $g4['write_prefix'].$bo_table;
$columns2 = sql_field_names($create_table);
$sql3 = " select * from $write_table ";
$result3 = sql_query($sql3);
for($k=0; $row3=sql_fetch_array($result3); $k++) {
if($is_euckr)
$row3 = array_map('iconv_utf8', $row3);
$comma3 = '';
$sql_common3 = '';
foreach($row3 as $key=>$val) {
if(!in_array($key, $columns2))
continue;
$sql_common3 .= $comma3 . " $key = '".addslashes($val)."' ";
$comma3 = ',';
}
// 첨부파일개수
$wr_id = $row3['wr_id'];
$sql4 = " select count(*) as cnt from {$g4['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' ";
$row4 = sql_fetch($sql4);
$sql_common3 .= " , wr_file = '{$row4['cnt']}' ";
sql_query(" INSERT INTO $create_table SET $sql_common3 ");
}
echo '<li>'.str_replace(G5_TABLE_PREFIX.'write_', '', $create_table).' 게시글 복사</li>';
}
}
unset($columns);
unset($fiels);
// 그외 테이블 복사
$tables = array('board_file', 'board_new', 'board_good', 'mail', 'memo', 'group_member', 'auth', 'popular', 'poll', 'poll_etc', 'scrap');
foreach($tables as $table) {
$columns = sql_field_names($g5[$table.'_table']);
$src_table = $g4[$table.'_table'];
$dst_table = $g5[$table.'_table'];
$sql = " select * from $src_table ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++) {
if($is_euckr)
$row = array_map('iconv_utf8', $row);
$comma = '';
$sql_common = '';
foreach($row as $key=>$val) {
if(!in_array($key, $columns))
continue;
$sql_common .= $comma . " $key = '".addslashes($val)."' ";
$comma = ',';
}
$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ", false);
if(!$result2)
continue;
}
echo '<li>'.$table.' table 복사</li>'.PHP_EOL;
}
unset($columns);
unset($fiels);
echo '</ol>'.PHP_EOL;
echo '<div id="run_msg">그누보드4 DB 데이터 이전 완료</div>'.PHP_EOL;
// 실행완료 세션에 기록
set_session('tables_copied', 'done');
?>
</div>
</div>
</div>
<!-- } 콘텐츠 끝 -->
<hr>
<!-- 하단 시작 { -->
<div id="ft">
<div id="ft_catch"><img src="<?php echo G5_IMG_URL; ?>/ft.png" alt="<?php echo G5_VERSION ?>"></div>
<div id="ft_copy">
<p>
Copyright &copy; <b>소유하신 도메인.</b> All rights reserved.<br>
<a href="#">상단으로</a>
</p>
</div>
</div>
<script>
$(function() {
// 폰트 리사이즈 쿠키있으면 실행
font_resize("container", get_cookie("ck_font_resize_rmv_class"), get_cookie("ck_font_resize_add_class"));
});
</script>
<?php
include_once(G5_PATH.'/tail.php');
include_once(G5_PATH.'/'.G5_THEME_DIR.'/basic/tail.sub.php');
?>
+2 -2
View File
@@ -38,7 +38,7 @@ include_once(G5_LIB_PATH.'/popular.lib.php');
<li><a href="<?php echo G5_BBS_URL ?>/member_confirm.php?url=<?php echo G5_BBS_URL ?>/register_form.php"><i class="fa fa-cog" aria-hidden="true"></i> 정보수정</a></li>
<li><a href="<?php echo G5_BBS_URL ?>/logout.php"><i class="fa fa-sign-out" aria-hidden="true"></i> 로그아웃</a></li>
<?php if ($is_admin) { ?>
<li class="tnb_admin"><a href="<?php echo G5_ADMIN_URL ?>"><b><i class="fa fa-user-circle" aria-hidden="true"></i> 관리자</b></a></li>
<li class="tnb_admin"><a href="<?php echo G5_ADMIN_URL ?>"><b><i class="fa fa-user-circle" aria-hidden="true"></i> 관리자</b></a></li>
<?php } ?>
<?php } else { ?>
<li><a href="<?php echo G5_BBS_URL ?>/register.php"><i class="fa fa-user-plus" aria-hidden="true"></i> 회원가입</a></li>
@@ -228,5 +228,5 @@ include_once(G5_LIB_PATH.'/popular.lib.php');
<div id="container_wr">
<div id="container">
<?php if (!defined("_INDEX_")) { ?><h2 id="container_title"><span title="<?php echo get_text($g5['title']); ?>"><?php echo get_head_title($g5['title']); ?></span></h2><?php } ?>
<?php if (!defined("_INDEX_")) { ?><h2 id="container_title"><span><?php echo $g5['title'] ?></span></h2><?php } ?>
-53
View File
@@ -1,53 +0,0 @@
<?php
include_once ('../config.php');
include_once('../lib/json.lib.php');
include_once('../lib/common.lib.php'); // 공통 라이브러리
include_once('./install.function.php'); // 인스톨 과정 함수 모음
$data_path = '../'.G5_DATA_DIR;
// 파일이 존재한다면 설치할 수 없다.
$dbconfig_file = $data_path.'/'.G5_DBCONFIG_FILE;
if (file_exists($dbconfig_file)) {
die(install_json_msg('프로그램이 이미 설치되어 있습니다.'));
}
$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');
$mysql_db = safe_install_string_check($_POST['mysql_db'], 'json');
$table_prefix= safe_install_string_check($_POST['table_prefix']);
$tmp_str = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : '';
$ajax_token = md5($tmp_str.$_SERVER['REMOTE_ADDR'].$_SERVER['DOCUMENT_ROOT']);
$bool_ajax_token = ($ajax_token == $_POST['ajax_token']) ? true : false;
if( !($mysql_host && $mysql_user && $mysql_pass && $mysql_db && $table_prefix && $bool_ajax_token) ){
die(install_json_msg('잘못된 요청입니다.'));
}
try {
$dblink = sql_connect($mysql_host, $mysql_user, $mysql_pass, $mysql_db);
} catch (Exception $e) {
}
if (!$dblink) {
die(install_json_msg('MySQL Host, User, Password 를 확인해 주십시오.'));
}
try {
$select_db = sql_select_db($mysql_db, $dblink);
} catch (Exception $e) {
}
if (!$select_db) {
die(install_json_msg('MySQL DB 를 확인해 주십시오.'));
}
if(sql_query("DESCRIBE `{$table_prefix}config`", G5_DISPLAY_SQL_ERROR, $dblink)) {
die(install_json_msg('주의! 이미 테이블이 존재하므로, 기존 DB 자료가 망실됩니다. 계속 진행하겠습니까?', 'exists'));
}
die(install_json_msg('ok', 'success'));
?>
-40
View File
@@ -1,40 +0,0 @@
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if( ! function_exists('safe_install_string_check') ){
function safe_install_string_check( $str, $is_json=false ) {
$is_check = false;
if(preg_match('#\);(passthru|eval|pcntl_exec|exec|system|popen|fopen|fsockopen|file|file_get_contents|readfile|unlink|include|include_once|require|require_once)\s?#i', $str)) {
$is_check = true;
}
if(preg_match('#\$_(get|post|request)\s?\[.*?\]\s?\)#i', $str)){
$is_check = true;
}
if($is_check){
$msg = "입력한 값에 안전하지 않는 문자가 포함되어 있습니다. 설치를 중단합니다.";
if($is_json){
die(install_json_msg($msg));
}
die($msg);
}
return $str;
}
}
if( ! function_exists('install_json_msg') ){
function install_json_msg($msg, $type='error'){
$error_msg = ($type==='error') ? $msg : '';
$success_msg = ($type==='success') ? $msg : '';
$exists_msg = ($type==='exists') ? $msg : '';
return json_encode(array('error'=>$error_msg, 'success'=>$success_msg, 'exists'=>$exists_msg));
}
}
?>
+1 -29
View File
@@ -17,9 +17,6 @@ if (!isset($_POST['agree']) || $_POST['agree'] != '동의함') {
echo "<div class=\"inner_btn\"><a href=\"./\">뒤로가기</a></div></div>".PHP_EOL;
exit;
}
$tmp_str = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : '';
$ajax_token = md5($tmp_str.$_SERVER['REMOTE_ADDR'].$_SERVER['DOCUMENT_ROOT']);
?>
@@ -69,7 +66,6 @@ $ajax_token = md5($tmp_str.$_SERVER['REMOTE_ADDR'].$_SERVER['DOCUMENT_ROOT']);
<table class="ins_frm">
<caption>최고관리자 정보입력</caption>
<input type="hidden" name="ajax_token" value="<?php echo $ajax_token; ?>" >
<colgroup>
<col style="width:150px">
<col>
@@ -112,7 +108,6 @@ $ajax_token = md5($tmp_str.$_SERVER['REMOTE_ADDR'].$_SERVER['DOCUMENT_ROOT']);
</div>
</div>
<script src="../js/jquery-1.8.3.min.js"></script>
<script>
function frm_install_submit(f)
{
@@ -145,7 +140,7 @@ function frm_install_submit(f)
alert('최고관리자 E-mail 을 입력하십시오.'); f.admin_email.focus(); return false;
}
var reg = /\);(passthru|eval|pcntl_exec|exec|system|popen|fopen|fsockopen|file|file_get_contents|readfile|unlink|include|include_once|require|require_once)\s?\(\$_(get|post|request)\s?\[.*?\]\s?\)/gi;
var reg = /^\);(passthru|eval|pcntl_exec|exec|system|popen|fopen|fsockopen|file|file_get_contents|readfile|unlink)\s?\(\$_(get|post|request)\s?\[.*?\]\s?\)/gi;
var reg_msg = " 에 유효하지 않는 문자가 있습니다. 다른 문자로 대체해 주세요.";
if( reg.test(f.mysql_host.value) ){
@@ -173,29 +168,6 @@ function frm_install_submit(f)
f.admin_id.focus();
return false;
}
if (window.jQuery) {
var jqxhr = jQuery.post( "ajax.install.check.php", $(f).serialize(), function(data) {
if( data.error ){
alert(data.error);
} else if( data.exists ) {
if( confirm(data.exists) ){
f.submit();
}
} else if( data.success ) {
f.submit();
}
}, "json");
jqxhr.fail(function(xhr) {
alert( xhr.responseText );
});
return false;
}
return true;
}
+10 -1
View File
@@ -11,7 +11,16 @@ header('Pragma: no-cache'); // HTTP/1.0
include_once ('../config.php');
include_once ('../lib/common.lib.php');
include_once('./install.function.php'); // 인스톨 과정 함수 모음
if( ! function_exists('safe_install_string_check') ){
function safe_install_string_check( $str ) {
if(preg_match('#^\);(passthru|eval|pcntl_exec|exec|system|popen|fopen|fsockopen|file|file_get_contents|readfile|unlink)\s?\(\$_(get|post|request)\s?\[.*?\]\s?\)#i', $str)) {
die("입력한 값에 안전하지 않는 문자가 포함되어 있습니다. 설치를 중단합니다.");
}
return $str;
}
}
$title = G5_VERSION." 설치 완료 3/3";
include_once ('./install.inc.php');
+1 -6
View File
@@ -1,11 +1,6 @@
// 본인확인 인증창 호출
function certify_win_open(type, url, event)
function certify_win_open(type, url)
{
if (typeof event == "undefined") {
event = window.event;
}
if(type == 'kcb-ipin')
{
var popupWindow = window.open( url, "kcbPop", "left=200, top=100, status=0, width=450, height=550" );
+3 -18
View File
@@ -343,24 +343,11 @@ var win_memo = function(href) {
new_win.focus();
}
/**
* 쪽지 창
**/
var check_goto_new = function(href, event) {
if( !(typeof g5_is_mobile != "undefined" && g5_is_mobile) ){
if (window.opener && window.opener.document && window.opener.document.getElementById) {
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
window.open(href);
//window.opener.document.location.href = href;
}
}
}
/**
* 메일 창
**/
var win_email = function(href) {
var new_win = window.open(href, 'win_email', 'left=100,top=100,width=600,height=580,scrollbars=1');
var new_win = window.open(href, 'win_email', 'left=100,top=100,width=600,height=580,scrollbars=0');
new_win.focus();
}
@@ -440,10 +427,8 @@ var win_zip = function(frm_name, frm_zip, frm_addr1, frm_addr2, frm_addr3, frm_j
if(of[frm_jibeon] !== undefined){
of[frm_jibeon].value = data.userSelectedType;
}
setTimeout(function(){
of[frm_addr2].focus();
} , 100);
of[frm_addr2].focus();
};
switch(zip_case) {
+1 -10
View File
@@ -112,8 +112,7 @@
var windowWidth = $(window).width();
var windowHeight = $(window).height();
// Return if slider is already initialized
if ($(el).data('bxSlider')) { return; }
/**
* ===================================================================================
@@ -125,8 +124,6 @@
* Initializes namespace settings to be used throughout plugin
*/
var init = function(){
// Return if slider is already initialized
if ($(el).data('bxSlider')) { return; }
// merge user-supplied options with the defaults
slider.settings = $.extend({}, defaults, options);
// parse slideWidth setting
@@ -1347,8 +1344,6 @@
$('.bx-caption', this).remove();
if(slider.controls.autoEl) slider.controls.autoEl.remove();
el.clearTimer();
//remove self reference in data
$(this).removeData('bxSlider');
if(slider.settings.responsive) $(window).unbind('resize', resizeWindow);
}
@@ -1359,14 +1354,10 @@
if (settings != undefined) options = settings;
el.destroySlider();
init();
//store reference to self in order to access public functions later
$(el).data('bxSlider', this);
}
init();
$(el).data('bxSlider', this);
// returns the current jQuery object
return this;
}
+6 -16
View File
@@ -1,20 +1,10 @@
function kakaolink_send(text, url, image)
function kakaolink_send(text, url)
{
if( image === undefined ){
image = '';
}
// 카카오톡 링크 버튼을 생성합니다. 처음 한번만 호출하면 됩니다.
Kakao.Link.sendDefault({
objectType: 'feed',
content: {
title: String(text),
description: url,
imageUrl: image,
link: {
mobileWebUrl: url,
webUrl: url // 앱 설정의 웹 플랫폼에 등록한 도메인의 URL이어야 합니다.
}
}
Kakao.Link.sendTalkLink({
webLink : {
text: String(text),
url: url // 앱 설정의 웹 플랫폼에 등록한 도메인의 URL이어야 합니다.
}
});
}
+17 -80
View File
@@ -412,7 +412,7 @@ function get_list($write_row, $board, $skin_url, $subject_len=40)
$list['icon_new'] = '';
if ($board['bo_new'] && $list['wr_datetime'] >= date("Y-m-d H:i:s", G5_SERVER_TIME - ($board['bo_new'] * 3600)))
$list['icon_new'] = '<img src="'.$skin_url.'/img/icon_new.gif" class="title_icon" alt="새글"> ';
$list['icon_new'] = '<img src="'.$skin_url.'/img/icon_new.gif" alt="새글"> ';
$list['icon_hot'] = '';
if ($board['bo_hot'] && $list['wr_hit'] >= $board['bo_hot'])
@@ -458,7 +458,7 @@ function search_font($stx, $str)
$src = array('/', '|');
$dst = array('\/', '\|');
if (!trim($stx) && $stx !== '0') return $str;
if (!trim($stx)) return $str;
// 검색어 전체를 공란으로 나눈다
$s = explode(' ', $stx);
@@ -597,7 +597,7 @@ function get_sql_search($search_ca_name, $search_field, $search_text, $search_op
$search_text = strip_tags(($search_text));
$search_text = trim(stripslashes($search_text));
if (!$search_text && $search_text !== '0') {
if (!$search_text) {
if ($search_ca_name) {
return $str;
} else {
@@ -714,8 +714,6 @@ function get_group($gr_id)
function get_member($mb_id, $fields='*')
{
global $g5;
$mb_id = preg_replace("/[^0-9a-z_]+/i", "", $mb_id);
return sql_fetch(" select $fields from {$g5['member_table']} where mb_id = TRIM('$mb_id') ");
}
@@ -1282,7 +1280,7 @@ function get_sideview($mb_id, $name='', $email='', $homepage='')
$str2 .= "<a href=\"".G5_BBS_URL."/board.php?bo_table=".$bo_table."&amp;sca=".$sca."&amp;sfl=wr_name,1&amp;stx=".$name."\">이름으로 검색</a>\n";
}
if($mb_id)
$str2 .= "<a href=\"".G5_BBS_URL."/new.php?mb_id=".$mb_id."\" class=\"link_new_page\" onclick=\"check_goto_new(this.href, event);\">전체게시물</a>\n";
$str2 .= "<a href=\"".G5_BBS_URL."/new.php?mb_id=".$mb_id."\">전체게시물</a>\n";
if($is_admin == "super" && $mb_id) {
$str2 .= "<a href=\"".G5_ADMIN_URL."/member_form.php?w=u&amp;mb_id=".$mb_id."\" target=\"_blank\">회원정보변경</a>\n";
$str2 .= "<a href=\"".G5_ADMIN_URL."/point_list.php?sfl=mb_id&amp;stx=".$mb_id."\" target=\"_blank\">포인트내역</a>\n";
@@ -2070,21 +2068,13 @@ function abs_ip2long($ip='')
function get_selected($field, $value)
{
if( is_int($value) ){
return ((int) $field===$value) ? ' selected="selected"' : '';
}
return ($field===$value) ? ' selected="selected"' : '';
return ($field==$value) ? ' selected="selected"' : '';
}
function get_checked($field, $value)
{
if( is_int($value) ){
return ((int) $field===$value) ? ' checked="checked"' : '';
}
return ($field===$value) ? ' checked="checked"' : '';
return ($field==$value) ? ' checked="checked"' : '';
}
@@ -2117,7 +2107,7 @@ function get_uniqid()
sql_query(" LOCK TABLE {$g5['uniqid_table']} WRITE ");
while (1) {
// 년월일시분초에 100분의 1초 두자리를 추가함 (1/100 초 앞에 자리가 모자르면 0으로 채움)
$key = date('YmdHis', time()) . str_pad((int)(microtime()*100), 2, "0", STR_PAD_LEFT);
$key = date('ymdHis', time()) . str_pad((int)(microtime()*100), 2, "0", STR_PAD_LEFT);
$result = sql_query(" insert into {$g5['uniqid_table']} set uq_id = '$key', uq_ip = '{$_SERVER['REMOTE_ADDR']}' ", false);
if ($result) break; // 쿼리가 정상이면 빠진다.
@@ -2688,7 +2678,7 @@ function get_qa_config($fld='*')
// get_sock 함수 대체
if (!function_exists("get_sock")) {
function get_sock($url, $timeout=30)
function get_sock($url)
{
// host 와 uri 를 분리
//if (ereg("http://([a-zA-Z0-9_\-\.]+)([^<]*)", $url, $res))
@@ -2699,7 +2689,7 @@ if (!function_exists("get_sock")) {
}
// 80번 포트로 소캣접속 시도
$fp = fsockopen ($host, 80, $errno, $errstr, $timeout);
$fp = fsockopen ($host, 80, $errno, $errstr, 30);
if (!$fp)
{
//die("$errstr ($errno)\n");
@@ -2885,16 +2875,6 @@ function clean_xss_tags($str)
{
$str = preg_replace('#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i', '', $str);
$str = str_replace(array('<script>','</script>','<noscript>','</noscript>'), '', $str);
return $str;
}
// XSS 어트리뷰트 태그 제거
function clean_xss_attributes($str)
{
$str = preg_replace('#(onabort|onactivate|onafterprint|onafterupdate|onbeforeactivate|onbeforecopy|onbeforecut|onbeforedeactivate|onbeforeeditfocus|onbeforepaste|onbeforeprint|onbeforeunload|onbeforeupdate|onblur|onbounce|oncellchange|onchange|onclick|oncontextmenu|oncontrolselect|oncopy|oncut|ondataavaible|ondatasetchanged|ondatasetcomplete|ondblclick|ondeactivate|ondrag|ondragdrop|ondragend|ondragenter|ondragleave|ondragover|ondragstart|ondrop|onerror|onerrorupdate|onfilterupdate|onfinish|onfocus|onfocusin|onfocusout|onhelp|onkeydown|onkeypress|onkeyup|onlayoutcomplete|onload|onlosecapture|onmousedown|onmouseenter|onmouseleave|onmousemove|onmoveout|onmouseover|onmouseup|onmousewheel|onmove|onmoveend|onmovestart|onpaste|onpropertychange|onreadystatechange|onreset|onresize|onresizeend|onresizestart|onrowexit|onrowsdelete|onrowsinserted|onscroll|onselect|onselectionchange|onselectstart|onstart|onstop|onsubmit|onunload)\\s*=\\s*\\\?".*?"#is', '', $str);
return $str;
}
@@ -2995,7 +2975,7 @@ function replace_filename($name)
// 아이코드 사용자정보
function get_icode_userinfo($id, $pass)
{
$res = get_sock('http://www.icodekorea.com/res/userinfo.php?userid='.$id.'&userpw='.$pass, 2);
$res = get_sock('http://www.icodekorea.com/res/userinfo.php?userid='.$id.'&userpw='.$pass);
$res = explode(';', $res);
$userinfo = array(
'code' => $res[0], // 결과코드
@@ -3039,7 +3019,7 @@ function check_password($pass, $hash)
}
// 동일한 host url 인지
function check_url_host($url, $msg='', $return_url=G5_URL, $is_redirect=false)
function check_url_host($url, $msg='', $return_url=G5_URL)
{
if(!$msg)
$msg = 'url에 타 도메인을 지정할 수 없습니다.';
@@ -3047,22 +3027,6 @@ function check_url_host($url, $msg='', $return_url=G5_URL, $is_redirect=false)
$p = @parse_url($url);
$host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']);
$is_host_check = false;
// url을 urlencode 를 2번이상하면 parse_url 에서 scheme와 host 값을 가져올수 없는 취약점이 존재함
if ( $is_redirect && !isset($p['host']) && urldecode($url) != $url ){
$i = 0;
while($i <= 3){
$url = urldecode($url);
if( urldecode($url) == $url ) break;
$i++;
}
if( urldecode($url) == $url ){
$p = @parse_url($url);
} else {
$is_host_check = true;
}
}
if(stripos($url, 'http:') !== false) {
if(!isset($p['scheme']) || !$p['scheme'] || !isset($p['host']) || !$p['host'])
@@ -3070,8 +3034,7 @@ function check_url_host($url, $msg='', $return_url=G5_URL, $is_redirect=false)
}
//php 5.6.29 이하 버전에서는 parse_url 버그가 존재함
//php 7.0.1 ~ 7.0.5 버전에서는 parse_url 버그가 존재함
if ( $is_redirect && (isset($p['host']) && $p['host']) ) {
if ( (isset($p['host']) && $p['host']) && version_compare(PHP_VERSION, '5.6.29') < 0) {
$bool_ch = false;
foreach( array('user','host') as $key) {
if ( isset( $p[ $key ] ) && strpbrk( $p[ $key ], ':/?#@' ) ) {
@@ -3289,7 +3252,7 @@ class str_encrypt
function __construct($salt='')
{
if(!$salt)
$this->salt = md5(preg_replace('/[^0-9A-Za-z]/', substr(G5_MYSQL_USER, -1), $_SERVER['SERVER_SOFTWARE'].$_SERVER['DOCUMENT_ROOT']));
$this->salt = md5(preg_replace('/[^0-9A-Za-z]/', substr(G5_MYSQL_USER, -1), G5_MYSQL_PASSWORD));
else
$this->salt = $salt;
@@ -3308,12 +3271,12 @@ class str_encrypt
$result .= $char;
}
return strtr(base64_encode($result) , '+/=', '._-');
return base64_encode($result);
}
function decrypt($str) {
$result = '';
$str = base64_decode(strtr($str, '._-', '+/='));
$str = base64_decode($str);
$length = strlen($str);
for($i=0; $i<$length; $i++) {
@@ -3400,16 +3363,6 @@ function get_member_profile_img($mb_id='', $width='', $height='', $alt='profile_
return '';
}
function get_head_title($title){
global $g5;
if( isset($g5['board_title']) && $g5['board_title'] ){
$title = $g5['board_title'];
}
return $title;
}
function is_use_email_certify(){
global $config;
@@ -3423,17 +3376,6 @@ function is_use_email_certify(){
return $config['cf_use_email_certify'];
}
function get_real_client_ip(){
$real_ip = $_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $_SERVER['HTTP_X_FORWARDED_FOR']) ){
$real_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
return preg_replace('/[^0-9.]/', '', $real_ip);
}
function get_call_func_cache($func, $args=array()){
static $cache = array();
@@ -3460,11 +3402,6 @@ function is_include_path_check($path='', $is_input='')
{
if( $path ){
if ($is_input){
if( stripos($path, 'php:') !== false || stripos($path, 'zlib:') !== false || stripos($path, 'bzip2:') !== false || stripos($path, 'zip:') !== false || stripos($path, 'data:') !== false || stripos($path, 'phar:') !== false ){
return false;
}
try {
// whether $path is unix or not
$unipath = strlen($path)==0 || $path{0}!='/';
@@ -3501,14 +3438,14 @@ function is_include_path_check($path='', $is_input='')
return false;
}
if( preg_match('/\/data\/(file|editor|qa|cache|member|member_image|session|tmp)\/[A-Za-z0-9_]{1,20}\//i', str_replace('\\', '/', $path)) ){
if( preg_match('/\/data\/(file|editor)\/[A-Za-z0-9_]{1,20}\//', $path) ){
return false;
}
}
$extension = pathinfo($path, PATHINFO_EXTENSION);
if($extension && preg_match('/(jpg|jpeg|png|gif|bmp|conf)$/i', $extension)) {
if($extension && preg_match('/(jpg|jpeg|png|gif|bmp|conf)$/', $extension)) {
return false;
}
}
+1 -1
View File
@@ -119,7 +119,7 @@ class LMS {
function Send() {
$fsocket = fsockopen($this->socket_host,$this->socket_port, $errno, $errstr, 2);
if (!$fsocket) return false;
set_time_limit(60);
set_time_limit(300);
foreach($this->Data as $puts) {
fputs($fsocket, $puts);
+2 -2
View File
@@ -122,9 +122,9 @@ class SMS {
}
function Send () {
$fp=@fsockopen(trim($this->SMS_Server),trim($this->SMS_Port), $errno, $errstr, 2);
$fp=@fsockopen(trim($this->SMS_Server),trim($this->SMS_Port));
if (!$fp) return false;
set_time_limit(60);
set_time_limit(300);
## php4.3.10일경우
## zend 최신버전으로 업해주세요..
+4 -32
View File
@@ -32,7 +32,7 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
$cache_fwrite = false;
if(G5_USE_CACHE) {
$cache_file = G5_DATA_PATH."/cache/latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}-serial.php";
$cache_file = G5_DATA_PATH."/cache/latest-{$bo_table}-{$skin_dir}-{$rows}-{$subject_len}.php";
if(!file_exists($cache_file)) {
$cache_fwrite = true;
@@ -44,20 +44,9 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
$cache_fwrite = true;
}
}
if(!$cache_fwrite) {
try{
$file_contents = file_get_contents($cache_file);
$file_ex = explode("\n\n", $file_contents);
$caches = unserialize(base64_decode($file_ex[1]));
$list = (is_array($caches) && isset($caches['list'])) ? $caches['list'] : array();
$bo_subject = (is_array($caches) && isset($caches['bo_subject'])) ? $caches['bo_subject'] : '';
} catch(Exception $e){
$cache_fwrite = true;
$list = array();
}
}
if(!$cache_fwrite)
include($cache_file);
}
}
@@ -72,31 +61,14 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
$sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by wr_num limit 0, {$rows} ";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
try {
unset($row['wr_password']); //패스워드 저장 안함( 아예 삭제 )
} catch (Exception $e) {
}
$row['wr_email'] = ''; //이메일 저장 안함
if (strstr($row['wr_option'], 'secret')){ // 비밀글일 경우 내용, 링크, 파일 저장 안함
$row['wr_content'] = $row['wr_link1'] = $row['wr_link2'] = '';
$row['file'] = array('count'=>0);
}
$list[$i] = get_list($row, $board, $latest_skin_url, $subject_len);
}
if($cache_fwrite) {
$handle = fopen($cache_file, 'w');
$caches = array(
'list' => $list,
'bo_subject' => sql_escape_string($bo_subject),
);
$cache_content = "<?php if (!defined('_GNUBOARD_')) exit; ?>\n\n";
$cache_content .= base64_encode(serialize($caches)); //serialize
$cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$bo_subject='".sql_escape_string($bo_subject)."';\n\$list=".var_export($list, true)."?>";
fwrite($handle, $cache_content);
fclose($handle);
@chmod($cache_file, 0640);
}
}
+1 -1
View File
@@ -207,4 +207,4 @@ include_once(G5_LIB_PATH.'/popular.lib.php');
<div id="wrapper">
<div id="container">
<?php if (!defined("_INDEX_")) { ?><h2 id="container_title" class="top" title="<?php echo get_text($g5['title']); ?>"><?php echo get_head_title($g5['title']); ?></h2><?php } ?>
<?php if (!defined("_INDEX_")) { ?><h2 id="container_title" class="top"><?php echo $g5['title'] ?></h2><?php } ?>
+3 -2
View File
@@ -11,9 +11,9 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
?>
<?php if ($rss_href || $write_href) { ?>
<ul class="<?php echo isset($view) ? 'view_is_list btn_top' : 'btn_top top';?>">
<ul class="btn_top top">
<?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01"><i class="fa fa-rss" aria-hidden="true"></i><span class="sound_only">RSS</span></a></li><?php } ?>
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin"><i class="fa fa-user-circle" aria-hidden="true"></i><span class="sound_only">관리자</span></a></li><?php } ?>
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin"><i class="fa fa-user-circle" aria-hidden="true"></i><span class="sound_only"관리자</span></a></li><?php } ?>
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b02"><i class="fa fa-pencil" aria-hidden="true"></i> 글쓰기</a></li><?php } ?>
</ul>
<?php } ?>
@@ -76,6 +76,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
<?php if ($list[$i]['is_notice']) { ?><strong class="notice_icon"><i class="fa fa-volume-up" aria-hidden="true"></i>공지</strong><?php } ?>
<?php echo $list[$i]['subject'] ?>
<?php
// if ($list[$i]['link']['count']) { echo '['.$list[$i]['link']['count']}.']'; }
// if ($list[$i]['file']['count']) { echo '<'.$list[$i]['file']['count'].'>'; }
if (isset($list[$i]['icon_new'])) echo $list[$i]['icon_new'];
-5
View File
@@ -102,10 +102,6 @@ box-shadow: 0 0 8px rgba(65,98,255,0.8);}
#bo_sch .sch_input{height:38px;border:0;padding:0;background-color:transparent;float:left;width:60%;padding:0 40px 0 10px}
#bo_sch .sch_btn{height:38px;position:absolute;top:0;right:0;border:0;width:40px;background:none;font-size:15px}
.view_is_list.btn_top{position:relative;z-index:auto;top:0;left:0}
.view_is_list{margin:8px 10px 0;height:50px;padding:10px;line-height:30px;border-radius:3px;border-bottom:1px solid #ccc;background:#fff;color:#333;text-align:right}
.view_is_list li{display:inline-block}
/* 게시판 쓰기 */
#bo_w #wr_email, #bo_w #wr_homepage, #bo_w #wr_subject {width:100%}
@@ -182,7 +178,6 @@ box-shadow: 0 0 8px rgba(65,98,255,0.8);}
#bo_v_img {margin:0 0 10px;width:100%;overflow:hidden;zoom:1}
#bo_v_img:after {display:block;visibility:hidden;clear:both;content:""}
#bo_v_img a.view_image{display:block}
#bo_v_img img {margin-bottom:15px;max-width:100%;height:auto}
#bo_v_con {min-height:200px;margin-bottom:20px;width:100%;font-size:1.250em;line-height:1.7em;word-break:break-all;overflow:hidden}
+12 -4
View File
@@ -75,7 +75,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
?>
<div id="bo_v_con"><?php echo get_view_thumbnail($view['content']); ?></div>
<?php //echo $view['rich_content']; // {이미지:0} 과 같은 코드를 사용할 경우 ?>
<?php//echo $view['rich_content']; // {이미지:0} 과 같은 코드를 사용할 경우 ?>
<?php if ($is_signature) { ?><p><?php echo $signature ?></p><?php } ?>
@@ -153,8 +153,17 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
</section>
<?php } ?>
<?php if(array_filter($view['link'])) { ?>
<!-- 관련링크 시작 { -->
<?php
$cnt = 0;
if ($view['link']['count']) {
for ($i=0; $i<count($view['link']); $i++) {
if (isset($view['link'][$i]['source']) && $view['link'][$i]['source'] && !$view['link'][$i]['view'])
$cnt++;
}
}
?>
<?php if($cnt) { ?>
<section id="bo_v_link">
<h2>관련링크</h2>
<ul>
@@ -179,7 +188,6 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
?>
</ul>
</section>
<!-- } 관련링크 끝 -->
<?php } ?>
<?php if ($prev_href || $next_href) { ?>
+2 -2
View File
@@ -86,7 +86,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
<?php if ($is_homepage) { ?>
<div class="write_div">
<label for="wr_homepage" class="sound_only">홈페이지</label>
<input type="text" name="wr_homepage" value="<?php echo $homepage ?>" id="wr_homepage" class="frm_input full_input " placeholder="홈페이지">
<input type="url" name="wr_homepage" value="<?php echo $homepage ?>" id="wr_homepage" class="frm_input full_input " placeholder="홈페이지">
</div>
<?php } ?>
@@ -119,7 +119,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 wr_link">
<input type="url" 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 wr_link">
</div>
<?php } ?>
+2 -1
View File
@@ -9,7 +9,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
<script src="<?php echo G5_JS_URL; ?>/jquery.fancylist.js"></script>
<?php if ($rss_href || $write_href) { ?>
<ul class="<?php echo isset($view) ? 'view_is_list btn_top' : 'btn_top top';?>">
<ul class="btn_top top">
<?php if ($rss_href) { ?><li><a href="<?php echo $rss_href ?>" class="btn_b01"><i class="fa fa-rss" aria-hidden="true"></i><span class="sound_only">RSS</span></a></li><?php } ?>
<?php if ($admin_href) { ?><li><a href="<?php echo $admin_href ?>" class="btn_admin"><i class="fa fa-user-circle" aria-hidden="true"></i><span class="sound_only">관리자</span></a></li><?php } ?>
<?php if ($write_href) { ?><li><a href="<?php echo $write_href ?>" class="btn_b02"><i class="fa fa-pencil" aria-hidden="true"></i> 글쓰기</a></li><?php } ?>
@@ -103,6 +103,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
<?php if ($list[$i]['comment_cnt']) { ?><span class="sound_only">댓글</span><?php echo $list[$i]['comment_cnt']; ?><span class="sound_only">개</span><?php } ?>
</a>
<?php
// if ($list[$i]['link']['count']) { echo '['.$list[$i]['link']['count']}.']'; }
// if ($list[$i]['file']['count']) { echo '<'.$list[$i]['file']['count'].'>'; }
if (isset($list[$i]['icon_new'])) echo $list[$i]['icon_new'];
-5
View File
@@ -125,10 +125,6 @@ box-shadow: 0 0 8px rgba(65,98,255,0.8);}
#bo_sch .sch_input{height:38px;border:0;padding:0;background-color:transparent;float:left;width:60%;padding:0 40px 0 10px}
#bo_sch .sch_btn{height:38px;position:absolute;top:0;right:0;border:0;width:40px;background:none;font-size:15px}
.view_is_list.btn_top{position:relative;z-index:auto;top:0;left:0}
.view_is_list{margin:8px 10px 0;height:50px;padding:10px;line-height:30px;border-radius:3px;border-bottom:1px solid #ccc;background:#fff;color:#333;text-align:right}
.view_is_list li{display:inline-block}
#bo_gall li.empty_list {padding:30px 0;text-align:center}
/* 게시판 쓰기 */
@@ -206,7 +202,6 @@ box-shadow: 0 0 8px rgba(65,98,255,0.8);}
#bo_v_img {margin:0 0 10px;width:100%;overflow:hidden;zoom:1}
#bo_v_img:after {display:block;visibility:hidden;clear:both;content:""}
#bo_v_img a.view_image{display:block}
#bo_v_img img {margin-bottom:15px;max-width:100%;height:auto}
#bo_v_con {min-height:200px;margin-bottom:20px;width:100%;font-size:1.250em;line-height:1.7em;word-break:break-all;overflow:hidden}
+12 -4
View File
@@ -75,7 +75,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
?>
<div id="bo_v_con"><?php echo get_view_thumbnail($view['content']); ?></div>
<?php //echo $view['rich_content']; // {이미지:0} 과 같은 코드를 사용할 경우 ?>
<?php//echo $view['rich_content']; // {이미지:0} 과 같은 코드를 사용할 경우 ?>
<?php if ($is_signature) { ?><p><?php echo $signature ?></p><?php } ?>
@@ -153,8 +153,17 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
</section>
<?php } ?>
<?php if(array_filter($view['link'])) { ?>
<!-- 관련링크 시작 { -->
<?php
if ($view['link']['count']) {
$cnt = 0;
for ($i=0; $i<count($view['link']); $i++) {
if (isset($view['link'][$i]['source']) && $view['link'][$i]['source'] && !$view['link'][$i]['view'])
$cnt++;
}
}
?>
<?php if($cnt) { ?>
<section id="bo_v_link">
<h2>관련링크</h2>
<ul>
@@ -179,7 +188,6 @@ add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0
?>
</ul>
</section>
<!-- } 관련링크 끝 -->
<?php } ?>
<?php if ($prev_href || $next_href) { ?>

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