Compare commits

...
101 Commits
Author SHA1 Message Date
thisgun b01adc51c7 버전 5.5.8.2.8 수정 2023-03-23 12:54:34 +09:00
thisgun bfdc48b021 NHN_KCP 애플페이 추가 2023-03-23 12:52:40 +09:00
thisgun 10b3a9c841 Merge branch 'master' of github.com:gnuboard/gnuboard5 2023-03-23 12:25:33 +09:00
thisgunandGitHub 3f27a5e32d Merge pull request #223 from kkigomi/feature/rewrite
rewrite 룰 제안에 Hook 추가
2023-03-23 12:18:59 +09:00
thisgun a904c5c634 Object cache의 데이터를 삭제하지 못하는 버그 수정 2023-03-23 12:00:05 +09:00
thisgun d603f2d5b3 undefined error 경고문에 따른 return_url변수 초기화 2023-03-23 11:19:29 +09:00
thisgun 275f7e5d8a PHP8버전대에서 경고문 나오는 FAQ Undefined variable 수정 2023-03-23 11:10:28 +09:00
thisgun 2595a7a45d 모바일 위시리스트 상품 URL 코드 수정 2023-03-21 19:07:44 +09:00
thisgun cb346b08c1 쇼핑몰 상품 주문시 it_name 에 태그가 포함되어있는 경우 발생되는 오류 수정 2023-03-21 19:00:13 +09:00
kkigomiandGitHub 3db2dc8be3 Merge branch 'gnuboard:master' into feature/rewrite 2023-01-25 19:32:47 +09:00
kkigomi b3451f1cc2 rewrite 설정 코드 보기에서 기존 hook 보다 앞선 출력 위치에 hook 추가
기존 rule 때문에 hook으로 추가해도 접근 차단등의 룰을 적용하지 못하는 문제를 해결하기 위함
- add_nginx_conf_pre_rules
- add_mod_rewrite_pre_rules
2023-01-25 16:58:00 +09:00
kkigomi b557483e1d 코드 포맷. PSR-12 2023-01-25 16:53:10 +09:00
thisgun d28be44108 버전 5.5.8.2.7 수정 2023-01-25 16:52:29 +09:00
thisgun f61d6cc09a SMS관리 휴대폰관리 페이지 PHP특정버전에서 오류나는 문제 수정 2023-01-25 12:30:13 +09:00
thisgun 6fa0f0e704 정렬 기능에 짧은 주소 적용 오류를 다시 수정 2023-01-25 11:06:07 +09:00
thisgun 66039a4b37 PHP8 버전에서 경고문이 나오는 코드 수정 2023-01-20 11:17:50 +09:00
thisgun aca4733b12 쇼핑몰 장바구니에서 재고 이상 주문할수 있는 오류 수정 2023-01-20 11:17:20 +09:00
thisgun 85b97f4b29 버전 5.5.8.2.6 수정 2023-01-13 11:06:48 +09:00
thisgun 724a4e4bf6 [KVE-2023-0046] 그누보드5(gnuboard5) SQL Injection 취약점 2023-01-13 11:00:00 +09:00
thisgun 9cf8804611 Merge branch 'master' of github.com:gnuboard/g5-update 2023-01-12 10:43:41 +09:00
thisgun 8f3893bb43 중복코드 삭제 및 경고문이 나오는 코드 수정 2023-01-12 10:43:25 +09:00
kir rio 7617aba611 cheditor this.URI 추가 2023-01-11 12:06:25 +09:00
kir rio d99641d122 cheditor 5.1.9.4 버전 업데이트 2023-01-11 10:21:44 +09:00
thisgun 7516424989 Merge branch 'master' of github.com:gnuboard/gnuboard5 2023-01-09 16:06:27 +09:00
thisgunandGitHub 1cb12d9f2c Merge pull request #215 from kkigomi/feature/sql_query_fix
#212 PR에서 DB 커넥션 지정 오류 수정 & sql_query_after 이벤트에 누락된 $source 파라메터 추가
2023-01-09 16:00:52 +09:00
thisgunandGitHub dbcb6a2cb6 Merge pull request #218 from kkigomi/feature/sideview
회원 sideview 메뉴에 Replace Hook 추가
2023-01-09 16:00:38 +09:00
thisgunandGitHub 18c42a648e Merge pull request #219 from kkigomi/feature/goto_url
goto_url 함수에 Event Hook 추가
2023-01-09 16:00:06 +09:00
thisgunandGitHub f5e2252997 Merge pull request #220 from kkigomi/feature/html_process_buffer
html_process->run()에 Replace Hook 추가
2023-01-09 15:59:44 +09:00
thisgun 6fd339174e 내용관리 hook 코드 추가 2023-01-09 15:33:03 +09:00
kkigomi 1891b5eb38 회원 sideview 메뉴에 Replace Hook 추가 2023-01-08 03:35:26 +09:00
kkigomi 3fcc1f2d5f html_process->run()에 Replace Hook 추가 2023-01-07 01:32:14 +09:00
kkigomi 4958cc9e35 goto_url 함수에 Event Hook 추가 2023-01-07 01:31:05 +09:00
thisgun 1750e957d2 모바일 상품 페이지 오타 수정 2023-01-03 15:16:33 +09:00
thisgun abfeee5e92 1:1문의 답변 파일첨부 기능 추가 2023-01-03 14:53:08 +09:00
thisgun c3272f9170 게시판, 1:1문의, 쇼핑몰상품 상단내용 하단내용에 hook 적용 2023-01-02 17:58:22 +09:00
thisgun df176c6ad9 NHN_KCP 본인인증 모바일에서 새창열기 방식으로 수정 2022-12-20 17:41:22 +09:00
thisgun 22bfc5e9bb 모바일에서 패스워드 찾기 본인인증시 NHN_KCP 본인인증 스크립트 오류 수정 2022-12-19 14:05:33 +09:00
thisgun 4e0cd0d911 게시판 정렬 기능에 짧은주소 적용 2022-12-19 11:18:28 +09:00
thisgun 25091a201b PHP8 버전에서 경고문이 나올수 있는 코드 수정 2022-12-19 11:13:08 +09:00
kkigomi 3706ef99d3 #212 PR에서 DB 커넥션 지정 오류 수정 & sql_query_after 이벤트에 누락된 $source 파라메터 추가 2022-12-10 17:12:22 +09:00
thisgun 69a4998fce 버전 5.5.8.2.5 수정 2022-12-08 16:19:16 +09:00
thisgun 513976b5a2 [KVE-2022-2037] Gnuboard5 관리자페이지 내 Stored XSS 취약점 수정 2022-12-08 16:12:48 +09:00
thisgun 97a8352117 [KVE-2022-2036] Gnuboard5 관리자페이지 내 Stored XSS 취약점 수정 2022-12-01 15:22:48 +09:00
thisgun 21dc36199f Merge branch 'master' of github.com:gnuboard/gnuboard5 2022-12-01 10:27:52 +09:00
thisgunandGitHub 0a18368759 Merge pull request #212 from kkigomi/feature/sql_query
debugbar 쿼리 오류 표시 추가 및 G5_COLLECT_QUERY 설정 추가
2022-11-28 09:43:01 +09:00
kkigomi 6d9db83789 debugbar 쿼리 오류 표시 추가 및 G5_COLLECT_QUERY 설정 추가
- 210 이슈에서 제안했던 개선안
- debugbar에 오류 등으로 실패한 쿼리가 나오지 않는 문제 수정
- 실패한 쿼리에 오류 메시지 출력
- 쿼리가 실행된 파일, 라인 함수 표시
- G5_COLLECT_QUERY 상수 설정 추가로 디버그 모드(G5_DEBUG)를 켜지 않아도 서드파티 플러그인에서 쿼리 목록을 수집할 수 있도록 개선
2022-11-28 07:20:30 +09:00
thisgun 3e53cd8ff6 회원 탈퇴파일 오타 수정 및 이벤트 추가 #209 2022-11-22 19:36:35 +09:00
thisgun 816a32d5c9 set_cookie 함수의 httponly 인자의 기본값을 true로 수정 #208 2022-11-22 19:27:13 +09:00
thisgun 529b8a1004 html_process 에서 title link 태그가 없을경우 css 파일을 로드 못하는 문제 수정 #207 2022-11-22 17:25:10 +09:00
thisgun 62d0bf5c4e html_process 클래스 싱글톤 적용 #206 2022-11-22 16:29:43 +09:00
thisgun 4c6b833f73 새로운 인증 수단을 위한 패스워드 확인 없는 로그인 처리 지원 #205 2022-11-22 15:08:22 +09:00
thisgun 21532eb9bf Merge branch 'master' of github.com:gnuboard/g5-update into next_55825 2022-11-22 11:56:29 +09:00
kjh cd50af93fd 버전 5.5.8.2.4 수정 2022-11-22 11:30:07 +09:00
thisgun 589b7f4e39 테마설정에서 이미지가 영역을 벗어나는 문제 수정#204 2022-11-21 14:07:06 +09:00
thisgun 9c8f7128f2 css 코드중 오타 수정 2022-11-21 11:54:52 +09:00
thisgun a93008d392 set_http 함수 코드 수정 2022-11-21 11:47:32 +09:00
thisgun d3561623aa 휴대폰번호 입력 필수 입력 오류 수정 2022-11-21 11:41:18 +09:00
thisgun 311e879563 [KVE-2022-1984]관리자 개인결제 Stored XSS 취약점 수정 2022-11-21 10:35:49 +09:00
thisgun 9932b99a51 KG이니시스 가상계좌 노티 전송 IP 추가 2022-10-21 10:04:07 +09:00
thisgun 5c9ed36bf2 kakao cdn에 async 속성 추가 2022-10-17 11:56:41 +09:00
thisgun dbc8e1676a 버전 5.5.8.2.3 수정 2022-10-17 10:59:59 +09:00
thisgun 749345e502 Merge branch 'master' of github.com:gnuboard/g5-update 2022-10-17 10:57:35 +09:00
thisgun 7c8a21ecc0 카카오 우편번호 서비스 url 수정 및 속성에 async 추가 2022-10-17 10:57:00 +09:00
KimTom89andGitHub 8751ab122a Merge pull request #10 from gnuboard/G5-154/search-keyword-trim
[fix] 사이트 내 전체검색 > 검색어 양 끝의 공백 제거
2022-10-05 12:20:50 +09:00
kjh 0f3e6125b5 [fix] 사이트 내 전체검색 > 검색어 양 끝의 공백 제거 2022-10-05 11:50:08 +09:00
kjh a21d02f4c5 버전 5.5.8.2.2 수정 2022-10-04 15:14:35 +09:00
thisgun 2f9fb355e3 [KVE-2022-0992] 취약점 다시 재수정 2022-09-27 17:15:46 +09:00
thisgun 8074bce274 Merge branch 'master' of github.com:gnuboard/g5-update 2022-09-27 10:13:35 +09:00
thisgun 85dbbe946a 비번찾기 후 빈 페이지가 나오는 문제 수정 2022-09-27 10:12:18 +09:00
kjh 1f2e79b188 Merge branch 'master' of github.com:gnuboard/g5-update 2022-09-16 16:59:50 +09:00
thisgun 27434107e8 [KVE-2022-0992] 그누보드5 스크립트 실행 취약점 수정 2022-09-15 11:30:10 +09:00
thisgun f1a303e445 버전 5.5.8.2.1 수정 2022-09-13 10:38:05 +09:00
thisgun ba062ca5b6 [KVE-2022-0981] 그누보드 Reflected XSS 취약점 2022-09-01 16:08:08 +09:00
thisgun 34774f0fc3 Merge branch 'master' of github.com:gnuboard/gnuboard5 2022-09-01 15:15:00 +09:00
thisgunandGitHub 26b22ac9ca Merge pull request #199 from 39hn/fix/delivery-company-url
fix: 택배사 배송조회 주소 수정
2022-09-01 15:10:03 +09:00
thisgunandGitHub 9e4a8a95b0 Merge pull request #201 from KimTom89/fix/samesite-condition
Fix gnuboard/gnuboard5#200 HTTP_X_FORWARDED_PROTO 조건 추가
2022-09-01 15:07:29 +09:00
thisgun 1bca642b33 모바일 쿠폰적용 후 취소 오류 수정 2022-09-01 15:05:41 +09:00
thisgun 3a59bca369 관리자 회원 수정에서 관리자는 탈퇴일자 또는 접근차단일자를 적용못하게 수정 2022-08-25 10:29:11 +09:00
thisgun 5ad2307175 메일보내기 메일주소를 도메인과 동일하게 권장하는 문구 추가 2022-08-25 10:10:29 +09:00
kjh 25b3d8f6ed Fix gnuboard/gnuboard5#200 HTTP_X_FORWARDED_PROTO 조건 추가 2022-08-22 15:57:20 +09:00
thisgun 0d02afd712 장바구니 레이어 z-index 속성 수정 2022-08-19 09:55:22 +09:00
39hn 78d5dce761 fix: 택배사 배송조회 주소 수정
대신택배, 우체국, 한진택배, CVSnet편의점택배, 건영택배 주소 수정
2022-08-10 13:05:17 +09:00
kjh 45d5404520 Merge branch 'master' of github.com:gnuboard/g5-update 2022-08-05 14:50:01 +09:00
thisgun 1e6710a55b 투표에 사용, 미사용 기능 추가 (크레이티브님,210910) merge 2022-07-28 11:51:33 +09:00
thisgun 463ca06a21 버전 5.5.8.2 수정 2022-07-26 14:03:46 +09:00
thisgun 71f58f3108 KVE-2021-1116 그누보드 XSS 취약점 수정 2022-07-26 13:38:20 +09:00
thisgun a6e302ff84 KCAPTCHA php5.3 버전 이하에서 나는 오류 수정 2022-07-26 11:35:33 +09:00
thisgun 0c275d0907 본인인증 업데이트시 hook 이벤트 추가 2022-07-25 10:34:51 +09:00
thisgun fa7d0bc717 로그인시 쓰기권한 fclose전에 is_resource로 검사 2022-07-25 10:30:28 +09:00
thisgun 95492a5cd8 G5-82 <사용하지 않는 구글플러스 관련 코드 삭제> 2022-07-11 11:02:46 +09:00
thisgun 58dc48d3ea 영카트 상품리스트 sort 키에 it_name 추가 2022-07-11 10:32:49 +09:00
thisgun 281bb5427c 영카트 상품리스트 sort 키에 it_name 추가 2022-07-07 10:04:40 +09:00
thisgunandGitHub 0577882c6c Merge pull request #185 from seeoya/master
프론트 버그 신고 내역 처리
2022-07-04 17:37:40 +09:00
thisgun be758d57a5 버전 5.5.8.1.2 수정 2022-07-01 09:56:11 +09:00
thisgun 3cee6ede91 토큰 오류로 상품복사가 안되는 오류 수정 2022-07-01 09:55:11 +09:00
thisgun 5d86287069 영카트 주문내역에서 기타선택->반품,품절 검색이 안되는 오류 수정 2022-06-28 09:52:12 +09:00
seeoya c1a45a1bec G5-137 모바일 쇼핑몰 장바구니 닫힘 태그 누락 (eyoom님, 220621) 2022-06-21 18:42:06 +09:00
Hailey KimandGitHub 444c6d88c2 Merge branch 'gnuboard:master' into master 2022-06-21 18:06:23 +09:00
수영andGitHub 958b9342b5 Merge branch 'gnuboard:master' into master 2022-06-07 17:24:23 +09:00
seeoya adc8e94774 G5-88 관리자 : 미사용 CSS 제거 (묵혼님, 220503) 2022-05-03 17:29:20 +09:00
seeoya 26857a8d50 G5-87 쇼핑몰 : KCP 결제창 표시될 때 화면이 스크롤되지 않도록 수정 (HSCOMM님, 220503) 2022-05-03 16:12:34 +09:00
159 changed files with 1354 additions and 652 deletions
+16 -2
View File
@@ -421,6 +421,16 @@ function get_sanitize_input($s, $is_html = false)
return $s;
}
function domain_mail_host($is_at=true){
list($domain_host,) = explode(':', $_SERVER['HTTP_HOST']);
if ('www.' === substr($domain_host, 0, 4)) {
$domain_host = substr($domain_host, 4);
}
return $is_at ? '@'.$domain_host : $domain_host;
}
function check_log_folder($log_path, $is_delete = true)
{
@@ -675,5 +685,9 @@ if (isset($_REQUEST) && $_REQUEST) {
}
}
// 관리자에서는 추가 스크립트는 사용하지 않는다.
//$config['cf_add_script'] = '';
// 관리자에서는 추가 스크립트와 추가 매타태그, 방문자분석 스크립트가 실행되지 않게 빈값으로 합니다.
if (run_replace('safe_admin_add_script_boolean', false) === false) {
$config['cf_analytics'] = '';
$config['cf_add_script'] = '';
$config['cf_add_meta'] = '';
}
+5 -4
View File
@@ -914,7 +914,7 @@ $pg_anchor = '<ul class="anchor">
<tr>
<th scope="row"><label for="bo_include_head">상단 파일 경로</label></th>
<td>
<input type="text" name="bo_include_head" value="<?php echo $board['bo_include_head'] ?>" id="bo_include_head" class="frm_input" size="50">
<input type="text" name="bo_include_head" value="<?php echo get_sanitize_input($board['bo_include_head']); ?>" id="bo_include_head" class="frm_input" size="50">
</td>
<td class="td_grpset">
<input type="checkbox" name="chk_grp_include_head" value="1" id="chk_grp_include_head">
@@ -926,7 +926,7 @@ $pg_anchor = '<ul class="anchor">
<tr>
<th scope="row"><label for="bo_include_tail">하단 파일 경로</label></th>
<td>
<input type="text" name="bo_include_tail" value="<?php echo $board['bo_include_tail'] ?>" id="bo_include_tail" class="frm_input" size="50">
<input type="text" name="bo_include_tail" value="<?php echo get_sanitize_input($board['bo_include_tail']); ?>" id="bo_include_tail" class="frm_input" size="50">
</td>
<td class="td_grpset">
<input type="checkbox" name="chk_grp_include_tail" value="1" id="chk_grp_include_tail">
@@ -1423,9 +1423,10 @@ function use_captcha_check(){
});
}
var bo_include_head = jQuery.trim(jQuery("#bo_include_head").val()),
bo_include_tail = jQuery.trim(jQuery("#bo_include_tail").val());
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());
+10 -5
View File
@@ -8,6 +8,8 @@ if ($is_admin != 'super') {
alert('최고관리자만 접근 가능합니다.');
}
$copy_config = get_config(true);
if (!isset($config['cf_add_script'])) {
sql_query(
" ALTER TABLE `{$g5['config_table']}`
@@ -475,6 +477,9 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
<td colspan="3">
<?php echo help('관리자가 보내고 받는 용도로 사용하는 메일 주소를 입력합니다. (회원가입, 인증메일, 테스트, 회원메일발송 등에서 사용)') ?>
<input type="text" name="cf_admin_email" value="<?php echo get_sanitize_input($config['cf_admin_email']); ?>" id="cf_admin_email" required class="required email frm_input" size="40">
<?php if (function_exists('domain_mail_host') && $config['cf_admin_email'] && stripos($config['cf_admin_email'], domain_mail_host()) === false) { ?>
<?php echo help('외부메일설정이나 기타 설정을 하지 않았다면, 도메인과 다른 헤더로 여겨 스팸이나 차단될 가능성이 있습니다.<br>name'.domain_mail_host().' 과 같은 도메인 형식으로 설정할것을 권장합니다.') ?>
<?php } ?>
</td>
</tr>
<tr>
@@ -693,15 +698,15 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
<tr>
<th scope="row"><label for="cf_analytics">방문자분석 스크립트</label></th>
<td colspan="3">
<?php echo help('방문자분석 스크립트 코드를 입력합니다. 예) 구글 애널리틱스'); ?>
<textarea name="cf_analytics" id="cf_analytics"><?php echo get_text($config['cf_analytics']); ?></textarea>
<?php echo help('방문자분석 스크립트 코드를 입력합니다. 예) 구글 애널리틱스<br>관리자 페이지에서는 이 코드를 사용하지 않습니다.'); ?>
<textarea name="cf_analytics" id="cf_analytics"><?php echo get_text($copy_config['cf_analytics']); ?></textarea>
</td>
</tr>
<tr>
<th scope="row"><label for="cf_add_meta">추가 메타태그</label></th>
<td colspan="3">
<?php echo help('추가로 사용하실 meta 태그를 입력합니다.'); ?>
<textarea name="cf_add_meta" id="cf_add_meta"><?php echo get_text($config['cf_add_meta']); ?></textarea>
<?php echo help('추가로 사용하실 meta 태그를 입력합니다.<br>관리자 페이지에서는 이 코드를 사용하지 않습니다.'); ?>
<textarea name="cf_add_meta" id="cf_add_meta"><?php echo get_text($copy_config['cf_add_meta']); ?></textarea>
</td>
</tr>
<tr>
@@ -1387,7 +1392,7 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
<th scope="row"><label for="cf_add_script">추가 script, css</label></th>
<td>
<?php echo help('HTML의 &lt;/HEAD&gt; 태그위로 추가될 JavaScript와 css 코드를 설정합니다.<br>관리자 페이지에서는 이 코드를 사용하지 않습니다.') ?>
<textarea name="cf_add_script" id="cf_add_script"><?php echo get_text($config['cf_add_script']); ?></textarea>
<textarea name="cf_add_script" id="cf_add_script"><?php echo get_text($copy_config['cf_add_script']); ?></textarea>
</td>
</tr>
</tbody>
+2 -2
View File
@@ -137,14 +137,14 @@ require_once G5_ADMIN_PATH . '/admin.head.php';
<th scope="row"><label for="co_include_head">상단 파일 경로</label></th>
<td>
<?php echo help("설정값이 없으면 기본 상단 파일을 사용합니다."); ?>
<input type="text" name="co_include_head" value="<?php echo $co['co_include_head']; ?>" id="co_include_head" class="frm_input" size="60">
<input type="text" name="co_include_head" value="<?php echo get_sanitize_input($co['co_include_head']); ?>" id="co_include_head" class="frm_input" size="60">
</td>
</tr>
<tr>
<th scope="row"><label for="co_include_tail">하단 파일 경로</label></th>
<td>
<?php echo help("설정값이 없으면 기본 하단 파일을 사용합니다."); ?>
<input type="text" name="co_include_tail" value="<?php echo $co['co_include_tail']; ?>" id="co_include_tail" class="frm_input" size="60">
<input type="text" name="co_include_tail" value="<?php echo get_sanitize_input($co['co_include_tail']); ?>" id="co_include_tail" class="frm_input" size="60">
</td>
</tr>
<tr id="admin_captcha_box" style="display:none;">
+2 -15
View File
@@ -447,6 +447,7 @@ tfoot th {}
.td_delino {width:130px}
.td_device {width:70px;text-align:center}
.td_etc {width:80px;text-align:center}
.td_use {width:80px;text-align:center}
.td_extra label {display:inline-block;width:100px}
.td_extra input {margin-right:5px;width:130px}
.td_grid {width:60px;text-align:center}
@@ -876,20 +877,6 @@ strong.sodr_nonpay {display:block;padding:5px 0;text-align:right}
.sbn_img {text-align:center}
.sbn_image {display:none;margin:0 0 10px;text-align:left}
/* SMS문자전송 */
#sms_send {padding-bottom:100px;zoom:1}
#sms_send:after {display:block;visibility:hidden;clear:both;content:""}
#sms_frm {float:left;width:650px}
#sms_frm table {margin:0 0 30px}
#sms_frm textarea {height:70px}
#sms_sm {position:relative;float:left;width:229px;height:418px;background:url('../shop_admin/img/mobilebg.jpg') no-repeat}
#sms_sm_text {position:absolute;top:75px;left:27px;width:180px;color:#fff;font-size:2em;word-break:break-all}
#sms_sm p {position:absolute;bottom:-70px;left:0;font-size:0.95em;letter-spacing:-0.1em}
#sms_send .local_desc01 {min-width:320px}
/* 가격비교사이트 */
#anc_pricecompare_info li {margin:5px 0 5px -1px}
@@ -1075,7 +1062,7 @@ box-shadow: 1px 2px 5px rgba(150,150,150,0.5);z-index:1000}
#theme_detail:after{display:block;visibility:hidden;clear:both;content:""}
#theme_detail h2{font-size:1.25em;background:#fff;padding:0 15px;line-height:40px;border-bottom:1px solid #d8d8d8;margin:0}
.theme_dt_img{float:left;padding:20px}
.theme_dt_img img{border:1px solid #aaa;}
.theme_dt_img img{border:1px solid #aaa;max-width:600px;max-height:460px}
.theme_dt_if{float:left;width:235px;padding:20px 0}
.theme_dt_if table{width:100%;border-collapse:collapse;margin:15px 0 0 ;font-size:0.92em}
.theme_dt_if table th{padding:5px;background:#fff;border-bottom:1px solid #f3f3f3;vertical-align:top;color:#3f51b5}
+1 -1
View File
@@ -121,7 +121,7 @@ require_once './admin.head.php';
<?php } ?>
</tbody>
</table>
<textarea name="ma_list" style="display:none"><?php echo $ma_list ?></textarea>
<textarea name="ma_list" style="display:none"><?php echo html_purifier($ma_list); ?></textarea>
</div>
<div class="btn_confirm01 btn_confirm">
+3 -3
View File
@@ -380,15 +380,15 @@ add_javascript(G5_POSTCODE_JS, 0); //다음 주소 js
</tr>
<tr>
<th scope="row"><label for="mb_signature">서명</label></th>
<td colspan="3"><textarea name="mb_signature" id="mb_signature"><?php echo $mb['mb_signature'] ?></textarea></td>
<td colspan="3"><textarea name="mb_signature" id="mb_signature"><?php echo html_purifier($mb['mb_signature']); ?></textarea></td>
</tr>
<tr>
<th scope="row"><label for="mb_profile">자기 소개</label></th>
<td colspan="3"><textarea name="mb_profile" id="mb_profile"><?php echo $mb['mb_profile'] ?></textarea></td>
<td colspan="3"><textarea name="mb_profile" id="mb_profile"><?php echo html_purifier($mb['mb_profile']); ?></textarea></td>
</tr>
<tr>
<th scope="row"><label for="mb_memo">메모</label></th>
<td colspan="3"><textarea name="mb_memo" id="mb_memo"><?php echo $mb['mb_memo'] ?></textarea></td>
<td colspan="3"><textarea name="mb_memo" id="mb_memo"><?php echo html_purifier($mb['mb_memo']); ?></textarea></td>
</tr>
<tr>
<th scope="row"><label for="mb_cert_history">본인인증 내역</label></th>
+7 -1
View File
@@ -158,7 +158,13 @@ if ($w == '') {
}
if ($mb_id === $member['mb_id'] && $_POST['mb_level'] != $mb['mb_level']) {
alert($mb['mb_id'] . ' : 로그인 중인 관리자 레벨은 수정 할 수 없습니다.');
alert($mb['mb_id'] . ' : 로그인 중인 관리자 레벨은 수정할 수 없습니다.');
}
if ($posts['mb_leave_date'] || $posts['mb_intercept_date']){
if ($member['mb_id'] === $mb['mb_id'] || is_admin($mb['mb_id']) === 'super'){
alert('해당 관리자의 탈퇴 일자 또는 접근 차단 일자를 수정할 수 없습니다.');
}
}
// 닉네임중복체크
+10 -2
View File
@@ -23,6 +23,10 @@ if ($w == '') {
alert('w 값이 제대로 넘어오지 않았습니다.');
}
if (!isset($po['po_use'])) {
sql_query(" alter table `{$g5['poll_table']}` add `po_use` tinyint not null default '0' after `mb_ids` ", false);
}
$g5['title'] = $html_title;
require_once './admin.head.php';
?>
@@ -94,17 +98,21 @@ require_once './admin.head.php';
</tr>
<?php if ($w == 'u') { ?>
<tr>
<th scope="row">투표사용</th>
<td><input type="checkbox" name="po_use" id="po_use" value="1" <?php if ($po['po_use']) { echo 'checked="checked"'; } ?>> <label for="po_use">사용</label></td>
</tr>
<tr>
<th scope="row">투표등록일</th>
<td><?php echo $po['po_date']; ?></td>
</tr>
<tr>
<th scope="row"><label for="po_ips">투표참가 IP</label></th>
<td><textarea name="po_ips" id="po_ips" readonly rows="10"><?php echo preg_replace("/\n/", " / ", $po['po_ips']) ?></textarea></td>
<td><textarea name="po_ips" id="po_ips" readonly rows="10"><?php echo html_purifier(preg_replace("/\n/", " / ", $po['po_ips'])); ?></textarea></td>
</tr>
<tr>
<th scope="row"><label for="mb_ids">투표참가 회원</label></th>
<td><textarea name="mb_ids" id="mb_ids" readonly rows="10"><?php echo preg_replace("/\n/", " / ", $po['mb_ids']) ?></textarea></td>
<td><textarea name="mb_ids" id="mb_ids" readonly rows="10"><?php echo html_purifier(preg_replace("/\n/", " / ", $po['mb_ids'])); ?></textarea></td>
</tr>
<?php } ?>
</tbody>
+4 -3
View File
@@ -51,8 +51,8 @@ $po_id = isset($_POST['po_id']) ? $_POST['po_id'] : '';
if ($w == '') {
$sql = " insert {$g5['poll_table']}
( po_subject, po_poll1, po_poll2, po_poll3, po_poll4, po_poll5, po_poll6, po_poll7, po_poll8, po_poll9, po_cnt1, po_cnt2, po_cnt3, po_cnt4, po_cnt5, po_cnt6, po_cnt7, po_cnt8, po_cnt9, po_etc, po_level, po_point, po_date )
values ( '{$_POST['po_subject']}', '{$_POST['po_poll1']}', '{$_POST['po_poll2']}', '{$_POST['po_poll3']}', '{$_POST['po_poll4']}', '{$_POST['po_poll5']}', '{$_POST['po_poll6']}', '{$_POST['po_poll7']}', '{$_POST['po_poll8']}', '{$_POST['po_poll9']}', '{$_POST['po_cnt1']}', '{$_POST['po_cnt2']}', '{$_POST['po_cnt3']}', '{$_POST['po_cnt4']}', '{$_POST['po_cnt5']}', '{$_POST['po_cnt6']}', '{$_POST['po_cnt7']}', '{$_POST['po_cnt8']}', '{$_POST['po_cnt9']}', '{$_POST['po_etc']}', '{$_POST['po_level']}', '{$_POST['po_point']}', '" . G5_TIME_YMD . "' ) ";
( po_subject, po_poll1, po_poll2, po_poll3, po_poll4, po_poll5, po_poll6, po_poll7, po_poll8, po_poll9, po_cnt1, po_cnt2, po_cnt3, po_cnt4, po_cnt5, po_cnt6, po_cnt7, po_cnt8, po_cnt9, po_etc, po_level, po_point, po_date, po_use )
values ( '{$_POST['po_subject']}', '{$_POST['po_poll1']}', '{$_POST['po_poll2']}', '{$_POST['po_poll3']}', '{$_POST['po_poll4']}', '{$_POST['po_poll5']}', '{$_POST['po_poll6']}', '{$_POST['po_poll7']}', '{$_POST['po_poll8']}', '{$_POST['po_poll9']}', '{$_POST['po_cnt1']}', '{$_POST['po_cnt2']}', '{$_POST['po_cnt3']}', '{$_POST['po_cnt4']}', '{$_POST['po_cnt5']}', '{$_POST['po_cnt6']}', '{$_POST['po_cnt7']}', '{$_POST['po_cnt8']}', '{$_POST['po_cnt9']}', '{$_POST['po_etc']}', '{$_POST['po_level']}', '{$_POST['po_point']}', '" . G5_TIME_YMD . "', 1 ) ";
sql_query($sql);
$po_id = sql_insert_id();
@@ -79,7 +79,8 @@ if ($w == '') {
po_cnt9 = '{$_POST['po_cnt9']}',
po_etc = '{$_POST['po_etc']}',
po_level = '{$_POST['po_level']}',
po_point = '{$_POST['po_point']}'
po_point = '{$_POST['po_point']}',
po_use = '{$_POST['po_use']}'
where po_id = '{$_POST['po_id']}' ";
sql_query($sql);
} elseif ($w == 'd') {
+4 -1
View File
@@ -49,7 +49,7 @@ $listall = '<a href="' . $_SERVER['SCRIPT_NAME'] . '" class="ov_listall">전체
$g5['title'] = '투표관리';
require_once './admin.head.php';
$colspan = 7;
$colspan = 8;
?>
<div class="local_ov01 local_ov">
@@ -92,6 +92,7 @@ $colspan = 7;
<th scope="col">투표권한</th>
<th scope="col">투표수</th>
<th scope="col">기타의견</th>
<th scope="col">사용</th>
<th scope="col">관리</th>
</tr>
</thead>
@@ -101,6 +102,7 @@ $colspan = 7;
$sql2 = " select sum(po_cnt1+po_cnt2+po_cnt3+po_cnt4+po_cnt5+po_cnt6+po_cnt7+po_cnt8+po_cnt9) as sum_po_cnt from {$g5['poll_table']} where po_id = '{$row['po_id']}' ";
$row2 = sql_fetch($sql2);
$po_etc = ($row['po_etc']) ? "사용" : "미사용";
$po_use = ($row['po_use']) ? "사용" : "미사용";
$s_mod = '<a href="./poll_form.php?' . $qstr . '&amp;w=u&amp;po_id=' . $row['po_id'] . '" class="btn btn_03">수정</a>';
@@ -117,6 +119,7 @@ $colspan = 7;
<td class="td_num"><?php echo $row['po_level'] ?></td>
<td class="td_num"><?php echo $row2['sum_po_cnt'] ?></td>
<td class="td_etc"><?php echo $po_etc ?></td>
<td class="td_use"><?php echo $po_use ?></td>
<td class="td_mng td_mng_s"><?php echo $s_mod ?></td>
</tr>
+5 -5
View File
@@ -266,13 +266,13 @@ if (!isset($qaconfig['qa_include_head'])) {
<tr>
<th scope="row"><label for="qa_include_head">상단 파일 경로</label></th>
<td>
<input type="text" name="qa_include_head" value="<?php echo $qaconfig['qa_include_head'] ?>" id="qa_include_head" class="frm_input" size="50">
<input type="text" name="qa_include_head" value="<?php echo get_sanitize_input($qaconfig['qa_include_head']); ?>" id="qa_include_head" class="frm_input" size="50">
</td>
</tr>
<tr>
<th scope="row"><label for="qa_include_tail">하단 파일 경로</label></th>
<td>
<input type="text" name="qa_include_tail" value="<?php echo $qaconfig['qa_include_tail'] ?>" id="qa_include_tail" class="frm_input" size="50">
<input type="text" name="qa_include_tail" value="<?php echo get_sanitize_input($qaconfig['qa_include_tail']); ?>" id="qa_include_tail" class="frm_input" size="50">
</td>
</tr>
<tr id="admin_captcha_box" style="display:none;">
@@ -344,7 +344,9 @@ if (!isset($qaconfig['qa_include_head'])) {
</form>
<script>
var captcha_chk = false;
var captcha_chk = false,
qa_include_head = jQuery.trim(jQuery("#qa_include_head").val()),
qa_include_tail = jQuery.trim(jQuery("#qa_include_tail").val());
function use_captcha_check() {
$.ajax({
@@ -361,8 +363,6 @@ if (!isset($qaconfig['qa_include_head'])) {
}
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());
+5
View File
@@ -41,6 +41,7 @@ if (isset($_POST['email'])) {
echo '해당 주소로 테스트 메일이 도착했는지 확인해 주십시오.<br>';
echo '만약, 테스트 메일이 오지 않는다면 더 다양한 계정의 메일 주소로 메일을 보내 보십시오.<br>';
echo '그래도 메일이 하나도 도착하지 않는다면 메일 서버(sendmail server)의 오류일 가능성이 높으니, 웹 서버관리자에게 문의하여 주십시오.<br>';
echo '도메인을 소유하고 있을시 SPF, DKIM 설정이 필요할수 있습니다.<br>';
echo '</p></div>';
echo '</section>';
}
@@ -53,6 +54,10 @@ if (isset($_POST['email'])) {
<p>
메일서버가 정상적으로 동작 중인지 확인할 수 있습니다.<br>
아래 입력칸에 테스트 메일을 발송하실 메일 주소를 입력하시면, [메일검사] 라는 제목으로 테스트 메일을 발송합니다.<br>
보내는 메일주소 : <?php echo get_sanitize_input($config['cf_admin_email']); ?><br>
<?php if (function_exists('domain_mail_host') && $config['cf_admin_email'] && stripos($config['cf_admin_email'], domain_mail_host()) === false) { ?>
<?php echo '외부메일설정이나 기타 설정을 하지 않았다면, 도메인과 다른 헤더로 여겨 스팸이나 차단될 가능성이 있습니다.<br>기본환경설정에서 관리자 메일 주소를 name'.domain_mail_host().' 과 같은 도메인 형식으로 설정할것을 권장합니다.'; ?>
<?php } ?>
</p>
</div>
<form name="fsendmailtest" method="post">
-1
View File
@@ -12,7 +12,6 @@ $ca = array(
'ca_name'=>'',
'ca_order'=>'',
'ca_mb_id'=>'',
'ca_skin_dir'=>'',
'ca_cert_use'=>0,
'ca_adult_use'=>0,
'ca_sell_email'=>'',
+1 -1
View File
@@ -17,7 +17,7 @@ if ($stx != "") {
$sql_search .= " $where $sfl like '%$stx%' ";
$where = " and ";
}
if ($save_stx && ($save_stx != $stx))
if (isset($save_stx) && $save_stx && ($save_stx != $stx))
$page = 1;
}
+4 -3
View File
@@ -593,7 +593,7 @@ if(!$default['de_kakaopay_cancelpwd']){
<tr>
<th scope="row"><label for="de_bank_account">은행계좌번호</label></th>
<td>
<textarea name="de_bank_account" id="de_bank_account"><?php echo $default['de_bank_account']; ?></textarea>
<textarea name="de_bank_account" id="de_bank_account"><?php echo html_purifier($default['de_bank_account']); ?></textarea>
</td>
</tr>
<tr>
@@ -781,10 +781,11 @@ if(!$default['de_kakaopay_cancelpwd']){
<tr class="pg_info_fld kcp_info_fld">
<th scope="row"><label for="de_kcp_easy_pays">NHN KCP 간편결제</label></th>
<td>
<?php echo help("체크시 NHN KCP 간편결제들을 활성화 합니다.\nNHN_KCP > 네이버페이, 카카오페이는 테스트결제가 되지 않습니다."); ?>
<?php echo help("체크시 NHN KCP 간편결제들을 활성화 합니다.\nNHN_KCP > 네이버페이, 카카오페이는 테스트결제가 되지 않습니다.\n애플페이는 IOS 기기에 모바일결제만 가능합니다."); ?>
<input type="checkbox" id="de_easy_nhnkcp_payco" name="de_easy_pays[]" value="nhnkcp_payco" <?php if(stripos($default['de_easy_pay_services'], 'nhnkcp_payco') !== false){ echo 'checked="checked"'; } ?> > <label for="de_easy_nhnkcp_payco" disabled>PAYCO (페이코)</label><br>
<input type="checkbox" id="de_easy_nhnkcp_naverpay" name="de_easy_pays[]" value="nhnkcp_naverpay" <?php if(stripos($default['de_easy_pay_services'], 'nhnkcp_naverpay') !== false){ echo 'checked="checked"'; } ?> > <label for="de_easy_nhnkcp_naverpay">NAVERPAY (네이버페이)</label><br>
<input type="checkbox" id="de_easy_nhnkcp_kakaopay" name="de_easy_pays[]" value="nhnkcp_kakaopay" <?php if(stripos($default['de_easy_pay_services'], 'nhnkcp_kakaopay') !== false){ echo 'checked="checked"'; } ?> > <label for="de_easy_nhnkcp_kakaopay">KAKAOPAY (카카오페이)</label>
<input type="checkbox" id="de_easy_nhnkcp_kakaopay" name="de_easy_pays[]" value="nhnkcp_kakaopay" <?php if(stripos($default['de_easy_pay_services'], 'nhnkcp_kakaopay') !== false){ echo 'checked="checked"'; } ?> > <label for="de_easy_nhnkcp_kakaopay">KAKAOPAY (카카오페이)</label><br>
<input type="checkbox" id="de_easy_nhnkcp_applepay" name="de_easy_pays[]" value="nhnkcp_applepay" <?php if(stripos($default['de_easy_pay_services'], 'nhnkcp_applepay') !== false){ echo 'checked="checked"'; } ?> > <label for="de_easy_nhnkcp_applepay">APPLEPAY (애플페이)</label>
</td>
</tr>
<tr class="pg_info_fld kcp_info_fld">
+2
View File
@@ -32,6 +32,8 @@ include_once(G5_PATH.'/head.sub.php');
<script>
// <![CDATA[
var g5_admin_csrf_token_key = "<?php echo (function_exists('admin_csrf_token_key')) ? admin_csrf_token_key() : ''; ?>";
function _copy(link)
{
var new_it_id = document.getElementById('new_it_id').value;
+2 -2
View File
@@ -21,7 +21,7 @@ $fr_date = (isset($_GET['fr_date']) && preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0
$to_date = (isset($_GET['to_date']) && preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $_GET['to_date'])) ? $_GET['to_date'] : '';
$od_misu = isset($_GET['od_misu']) ? preg_replace('/[^0-9a-z]/i', '', $_GET['od_misu']) : '';
$od_cancel_price = isset($_GET['od_cancel_price']) ? preg_replace('/[^0-9a-z]/', '', $_GET['od_cancel_price']) : '';
$od_cancel_price = isset($_GET['od_cancel_price']) ? preg_replace('/[^0-9a-z]/i', '', $_GET['od_cancel_price']) : '';
$od_refund_price = isset($_GET['od_refund_price']) ? preg_replace('/[^0-9a-z]/i', '', $_GET['od_refund_price']) : '';
$od_receipt_point = isset($_GET['od_receipt_point']) ? preg_replace('/[^0-9a-z]/i', '', $_GET['od_receipt_point']) : '';
$od_coupon = isset($_GET['od_coupon']) ? preg_replace('/[^0-9a-z]/i', '', $_GET['od_coupon']) : '';
@@ -222,7 +222,7 @@ if( function_exists('pg_setting_check') ){
<input type="radio" name="od_settle_case" value="신용카드" id="od_settle_case06" <?php echo get_checked($od_settle_case, '신용카드'); ?>>
<label for="od_settle_case06">신용카드</label>
<input type="radio" name="od_settle_case" value="간편결제" id="od_settle_case07" <?php echo get_checked($od_settle_case, '간편결제'); ?>>
<label for="od_settle_case07" data-tooltip-text="NHN_KCP 간편결제 : PAYCO, 네이버페이, 카카오페이(NHN_KCP) &#xa;LG유플러스 간편결제 : PAYNOW &#xa;KG 이니시스 간편결제 : KPAY, 삼성페이, LPAY, 카카오페이(KG이니시스)">PG간편결제</label>
<label for="od_settle_case07" data-tooltip-text="NHN_KCP 간편결제 : PAYCO, 네이버페이, 카카오페이(NHN_KCP), 애플페이(NHN_KCP) &#xa;LG유플러스 간편결제 : PAYNOW &#xa;KG 이니시스 간편결제 : KPAY, 삼성페이, LPAY, 카카오페이(KG이니시스)">PG간편결제</label>
<input type="radio" name="od_settle_case" value="KAKAOPAY" id="od_settle_case08" <?php echo get_checked($od_settle_case, 'KAKAOPAY'); ?>>
<label for="od_settle_case08">KAKAOPAY</label>
</div>
+1 -1
View File
@@ -227,7 +227,7 @@ if(!sql_query(" select pp_cash from {$g5['g5_shop_personalpay_table']} limit 1 "
<?php } ?>
<tr>
<th scope="row"><label for="pp_shop_memo">상점메모</label></th>
<td><textarea name="pp_shop_memo" id="pp_shop_memo" rows="8"><?php echo $pp['pp_shop_memo']; ?></textarea></td>
<td><textarea name="pp_shop_memo" id="pp_shop_memo" rows="8"><?php echo html_purifier($pp['pp_shop_memo']); ?></textarea></td>
</tr>
<tr>
<th scope="row"><label for="pp_use">사용</label></th>
+2
View File
@@ -66,6 +66,8 @@ while($res = sql_fetch_array($qry))
$group_name = '미분류';
else
$group_name = $tmp['fg_name'];
$res['fo_content'] = html_purifier($res['fo_content']);
$list_text .="
<li class=\"screen_list sms5_box\">
<span class=\"box_ico\"></span>
+1 -1
View File
@@ -174,7 +174,7 @@ function multi_update(sel)
<input type="checkbox" name="fo_no[]" value="<?php echo $res['fo_no']?>" id="fo_no_<?php echo $i; ?>">
</div>
<div class="li_preview">
<textarea readonly class="box_txt box_square"><?php echo $res['fo_content']?></textarea>
<textarea readonly class="box_txt box_square"><?php echo html_purifier($res['fo_content']); ?></textarea>
</div>
<div class="li_info">
<span class="sound_only">그룹 </span><b><?php echo $group_name?></b><br>
+1 -1
View File
@@ -67,7 +67,7 @@ include_once(G5_ADMIN_PATH.'/admin.head.php');
<div class="sms5_box write_wrap">
<span class="box_ico"></span>
<label for="sms_contents" id="wr_message_lbl">내용</label>
<textarea name="fo_content" id="sms_contents" class="box_txt box_square" onkeyup="byte_check('sms_contents', 'sms_bytes');" accesskey="m"><?php echo $write['fo_content']?></textarea>
<textarea name="fo_content" id="sms_contents" class="box_txt box_square" onkeyup="byte_check('sms_contents', 'sms_bytes');" accesskey="m"><?php echo html_purifier($write['fo_content']); ?></textarea>
<div id="sms_byte"><span id="sms_bytes">0</span> / 80 byte</div>
+1 -1
View File
@@ -109,7 +109,7 @@ function all_send()
<div id="con_sms" class="sms5_box">
<span class="box_ico"></span>
<textarea class="box_txt is_overview" readonly><?php echo $write['wr_message'];?></textarea>
<textarea class="box_txt is_overview" readonly><?php echo html_purifier($write['wr_message']); ?></textarea>
</div>
<?php if ($write['wr_re_total'] && !$wr_renum) { ?>
+10 -1
View File
@@ -33,7 +33,16 @@ if ($w == 'u' && is_numeric($bk_no)) {
$g5['title'] .= '수정';
}
else {
$write = array('bg_no' => (int) $bg_no);
$write = array(
'bg_no' => (int) $bg_no,
'bk_no' => 0,
'mb_id' => '',
'bk_name' => '',
'bk_hp' => '',
'bk_memo' => '',
'bk_receipt' => 1,
'bk_datetime' => ''
);
$g5['title'] .= '추가';
}
+6 -8
View File
@@ -71,18 +71,16 @@ if( count($save_group) ){ //그룹테이블 업데이트
$msg = '해당 번호를 선택한 그룹으로 '.$act.' 하였습니다.';
$opener_href = './num_book.php?page='.$page;
echo <<<HEREDOC
?>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script>
alert("$msg");
opener.document.location.href = "$opener_href";
alert("<?php echo $msg; ?>");
opener.document.location.href = "<?php echo $opener_href; ?>";
window.close();
</script>
<noscript>
<p>
"$msg"
<?php echo $msg; ?>
</p>
<a href="$opener_href">돌아가기</a>
</noscript>
HEREDOC;
<a href="<?php echo $opener_href; ?>">돌아가기</a>
</noscript>
+11 -1
View File
@@ -17,7 +17,17 @@ if($error) {
<script>
alert("<?php echo $msg; ?>");
window.close();
try {
window.close();
} catch(error) {
history.back();
}
setTimeout(function() {
if (window.history.length) {
window.history.back();
}
}, 500);
</script>
<noscript>
+2 -2
View File
@@ -5,7 +5,7 @@ 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 run_replace('board_mobile_content_head', html_purifier(stripslashes($board['bo_mobile_content_head'])), $board);
} else {
// 상단 파일 경로를 입력하지 않았다면 기본 상단 파일도 include 하지 않음
if (trim($board['bo_include_head'])) {
@@ -15,5 +15,5 @@ if (G5_IS_MOBILE) {
include_once(G5_BBS_PATH.'/_head.php');
}
}
echo html_purifier(stripslashes($board['bo_content_head']));
echo run_replace('board_content_head', html_purifier(stripslashes($board['bo_content_head'])), $board);
}
+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 run_replace('board_mobile_content_tail', html_purifier(stripslashes($board['bo_mobile_content_tail'])), $board);
// 모바일의 경우 설정을 따르지 않는다.
include_once(G5_BBS_PATH.'/_tail.php');
} else {
echo html_purifier(stripslashes($board['bo_content_tail']));
echo run_replace('board_content_tail', html_purifier(stripslashes($board['bo_content_tail'])), $board);
// 하단 파일 경로를 입력하지 않았다면 기본 하단 파일도 include 하지 않음
if (trim($board['bo_include_tail'])) {
if (is_include_path_check($board['bo_include_tail'])) { //파일경로 체크
+3 -3
View File
@@ -81,20 +81,20 @@ $content_skin_url = get_skin_url('content', $co['co_skin']);
$skin_file = $content_skin_path.'/content.skin.php';
if ($is_admin)
echo '<div class="ctt_admin"><a href="'.G5_ADMIN_URL.'/contentform.php?w=u&amp;co_id='.$co_id.'" class="btn_admin btn"><span class="sound_only">내용 수정</span><i class="fa fa-cog fa-spin fa-fw"></i></a></div>';
echo run_replace('content_admin_button_html', '<div class="ctt_admin"><a href="'.G5_ADMIN_URL.'/contentform.php?w=u&amp;co_id='.$co_id.'" class="btn_admin btn"><span class="sound_only">내용 수정</span><i class="fa fa-cog fa-spin fa-fw"></i></a></div>', $co);
?>
<?php
if(is_file($skin_file)) {
$himg = G5_DATA_PATH.'/content/'.$co_id.'_h';
if (file_exists($himg)) // 상단 이미지
echo '<div id="ctt_himg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_h" alt=""></div>';
echo run_replace('content_head_image_html', '<div id="ctt_himg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_h" alt=""></div>', $co);
include($skin_file);
$timg = G5_DATA_PATH.'/content/'.$co_id.'_t';
if (file_exists($timg)) // 하단 이미지
echo '<div id="ctt_timg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_t" alt=""></div>';
echo run_replace('content_tail_image_html', '<div id="ctt_timg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_t" alt=""></div>', $co);
} else {
echo '<p>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</p>';
}
+8
View File
@@ -22,6 +22,14 @@ $file = sql_fetch($sql);
if (!$file['bf_file'])
alert_close('파일 정보가 존재하지 않습니다.');
$nonce = isset($_REQUEST['nonce']) ? preg_replace('/[^0-9a-z\|]/i', '', $_REQUEST['nonce']) : '';
if (function_exists('download_file_nonce_is_valid') && !defined('G5_DOWNLOAD_NONCE_CHECK')){
if(! download_file_nonce_is_valid($nonce, $bo_table, $wr_id)){
alert('토큰 유효시간이 지났거나 토큰이 유효하지 않습니다.\\n브라우저를 새로고침 후 다시 시도해 주세요.', G5_URL);
}
}
// JavaScript 불가일 때
$js = (isset($_GET['js'])) ? $_GET['js'] : '';
if($js != 'on' && $board['bo_download_point'] < 0) {
+5 -2
View File
@@ -17,12 +17,15 @@ while ($row=sql_fetch_array($result))
$faq_master_list[$key] = $row;
}
$fm = array();
if (isset($fm_id) && $fm_id){
$fm_id = (int) $fm_id;
$qstr .= '&amp;fm_id=' . $fm_id; // 마스터faq key_id
$fm = $faq_master_list[$fm_id];
}
$fm = $faq_master_list[$fm_id];
if (!$fm['fm_id'])
if (! (isset($fm['fm_id']) && $fm['fm_id']))
alert('등록된 내용이 없습니다.');
$g5['title'] = $fm['fm_subject'];
+2 -2
View File
@@ -62,7 +62,7 @@ if(isset($_POST['js']) && $_POST['js'] === "on") {
and mb_id = '{$member['mb_id']}'
and bg_flag in ('good', 'nogood') ";
$row = sql_fetch($sql);
if ($row['bg_flag'])
if (isset($row['bg_flag']) && $row['bg_flag'])
{
if ($row['bg_flag'] == 'good')
$status = '추천';
@@ -127,7 +127,7 @@ if(isset($_POST['js']) && $_POST['js'] === "on") {
and mb_id = '{$member['mb_id']}'
and bg_flag in ('good', 'nogood') ";
$row = sql_fetch($sql);
if ($row['bg_flag'])
if (isset($row['bg_flag']) && $row['bg_flag'])
{
if ($row['bg_flag'] == 'good')
$status = '추천';
+6 -4
View File
@@ -8,7 +8,7 @@ $mb_password = isset($_POST['mb_password']) ? trim($_POST['mb_password']) : '';
run_event('member_login_check_before', $mb_id);
if (!$mb_id || !$mb_password)
if (!$mb_id || run_replace('check_empty_member_login_password', !$mb_password, $mb_id))
alert('회원아이디나 비밀번호가 공백이면 안됩니다.');
$mb = get_member($mb_id);
@@ -27,11 +27,13 @@ if(function_exists('social_is_login_check')){
$is_social_password_check = social_is_login_password_check($mb_id);
}
//소셜 로그인이 맞다면 패스워드를 체크하지 않습니다.
$is_need_not_password = run_replace('login_check_need_not_password', $is_social_password_check, $mb_id, $mb_password, $mb, $is_social_login);
// $is_need_not_password 변수가 true 이면 패스워드를 체크하지 않습니다.
// 가입된 회원이 아니다. 비밀번호가 틀리다. 라는 메세지를 따로 보여주지 않는 이유는
// 회원아이디를 입력해 보고 맞으면 또 비밀번호를 입력해보는 경우를 방지하기 위해서입니다.
// 불법사용자의 경우 회원아이디가 틀린지, 비밀번호가 틀린지를 알기까지는 많은 시간이 소요되기 때문입니다.
if (!$is_social_password_check && (! (isset($mb['mb_id']) && $mb['mb_id']) || !login_password_check($mb, $mb_password, $mb['mb_password'])) ) {
if (!$is_need_not_password && (! (isset($mb['mb_id']) && $mb['mb_id']) || !login_password_check($mb, $mb_password, $mb['mb_password'])) ) {
run_event('password_is_wrong', 'login', $mb);
@@ -153,7 +155,7 @@ if( is_admin($mb['mb_id']) && is_dir(G5_DATA_PATH.'/tmp/') ){
$tmp_data_check = false;
}
}
@fclose($tmp_data_check);
if (is_resource($tmp_data_check)) @fclose($tmp_data_check);
@unlink($tmp_data_file);
if(! $tmp_data_check){
+2
View File
@@ -77,6 +77,8 @@ if($result){
}
}
run_event('cert_refresh_update_after', $mb_id);
//===============================================================
(empty($url))? goto_url(G5_URL) : goto_url($url);
+2 -1
View File
@@ -17,6 +17,8 @@ if( function_exists('social_member_comfirm_redirect') && (! $url || $url === 're
social_member_comfirm_redirect();
}
$url = run_replace('member_confirm_next_url', $url);
$g5['title'] = '회원 비밀번호 확인';
include_once('./_head.sub.php');
@@ -31,7 +33,6 @@ if($url){
}
}
$url = get_text($url);
include_once($member_skin_path.'/member_confirm.skin.php');
+3 -1
View File
@@ -14,9 +14,11 @@ if (!($post_mb_password && check_password($post_mb_password, $member['mb_passwor
// 회원탈퇴일을 저장
$date = date("Ymd");
$sql = " update {$g5['member_table']} set mb_leave_date = '{$date}', mb_memo = '".date('Ymd', G5_SERVER_TIME)." 탈퇴함\n".sql_real_escape_string($mb['mb_memo'])."', mb_certify = '', mb_adult = 0, mb_dupinfo = '' where mb_id = '{$member['mb_id']}' ";
$sql = " update {$g5['member_table']} set mb_leave_date = '{$date}', mb_memo = '".date('Ymd', G5_SERVER_TIME)." 탈퇴함\n".sql_real_escape_string($member['mb_memo'])."', mb_certify = '', mb_adult = 0, mb_dupinfo = '' where mb_id = '{$member['mb_id']}' ";
sql_query($sql);
run_event('member_leave', $member);
// 3.09 수정 (로그아웃)
unset($_SESSION['ss_mb_id']);
+2 -2
View File
@@ -7,11 +7,11 @@ $qa_skin_url = get_skin_url('qa', (G5_IS_MOBILE ? $qaconfig['qa_mobile_skin'] :
if (G5_IS_MOBILE) {
// 모바일의 경우 설정을 따르지 않는다.
include_once('./_head.php');
echo conv_content($qaconfig['qa_mobile_content_head'], 1);
echo run_replace('qa_mobile_content_head', conv_content($qaconfig['qa_mobile_content_head'], 1), $qaconfig);
} else {
if($qaconfig['qa_include_head'] && is_include_path_check($qaconfig['qa_include_head']))
@include ($qaconfig['qa_include_head']);
else
include ('./_head.php');
echo conv_content($qaconfig['qa_content_head'], 1);
echo run_replace('qa_content_head', conv_content($qaconfig['qa_content_head'], 1), $qaconfig);
}
+2 -2
View File
@@ -2,11 +2,11 @@
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if (G5_IS_MOBILE) {
echo conv_content($qaconfig['qa_mobile_content_tail'], 1);
echo run_replace('qa_mobile_content_tail', conv_content($qaconfig['qa_mobile_content_tail'], 1), $qaconfig);
// 모바일의 경우 설정을 따르지 않는다.
include_once('./_tail.php');
} else {
echo conv_content($qaconfig['qa_content_tail'], 1);
echo run_replace('qa_content_tail', conv_content($qaconfig['qa_content_tail'], 1), $qaconfig);
if($qaconfig['qa_include_tail'] && is_include_path_check($qaconfig['qa_include_tail']))
@include ($qaconfig['qa_include_tail']);
else
+26
View File
@@ -135,6 +135,32 @@ if(is_file($skin_file)) {
$answer_update_href = G5_BBS_URL.'/qawrite.php?w=u&amp;qa_id='.$answer['qa_id'].$qstr;
$answer_delete_href = G5_BBS_URL.'/qadelete.php?qa_id='.$answer['qa_id'].'&amp;token='.$token.$qstr;
}
$ss_name = 'ss_qa_view_'.$answer['qa_id'];
if(!get_session($ss_name))
set_session($ss_name, TRUE);
// 답변 첨부파일
$answer['img_file'] = array();
$answer['download_href'] = array();
$answer['download_source'] = array();
$answer['img_count'] = 0;
$answer['download_count'] = 0;
for ($i=1; $i<=2; $i++) {
if(preg_match("/\.({$config['cf_image_extension']})$/i", $answer['qa_file'.$i])) {
$attr_href = run_replace('thumb_view_image_href', G5_BBS_URL.'/view_image.php?fn='.urlencode('/'.G5_DATA_DIR.'/qa/'.$answer['qa_file'.$i]), '/'.G5_DATA_DIR.'/qa/'.$answer['qa_file'.$i], '', '', '', '');
$answer['img_file'][] = '<a href="'.$attr_href.'" target="_blank" class="view_image"><img src="'.G5_DATA_URL.'/qa/'.$answer['qa_file'.$i].'"></a>';
$answer['img_count']++;
continue;
}
if ($answer['qa_file'.$i]) {
$answer['download_href'][] = G5_BBS_URL.'/qadownload.php?qa_id='.$answer['qa_id'].'&amp;no='.$i;
$answer['download_source'][] = $answer['qa_source'.$i];
$answer['download_count']++;
}
}
}
$stx = get_text(stripslashes($stx));
+11 -6
View File
@@ -17,7 +17,7 @@ if ($w == 'u' && $is_admin == 'super') {
alert('데모 화면에서는 하실(보실) 수 없는 작업입니다.');
}
if (!chk_captcha()) {
if (run_replace('register_member_chk_captcha', !chk_captcha(), $w)) {
alert('자동등록방지 숫자가 틀렸습니다.');
}
@@ -94,10 +94,15 @@ if ($w == '' || $w == 'u') {
alert('닉네임을 올바르게 입력해 주십시오.');
}
if ($w == '' && !$mb_password)
alert('비밀번호가 넘어오지 않았습니다.');
if($w == '' && $mb_password != $mb_password_re)
alert('비밀번호가 일치하지 않습니다.');
// 비밀번호를 체크하는 상태의 기본값은 true이며, 비밀번호를 체크하지 않으려면 hook 을 통해 false 값으로 바꿔야 합니다.
$is_check_password = run_replace('register_member_password_check', true, $mb_id, $mb_nick, $mb_email, $w);
if ($is_check_password){
if ($w == '' && !$mb_password)
alert('비밀번호가 넘어오지 않았습니다.');
if ($w == '' && $mb_password != $mb_password_re)
alert('비밀번호가 일치하지 않습니다.');
}
if ($msg = empty_mb_name($mb_name)) alert($msg, "", true, true);
if ($msg = empty_mb_nick($mb_nick)) alert($msg, "", true, true);
@@ -111,7 +116,7 @@ if ($w == '' || $w == 'u') {
if ($msg = prohibit_mb_email($mb_email))alert($msg, "", true, true);
// 휴대폰 필수입력일 경우 휴대폰번호 유효성 체크
if ($config['cf_use_hp'] || ($config['cf_cert_hp'] || $config['cf_cert_simple']) && $config['cf_req_hp']) {
if (($config['cf_use_hp'] || $config['cf_cert_hp'] || $config['cf_cert_simple']) && $config['cf_req_hp']) {
if ($msg = valid_mb_hp($mb_hp)) alert($msg, "", true, true);
}
+7 -3
View File
@@ -362,7 +362,12 @@ if( $config['cf_cert_use'] || (defined('G5_YOUNGCART_VER') && G5_YOUNGCART_VER)
// IE 브라우저 또는 엣지브라우저 또는 IOS 모바일과 http환경에서는 secure; SameSite=None을 설정하지 않습니다.
if (isset($_SERVER['HTTP_USER_AGENT'])) {
if( preg_match('/Edge/i', $_SERVER['HTTP_USER_AGENT']) || preg_match('/(iPhone|iPod|iPad).*AppleWebKit.*Safari/i', $_SERVER['HTTP_USER_AGENT']) || preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT']) || preg_match('~Trident/7.0(; Touch)?; rv:11.0~',$_SERVER['HTTP_USER_AGENT']) || ! (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ){
if (preg_match('/Edge/i', $_SERVER['HTTP_USER_AGENT'])
|| preg_match('/(iPhone|iPod|iPad).*AppleWebKit.*Safari/i', $_SERVER['HTTP_USER_AGENT'])
|| preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT'])
|| preg_match('~Trident/7.0(; Touch)?; rv:11.0~',$_SERVER['HTTP_USER_AGENT'])
|| !(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on')
|| !(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == "https")){
return $res;
}
}
@@ -497,6 +502,7 @@ if (isset($_REQUEST['url'])) {
$urlencode = urlencode($_SERVER['REQUEST_URI']);
if (G5_DOMAIN) {
$p = @parse_url(G5_DOMAIN);
$p['path'] = isset($p['path']) ? $p['path'] : '/';
$urlencode = G5_DOMAIN.urldecode(preg_replace("/^".urlencode($p['path'])."/", "", $urlencode));
}
}
@@ -836,5 +842,3 @@ header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
header('Pragma: no-cache'); // HTTP/1.0
run_event('common_header');
$html_process = new html_process();
+3 -6
View File
@@ -28,6 +28,7 @@ define('G5_HTTPS_DOMAIN', '');
// 그누보드 디버그바 설정입니다, 실제 서버운영시 false 로 설정해 주세요.
define('G5_DEBUG', false);
define('G5_COLLECT_QUERY', false);
// Set Database table default engine is Database default_storage_engine, If you want to use MyISAM or InnoDB, change to MyISAM or InnoDB.
// DB에 테이블 생성 시 테이블의 기본 스토리지 엔진을 설정할 수 있습니다.
@@ -233,9 +234,5 @@ define('G5_VISIT_BROWSCAP_USE', false);
*/
define('G5_IP_DISPLAY', '\\1.♡.\\3.\\4');
if ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ||
(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO']==='https')) { //https 통신일때 daum 주소 js
define('G5_POSTCODE_JS', '<script src="https://spi.maps.daum.net/imap/map_js_init/postcode.v2.js"></script>');
} else { //http 통신일때 daum 주소 js
define('G5_POSTCODE_JS', '<script src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>');
}
// KAKAO 우편번호 서비스 CDN
define('G5_POSTCODE_JS', '<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js" async></script>');
+1
View File
@@ -1148,6 +1148,7 @@ box-shadow: 1px 2px 2px #eee;}
.sod_frm_mobile #m_sod_frm_paysel .inicis_lpay{background:url(../img/lpay_logo.png) no-repeat;width:35px;height:12px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%}
.sod_frm_mobile #m_sod_frm_paysel .inicis_kakaopay{background:url(../img/kakao.png) no-repeat 50% 50% #f4dc34;border-radius:30px;height:22px;width:74px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
.sod_frm_mobile #m_sod_frm_paysel .kakaopay_icon{background:url(../img/kakao.png) no-repeat 50% 50% #f4dc34;border-radius:30px;height:22px;width:74px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
.sod_frm_mobile #m_sod_frm_paysel .applepay_icon{background:url(../img/ico-mobile-applepay.png) no-repeat 50% 50% #fff;border-radius:30px;height:23px;width:50px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
.sod_frm_mobile #m_sod_frm_paysel .samsung_pay{margin-left:-23px;background:url(../img/samsungpay.png) no-repeat 24px 3px;height:25px;width:106px;display:inline-block;overflow:hidden;text-indent:-999px}
.sod_frm_mobile #sod_frm_pay{border-top:1px solid #f3f3f3}
.sod_frm_mobile #sod_frm_pay h2{margin:10px 0;font-size:1.25em}
+8 -7
View File
@@ -83,7 +83,7 @@ input[type=radio] {-webkit-appearance: radio}
/*카테고리*/
.menu {display:none;position:fixed;top:0;height:100%;z-index:99999;-webkit-backface-visibility:hidden;width:100%;background:#efefef}
.menu .menu_wr{;width:100%;height:100%;overflow-y:auto;background:#eee;position:relative;z-index:199919;
.menu .menu_wr{width:100%;height:100%;overflow-y:auto;background:#eee;position:relative;z-index:199919;
-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);}
@@ -220,14 +220,15 @@ box-shadow: 0 0 6px rgba(0,0,0,0.2);}
#m_sod_frm_paysel h3{background:#fff;padding:15px 10px ;border:1px solid #e3e5e8;border-bottom:0}
#m_sod_frm_paysel ul {margin:0 0 ;background:#fff;padding:10px;border:1px solid #e3e5e8}
#m_sod_frm_paysel ul:after {display:block;visibility:hidden;clear:both;content:""}
#m_sod_frm_paysel li {float:left;padding:5px ;width:46%;height:25px}
#m_sod_frm_paysel li {float:left;padding:5px;width:46%;height:35px}
#m_sod_frm_paysel .KPAY{background:url('../img/kpay.png') no-repeat;width:37px;height:15px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%}
#m_sod_frm_paysel .PAYNOW{background:url('../img/paynow.png') no-repeat;width:46px;height:15px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%;}
#m_sod_frm_paysel .PAYCO{background:url('../img/payco.png') no-repeat 1px;width:46px;height:15px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%;}
#m_sod_frm_paysel .PAYCO{background:url('../img/payco.png') no-repeat 1px;width:50px;height:15px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%}
#m_sod_frm_paysel .inicis_lpay{background:url('../img/lpay_logo.png') no-repeat;width:35px;height:12px;overflow:hidden;text-indent:-999px;display:inline-block;background-size:100%;}
#m_sod_frm_paysel .inicis_kakaopay{background:url('../img/kakao.png') no-repeat 50% 50% #ffeb00;border-radius:30px;height:22px;width:74px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
#m_sod_frm_paysel .kakaopay_icon{background:url('../img/ico-mobile-kakaopay.png') no-repeat #fff;height:15px;width:43px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
#m_sod_frm_paysel .naverpay_icon{background:url('../img/ico-mobile-naverpay.png') no-repeat #fff;height:15px;width:40px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:35px auto}
#m_sod_frm_paysel .inicis_kakaopay{background:url('../img/kakao.png') no-repeat 50% 50% #ffeb00;border-radius:30px;height:26px;width:74px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:36px auto}
#m_sod_frm_paysel .kakaopay_icon{background:url('../img/ico-mobile-kakaopay.png') no-repeat #fff;height:23px;width:63px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:45px auto;background-position: 10% 40%}
#m_sod_frm_paysel .naverpay_icon{background:url('../img/ico-mobile-naverpay.png') no-repeat #fff;height:23px;width:60px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:45px auto;background-position: 0% 30%}
#m_sod_frm_paysel .applepay_icon{background:url('../img/ico-mobile-applepay.png') no-repeat #fff;height:30px;width:60px;display:inline-block;overflow:hidden;text-indent:-999px;background-size:43px auto}
#m_sod_frm_paysel .samsung_pay{margin-left:-23px;background:url('../img/samsungpay.png') no-repeat 24px 3px;height:25px;width:106px;display:inline-block;overflow:hidden;text-indent:-999px}
#sod_frm_pay{padding:10px;;border-top:1px solid #f3f3f3}
@@ -318,7 +319,7 @@ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
}
#sod_frm .sod_ta_wr{background: #fff}
#sod_frm .btn_confirm{;margin:0 10px 10px}
#sod_frm .btn_confirm{margin:0 10px 10px}
#sod_frm .btn_submit{width:100%;height:45px;font-size: 1.167em;font-weight: bold;margin:5px 0;border-radius:4px}
#sod_frm .btn_cancel,#sod_frm .btn01{width:100%;height:45px;line-height:43px;font-size:1.167em;font-weight: bold;padding:0;border-radius:4px}
+5 -5
View File
@@ -9,19 +9,19 @@ if (!defined('G5_USE_SHOP') || !G5_USE_SHOP) return;
*/
define('G5_DELIVERY_COMPANY',
'(경동택배^https://kdexp.com/basicNewDelivery.kd?barcode=^080-873-2178)'
.'(대신택배^http://home.daesinlogistics.co.kr/daesin/jsp/d_freight_chase/d_general_process2.jsp?billno1=^043-222-4582)'
.'(대신택배^https://www.ds3211.co.kr/freight/internalFreightSearch.ht?billno=^043-222-4582)'
.'(동부택배^http://www.dongbups.com/delivery/delivery_search_view.jsp?item_no=^1588-8848)'
.'(로젠택배^https://www.ilogen.com/m/personal/trace.pop/^1588-9988)'
.'(우체국^http://service.epost.go.kr/trace.RetrieveRegiPrclDeliv.postal?sid1=^1588-1300)'
.'(우체국^https://m.epost.go.kr/postal/mobile/mobile.trace.RetrieveDomRigiTraceList.comm?ems_gubun=E&sid1=^1588-1300)'
.'(이노지스택배^http://www.innogis.co.kr/tracking_view.asp?invoice=^1566-4082)'
.'(한진택배^http://www.hanjin.co.kr/Delivery_html/inquiry/result_waybill.jsp?wbl_num=^1588-0011)'
.'(한진택배^https://www.hanjin.co.kr/kor/CMS/DeliveryMgr/WaybillResult.do?mCode=MN038&schLang=KR&wblnumText2=^1588-0011)'
.'(롯데택배^https://www.lotteglogis.com/open/tracking?invno=^1588-2121)'
.'(CJ대한통운^https://www.doortodoor.co.kr/parcel/doortodoor.do?fsp_action=PARC_ACT_002&fsp_cmd=retrieveInvNoACT&invc_no=^1588-1255)'
.'(CVSnet편의점택배^http://was.cvsnet.co.kr/_ver2/board/ctod_status.jsp?invoice_no=^1577-1287)'
.'(CVSnet편의점택배^https://www.cvsnet.co.kr/invoice/tracking.do?invoice_no=^1577-1287)'
.'(KG옐로우캡택배^http://www.yellowcap.co.kr/custom/inquiry_result.asp?invoice_no=^1588-0123)'
.'(KGB택배^http://www.kgbls.co.kr/sub5/trace.asp?f_slipno=^1577-4577)'
.'(KG로지스^http://www.kglogis.co.kr/contents/waybill.jsp?item_no=^1588-8848)'
.'(건영택배^http://www.kunyoung.com/goods/goods_01.php?mulno=^031-460-2700)'
.'(건영택배^https://www.kunyoung.com/goods/goods_01.php?mulno=^031-460-2700)'
.'(호남택배^http://www.honamlogis.co.kr/04estimate/songjang_list.php?c_search1=^031-376-6070)'
);
+2 -2
View File
@@ -4,5 +4,5 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 자바스크립트와 CSS 파일을 새로 다운로드 하도록 파일의 끝에 년월일 지정
// 예) https://도메인/css/default.css?ver=220620
// 예) https://도메인/js/common.js?ver=220620
define('G5_CSS_VER', '220620');
define('G5_JS_VER', '220620');
define('G5_CSS_VER', '2303229');
define('G5_JS_VER', '2210172');
+5 -3
View File
@@ -71,7 +71,8 @@ include_once(G5_LIB_PATH.'/popular.lib.php');
<script>
function fsearchbox_submit(f)
{
if (f.stx.value.length < 2) {
var stx = f.stx.value.trim();
if (stx.length < 2) {
alert("검색어는 두글자 이상 입력하십시오.");
f.stx.select();
f.stx.focus();
@@ -80,8 +81,8 @@ include_once(G5_LIB_PATH.'/popular.lib.php');
// 검색에 많은 부하가 걸리는 경우 이 주석을 제거하세요.
var cnt = 0;
for (var i=0; i<f.stx.value.length; i++) {
if (f.stx.value.charAt(i) == ' ')
for (var i = 0; i < stx.length; i++) {
if (stx.charAt(i) == ' ')
cnt++;
}
@@ -91,6 +92,7 @@ include_once(G5_LIB_PATH.'/popular.lib.php');
f.stx.focus();
return false;
}
f.stx.value = stx;
return true;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

+1
View File
@@ -617,6 +617,7 @@ CREATE TABLE IF NOT EXISTS `g5_poll` (
`po_date` date NOT NULL default '0000-00-00',
`po_ips` mediumtext NOT NULL,
`mb_ids` text NOT NULL,
`po_use` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`po_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+10 -2
View File
@@ -19,9 +19,17 @@ function certify_win_open(type, url, event) {
if($("input[name=veri_up_hash]").length < 1)
$("input[name=cert_no]").after('<input type="hidden" name="veri_up_hash" value="">');
if( navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1 )
// iframe에서 세션공유 문제가 있어서 더 이상 iframe 을 사용하지 않습니다.
var use_iframe = false;
if(use_iframe && (navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1))
{
var $frm = $(event.target.form);
if($frm.length < 1){
$frm = $(event.target).parent();
}
if($("#kcp_cert").length < 1) {
$frm.wrap('<div id="cert_info"></div>');
@@ -31,7 +39,7 @@ function certify_win_open(type, url, event) {
}
$("#cert_info")
.after('<iframe id="kcp_cert" name="kcp_cert" width="100%" height="700" frameborder="0" scrolling="no" style="display:none"></iframe>');
.after('<iframe id="kcp_cert" name="kcp_cert" width="100%" height="700" frameborder="0" scrolling="yes" style="display:none"></iframe>');
var temp_form = document.form_temp;
temp_form.target = "kcp_cert";
+3 -3
View File
@@ -355,8 +355,8 @@ var win_homepage = function(href) {
* 우편번호 창
**/
var win_zip = function(frm_name, frm_zip, frm_addr1, frm_addr2, frm_addr3, frm_jibeon) {
if(typeof daum === 'undefined'){
alert("다음 우편번호 postcode.v2.js 파일이 로드되지 않았습니다.");
if(typeof daum === "undefined"){
alert("KAKAO 우편번호 서비스 postcode.v2.js 파일이 로드되지 않았습니다.");
return false;
}
@@ -423,7 +423,7 @@ var win_zip = function(frm_name, frm_zip, frm_addr1, frm_addr2, frm_addr3, frm_j
element_wrap = document.createElement("div");
element_wrap.setAttribute("id", daum_pape_id);
element_wrap.style.cssText = 'display:none;border:1px solid;left:0;width:100%;height:300px;margin:5px 0;position:relative;-webkit-overflow-scrolling:touch;';
element_wrap.innerHTML = '<img src="//i1.daumcdn.net/localimg/localimages/07/postcode/320/close.png" id="btnFoldWrap" style="cursor:pointer;position:absolute;right:0px;top:-21px;z-index:1" class="close_daum_juso" alt="접기 버튼">';
element_wrap.innerHTML = '<img src="//t1.daumcdn.net/postcode/resource/images/close.png" id="btnFoldWrap" style="cursor:pointer;position:absolute;right:0px;top:-21px;z-index:1" class="close_daum_juso" alt="접기 버튼">';
jQuery('form[name="'+frm_name+'"]').find('input[name="'+frm_addr1+'"]').before(element_wrap);
jQuery("#"+daum_pape_id).off("click", ".close_daum_juso").on("click", ".close_daum_juso", function(e){
e.preventDefault();
-5
View File
@@ -8,9 +8,4 @@ $(function() {
window.open($(this).attr("href"), "win_twitter", "menubar=1,resizable=1,width=600,height=350");
return false;
});
$(".share-googleplus").click(function() {
window.open($(this).attr("href"), "win_googleplus", "menubar=1,resizable=1,width=600,height=600");
return false;
});
});
+20 -10
View File
@@ -61,29 +61,39 @@ Class G5_object_cache {
$this->contents[$group][$key] = $data;
break;
default :
$datas = $this->etcs[$group][$key] = $data;
$this->etcs[$group][$key] = $data;
break;
}
}
/**
* cache 데이터 제거
* @param string $type
* @param string $key
* @param string $group
* @return bool
* kkigomi 님이 고쳐주심
*/
function delete($type, $key, $group = 'default')
{
if (!$this->exists($type, $key, $group)) {
return false;
}
function delete($key, $group='default') {
switch ($key) {
switch ($type) {
case 'bbs':
$datas = $this->writes;
$datas = &$this->writes;
break;
case 'content':
$datas = $this->contents;
$datas = &$this->contents;
break;
default :
$datas = $this->etcs;
default:
$datas = &$this->etcs;
break;
}
if ( ! $this->exists('bbs', $key, $group) )
return false;
unset($datas[$group][$key]);
unset( $datas[$group][$key] );
return true;
}
+260 -90
View File
@@ -96,6 +96,8 @@ function print_r2($var)
// header("location:URL") 을 대체
function goto_url($url)
{
run_event('goto_url', $url);
$url = str_replace("&amp;", "&", $url);
//echo "<script> location.replace('$url'); </script>";
@@ -144,11 +146,13 @@ function get_session($session_name)
// 쿠키변수 생성
function set_cookie($cookie_name, $value, $expire)
function set_cookie($cookie_name, $value, $expire, $path='/', $domain=G5_COOKIE_DOMAIN, $secure=false, $httponly=true)
{
global $g5;
$c = run_replace('set_cookie_params', array('path'=>$path, 'domain'=>$domain, 'secure'=>$secure, 'httponly'=>$httponly), $cookie_name);
setcookie(md5($cookie_name), base64_encode($value), G5_SERVER_TIME + $expire, '/', G5_COOKIE_DOMAIN);
setcookie(md5($cookie_name), base64_encode($value), G5_SERVER_TIME + $expire, $c['path'], $c['domain'], $c['secure'], $c['httponly']);
}
@@ -269,12 +273,12 @@ function url_auto_link($str)
// url에 http:// 를 붙인다
function set_http($url)
function set_http($url, $protocol="http://")
{
if (!trim($url)) return;
if (!preg_match("/^(http|https|ftp|telnet|news|mms)\:\/\//i", $url))
$url = "http://" . $url;
$url = $protocol. $url;
return $url;
}
@@ -295,6 +299,30 @@ function get_filesize($size)
return $size;
}
// 파일다운로드 링크 생성시 nonce 키 추가, 7200은 2시간동안 유효
function download_file_nonce_key($bo_table, $wr_id, $timeoutSeconds=7200)
{
$secret = get_token_encryption_key(sha1($bo_table.session_id().$wr_id));
$salt = get_random_token_string(10);
$maxTime = G5_SERVER_TIME + $timeoutSeconds;
$nonce = $salt . '|' . $maxTime . '|' . sha1($salt . $secret . $maxTime);
return $nonce;
}
// 파일다운로드시 nonce key를 체크한다.
function download_file_nonce_is_valid($nonce, $bo_table, $wr_id)
{
if (! is_string($nonce)) return false;
$secret = get_token_encryption_key(sha1($bo_table.session_id().$wr_id));
$a = explode('|', $nonce);
if (count($a) !== 3) return false;
list($salt, $maxTime, $hash) = $a;
if (sha1($salt . $secret . $maxTime) !== $hash) return false;
if (G5_SERVER_TIME > (int) $maxTime) return false;
return true;
}
// 게시글에 첨부된 파일을 얻는다. (배열로 반환)
function get_file($bo_table, $wr_id)
@@ -304,11 +332,12 @@ function get_file($bo_table, $wr_id)
$file['count'] = 0;
$sql = " select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' order by bf_no ";
$result = sql_query($sql);
$nonce = download_file_nonce_key($bo_table, $wr_id);
while ($row = sql_fetch_array($result))
{
$no = (int) $row['bf_no'];
$bf_content = $row['bf_content'] ? html_purifier($row['bf_content']) : '';
$file[$no]['href'] = G5_BBS_URL."/download.php?bo_table=$bo_table&amp;wr_id=$wr_id&amp;no=$no" . $qstr;
$file[$no]['href'] = G5_BBS_URL."/download.php?bo_table=$bo_table&amp;wr_id=$wr_id&amp;no=$no&amp;nonce=$nonce" . $qstr;
$file[$no]['download'] = $row['bf_download'];
// 4.00.11 - 파일 path 추가
$file[$no]['path'] = G5_DATA_URL.'/file/'.$bo_table;
@@ -579,6 +608,8 @@ function check_html_link_nofollow($type=''){
// Open : HTML Purifier is open-source and highly customizable
function html_purifier($html)
{
global $is_admin, $write;
$f = file(G5_PLUGIN_PATH.'/htmlpurifier/safeiframe.txt');
$domains = array();
foreach($f as $domain){
@@ -589,9 +620,9 @@ function html_purifier($html)
array_push($domains, $domain);
}
}
// 내 도메인도 추가
array_push($domains, $_SERVER['HTTP_HOST'].'/');
$safeiframe = implode('|', $domains);
// 글쓴이가 관리자인 경우에만 현재 사이트 도메인을 허용
if (isset($write['mb_id']) && $write['mb_id'] && is_admin($write['mb_id'])) array_push($domains, $_SERVER['HTTP_HOST'].'/');
$safeiframe = implode('|', run_replace('html_purifier_safeiframes', $domains, $html));
include_once(G5_PLUGIN_PATH.'/htmlpurifier/HTMLPurifier.standalone.php');
include_once(G5_PLUGIN_PATH.'/htmlpurifier/extend.video.php');
@@ -834,7 +865,10 @@ function subject_sort_link($col, $query_string='', $flag='asc')
$arr_query[] = 'page='.$page;
$qstr = implode("&amp;", $arr_query);
return "<a href=\"{$_SERVER['SCRIPT_NAME']}?{$qstr}\">";
parse_str(html_entity_decode($qstr), $qstr_array);
$url = short_url_clean(get_params_merge_url($qstr_array));
return '<a href="'.$url.'">';
}
@@ -1298,87 +1332,138 @@ function get_sideview($mb_id, $name='', $email='', $homepage='')
global $g5;
global $bo_table, $sca, $is_admin, $member;
$email = get_string_encrypt($email);
$homepage = set_http(clean_xss_tags($homepage));
static $cache = array();
$name = get_text($name, 0, true);
$email = get_text($email);
$name = get_text($name, 0, true);
if (isset($cache['id:' . $mb_id]) && $cache['id:' . $mb_id]) {
return $cache['id:' . $mb_id];
} else if (
isset($name)
&& isset($cache['name:' . $name])
&& $cache['name:' . $name]
) {
return $cache['name:' . $name];
}
$email = get_string_encrypt($email);
$email = get_text($email);
$homepage = set_http(clean_xss_tags($homepage));
$homepage = get_text($homepage);
$tmp_name = "";
$en_mb_id = $mb_id;
$name_tag = array();
$menus = array();
if ($mb_id) {
//$tmp_name = "<a href=\"".G5_BBS_URL."/profile.php?mb_id=".$mb_id."\" class=\"sv_member\" title=\"$name 자기소개\" rel="nofollow" target=\"_blank\" onclick=\"return false;\">$name</a>";
$tmp_name = '<a href="'.G5_BBS_URL.'/profile.php?mb_id='.$mb_id.'" class="sv_member" title="'.$name.' 자기소개" target="_blank" rel="nofollow" onclick="return false;">';
// $tmp_name = "<a href=\"".G5_BBS_URL."/profile.php?mb_id=".$mb_id."\" class=\"sv_member\" title=\"$name 자기소개\" rel="nofollow" target=\"_blank\" onclick=\"return false;\">$name</a>";
$name_tag_open = '<a href="' . G5_BBS_URL . '/profile.php?mb_id=' . $mb_id . '" class="sv_member" title="' . $name . ' 자기소개" target="_blank" rel="nofollow" onclick="return false;">';
if ($config['cf_use_member_icon']) {
$mb_dir = substr($mb_id,0,2);
$icon_file = G5_DATA_PATH.'/member/'.$mb_dir.'/'.get_mb_icon_name($mb_id).'.gif';
$mb_dir = substr($mb_id, 0, 2);
$icon_file = G5_DATA_PATH . '/member/' . $mb_dir . '/' . get_mb_icon_name($mb_id) . '.gif';
if (file_exists($icon_file)) {
$icon_filemtile = (defined('G5_USE_MEMBER_IMAGE_FILETIME') && G5_USE_MEMBER_IMAGE_FILETIME) ? '?'.filemtime($icon_file) : '';
$icon_filemtile = (defined('G5_USE_MEMBER_IMAGE_FILETIME') && G5_USE_MEMBER_IMAGE_FILETIME) ? '?' . filemtime($icon_file) : '';
$width = $config['cf_member_icon_width'];
$height = $config['cf_member_icon_height'];
$icon_file_url = G5_DATA_URL.'/member/'.$mb_dir.'/'.get_mb_icon_name($mb_id).'.gif'.$icon_filemtile;
$tmp_name .= '<span class="profile_img"><img src="'.$icon_file_url.'" width="'.$width.'" height="'.$height.'" alt=""></span>';
$icon_file_url = G5_DATA_URL . '/member/' . $mb_dir . '/' . get_mb_icon_name($mb_id) . '.gif' . $icon_filemtile;
$name_tag['profile_image'] = '<span class="profile_img"><img src="' . $icon_file_url . '" width="' . $width . '" height="' . $height . '" alt=""></span>';
if ($config['cf_use_member_icon'] == 2) // 회원아이콘+이름
$tmp_name = $tmp_name.' '.$name;
// 회원아이콘+이름
if ($config['cf_use_member_icon'] == 2) {
$name_tag['name'] = $name;
}
} else {
if( defined('G5_THEME_NO_PROFILE_IMG') ){
$tmp_name .= G5_THEME_NO_PROFILE_IMG;
} else if( defined('G5_NO_PROFILE_IMG') ){
$tmp_name .= G5_NO_PROFILE_IMG;
if (defined('G5_THEME_NO_PROFILE_IMG')) {
$name_tag['profile_image'] = G5_THEME_NO_PROFILE_IMG;
} else if (defined('G5_NO_PROFILE_IMG')) {
$name_tag['profile_image'] = G5_NO_PROFILE_IMG;
}
// 회원아이콘+이름
if ($config['cf_use_member_icon'] == 2) {
$name_tag['name'] = $name;
}
if ($config['cf_use_member_icon'] == 2) // 회원아이콘+이름
$tmp_name = $tmp_name.' '.$name;
}
} else {
$tmp_name = $tmp_name.' '.$name;
$name_tag['name'] = $name;
}
$tmp_name .= '</a>';
$title_mb_id = '['.$mb_id.']';
} else {
if(!$bo_table)
if (!$bo_table) {
return $name;
}
$tmp_name = '<a href="'.get_pretty_url($bo_table, '', 'sca='.$sca.'&amp;sfl=wr_name,1&amp;stx='.$name).'" title="'.$name.' 이름으로 검색" class="sv_guest" rel="nofollow" onclick="return false;">'.$name.'</a>';
$title_mb_id = '[비회원]';
$name_tag_open = '<a href="' . get_pretty_url($bo_table, '', 'sca=' . $sca . '&amp;sfl=wr_name,1&amp;stx=' . $name) . '" title="' . $name . ' 이름으로 검색" class="sv_guest" rel="nofollow" onclick="return false;">';
$name_tag['name'] = $name;
}
$str = "<span class=\"sv_wrap\">\n";
$str .= $tmp_name."\n";
if ($mb_id) {
$menus['memo'] = '<a href="' . G5_BBS_URL . '/memo_form.php?me_recv_mb_id=' . $mb_id . '" rel="nofollow" onclick="win_memo(this.href); return false;">쪽지보내기</a>';
}
$str2 = "<span class=\"sv\">\n";
if($mb_id)
$str2 .= "<a href=\"".G5_BBS_URL."/memo_form.php?me_recv_mb_id=".$mb_id."\" onclick=\"win_memo(this.href); return false;\">쪽지보내기</a>\n";
if($email)
$str2 .= "<a href=\"".G5_BBS_URL."/formmail.php?mb_id=".$mb_id."&amp;name=".urlencode($name)."&amp;email=".$email."\" onclick=\"win_email(this.href); return false;\">메일보내기</a>\n";
if($homepage)
$str2 .= "<a href=\"".$homepage."\" target=\"_blank\">홈페이지</a>\n";
if($mb_id)
$str2 .= "<a href=\"".G5_BBS_URL."/profile.php?mb_id=".$mb_id."\" onclick=\"win_profile(this.href); return false;\">자기소개</a>\n";
if($bo_table) {
if($mb_id) {
$str2 .= "<a href=\"".get_pretty_url($bo_table, '', "sca=".$sca."&amp;sfl=mb_id,1&amp;stx=".$en_mb_id)."\">아이디로 검색</a>\n";
if ($email) {
$menus['email'] = '<a href="' . G5_BBS_URL . '/formmail.php?mb_id=' . $mb_id . '&amp;name=' . urlencode($name) . '&amp;email=' . $email . '" onclick="win_email(this.href); return false;" rel="nofollow">메일보내기</a>';
}
if ($homepage) {
$menus['homepage'] = '<a href="' . $homepage . '" rel="nofollow noopener" target="_blank">홈페이지</a>';
}
if ($mb_id) {
$menus['profile'] = '<a href="' . G5_BBS_URL . '/profile.php?mb_id=' . $mb_id . '" onclick="win_profile(this.href); return false;" rel="nofollow">자기소개</a>';
}
if ($bo_table) {
if ($mb_id) {
$menus['search_id'] = '<a href="' . get_pretty_url($bo_table, '', 'sca=' . $sca . '&amp;sfl=mb_id,1&amp;stx=' . $en_mb_id) . '" rel="nofollow">아이디로 검색</a>';
} else {
$str2 .= "<a href=\"".get_pretty_url($bo_table, '', "sca=".$sca."&amp;sfl=wr_name,1&amp;stx=".$name)."\">이름으로 검색</a>\n";
$menus['search_name'] = '<a href="' . get_pretty_url($bo_table, '', 'sca=' . $sca . '&amp;sfl=wr_name,1&amp;stx=' . $name) . '" rel="nofollow">이름으로 검색</a>';
}
}
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";
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";
}
$str2 .= "</span>\n";
$str .= $str2;
$str .= "\n<noscript class=\"sv_nojs\">".$str2."</noscript>";
if ($mb_id) {
$menus['search_all'] = '<a href="' . G5_BBS_URL . '/new.php?mb_id=' . $mb_id . '" class="link_new_page" onclick="check_goto_new(this.href, event);" rel="nofollow">전체게시물</a>';
if ($is_admin == 'super') {
$menus['admin_member_modify'] = '<a href="' . G5_ADMIN_URL . '/member_form.php?w=u&amp;mb_id=' . $mb_id . '" target="_blank" rel="nofollow">회원정보변경</a>';
$menus['admin_member_point'] = '<a href="' . G5_ADMIN_URL . '/point_list.php?sfl=mb_id&amp;stx=' . $mb_id . '" target="_blank" rel="nofollow">포인트내역</a>';
}
}
$name_tag_close = '</a>';
$items = run_replace('member_sideview_items', array(
'name_tag_open' => $name_tag_open,
'name_tag_close' => $name_tag_close,
'name_tag' => $name_tag,
'menus' => $menus
), array(
'mb_id' => $mb_id,
'name' => $name,
'bo_table' => $bo_table,
)
);
$str = '<span class="sv_wrap">';
$str .= $items['name_tag_open'] . implode(' ', $items['name_tag']) . $items['name_tag_close'];
$str2 = '<span class="sv">';
$str2 .= implode("\n", $items['menus']);
$str2 .= '</span>';
$str .= $str2;
$str .= '<noscript class="sv_nojs">' . $str2 . '</noscript>';
$str .= "</span>";
if ($mb_id) {
$cache['id:' . $mb_id] = $str;
} else {
$cache['name:' . $name] = $str;
}
return $str;
}
@@ -1596,7 +1681,7 @@ function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR, $link=null)
$is_debug = get_permission_debug_show();
$start_time = $is_debug ? get_microtime() : 0;
$start_time = ($is_debug || G5_COLLECT_QUERY) ? get_microtime() : 0;
if(function_exists('mysqli_query') && G5_MYSQLI_USE) {
if ($error) {
@@ -1616,18 +1701,68 @@ function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR, $link=null)
}
}
$end_time = $is_debug ? get_microtime() : 0;
$end_time = ($is_debug || G5_COLLECT_QUERY) ? get_microtime() : 0;
$error = null;
$source = array();
if ($is_debug || G5_COLLECT_QUERY) {
if(function_exists('mysqli_error') && G5_MYSQLI_USE) {
$error = array(
'error_code' => mysqli_errno($link),
'error_message' => mysqli_error($link),
);
} else {
$error = array(
'error_code' => mysql_errno($link),
'error_message' => mysql_error($link),
);
}
$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
$found = false;
foreach ($stack as $index => $trace) {
if ($trace['function'] === 'sql_query') {
$found = true;
}
if (isset($stack[$index + 1]) && $stack[$index + 1]['function'] === 'sql_fetch') {
continue;
}
if ($found) {
$trace['file'] = str_replace($_SERVER['DOCUMENT_ROOT'], '', $trace['file']);
$source['file'] = $trace['file'];
$source['line'] = $trace['line'];
$parent = (isset($stack[$index + 1])) ? $stack[$index + 1] : array();
if (isset($parent['function'])) {
if (in_array($trace['function'], array('sql_query', 'sql_fetch')) && (isset($parent['function']) && !in_array($parent['function'], array('sql_fetch', 'include', 'include_once', 'require', 'require_once')))) {
if (isset($parent['class']) && $parent['class']) {
$source['class'] = $parent['class'];
$source['function'] = $parent['function'];
$source['type'] = $parent['type'];
} else {
$source['function'] = $parent['function'];
}
}
}
break;
}
}
if($result && $is_debug) {
// 여기에 실행한 sql문을 화면에 표시하는 로직 넣기
$g5_debug['sql'][] = array(
'sql' => $sql,
'result' => $result,
'success' => !!$result,
'source' => $source,
'error_code' => $error['error_code'],
'error_message' => $error['error_message'],
'start_time' => $start_time,
'end_time' => $end_time,
);
);
}
run_event('sql_query_after', $result, $sql, $start_time, $end_time);
run_event('sql_query_after', $result, $sql, $start_time, $end_time, $error, $source);
return $result;
}
@@ -2484,37 +2619,61 @@ function get_skin_javascript($skin_path, $dir='')
return $str;
}
if (!function_exists('get_called_class')) {
function get_called_class() {
$bt = debug_backtrace();
$lines = file($bt[1]['file']);
preg_match(
'/([a-zA-Z0-9\_]+)::'.$bt[1]['function'].'/',
$lines[$bt[1]['line']-1],
$matches
);
return $matches[1];
}
}
function get_html_process_cls() {
return html_process::getInstance();
}
// HTML 마지막 처리
function html_end()
{
global $html_process;
return $html_process->run();
return get_html_process_cls()->run();
}
function add_stylesheet($stylesheet, $order=0)
{
global $html_process;
if(trim($stylesheet) && method_exists($html_process, 'merge_stylesheet') )
$html_process->merge_stylesheet($stylesheet, $order);
if(trim($stylesheet))
get_html_process_cls()->merge_stylesheet($stylesheet, $order);
}
function add_javascript($javascript, $order=0)
{
global $html_process;
if(trim($javascript) && method_exists($html_process, 'merge_javascript') )
$html_process->merge_javascript($javascript, $order);
if(trim($javascript))
get_html_process_cls()->merge_javascript($javascript, $order);
}
class html_process {
protected $css = array();
protected $js = array();
protected static $id = '0';
private static $instances = array();
protected static $is_end = '0';
protected static $css = array();
protected static $js = array();
function merge_stylesheet($stylesheet, $order)
public static function getInstance($id = '0')
{
$links = $this->css;
self::$id = $id;
if (isset(self::$instances[self::$id])) {
return self::$instances[self::$id];
}
$calledClass = get_called_class();
return self::$instances[self::$id] = new $calledClass;
}
public static function merge_stylesheet($stylesheet, $order)
{
$links = self::$css;
$is_merge = true;
foreach($links as $link) {
@@ -2525,12 +2684,12 @@ class html_process {
}
if($is_merge)
$this->css[] = array($order, $stylesheet);
self::$css[] = array($order, $stylesheet);
}
function merge_javascript($javascript, $order)
public static function merge_javascript($javascript, $order)
{
$scripts = $this->js;
$scripts = self::$js;
$is_merge = true;
foreach($scripts as $script) {
@@ -2541,13 +2700,17 @@ class html_process {
}
if($is_merge)
$this->js[] = array($order, $javascript);
self::$js[] = array($order, $javascript);
}
function run()
public static function run()
{
global $config, $g5, $member;
if (self::$is_end) return; // 여러번 호출해도 한번만 실행되게 합니다.
self::$is_end = 1;
// 현재접속자 처리
$tmp_sql = " select count(*) as cnt from {$g5['login_table']} where lo_ip = '{$_SERVER['REMOTE_ADDR']}' ";
$tmp_row = sql_fetch($tmp_sql);
@@ -2572,7 +2735,7 @@ class html_process {
ob_end_clean();
$stylesheet = '';
$links = $this->css;
$links = self::$css;
if(!empty($links)) {
foreach ($links as $key => $row) {
@@ -2596,7 +2759,7 @@ class html_process {
}
$javascript = '';
$scripts = $this->js;
$scripts = self::$js;
$php_eol = '';
unset($order);
@@ -2630,7 +2793,12 @@ class html_process {
<link rel="stylesheet" href="default.css">
밑으로 스킨의 스타일시트가 위치하도록 하게 한다.
*/
$buffer = preg_replace('#(</title>[^<]*<link[^>]+>)#', "$1$stylesheet", $buffer);
$title_find_pattern = '#(</title>[^<]*<link[^>]+>)#';
if (preg_match($title_find_pattern, $buffer)) {
$buffer = preg_replace($title_find_pattern, "$1$stylesheet", $buffer);
} else { // 패턴이 없다면 자바스크립트 코드 위에 위치하게 합니다.
$javascript = $stylesheet. PHP_EOL. $javascript;
}
/*
</head>
@@ -2653,6 +2821,8 @@ class html_process {
$buffer = preg_replace('#(<title[^>]*>.*?</title>)#', "$meta_tag{$nl}$1", $buffer);
}
$buffer = run_replace('html_process_buffer', $buffer);
return $buffer;
}
}
@@ -3965,7 +4135,7 @@ function get_random_token_string($length=6)
}
function filter_input_include_path($path){
return str_replace('//', '/', $path);
return str_replace('//', '/', strip_tags($path));
}
function option_array_checked($option, $arr=array()){
+2 -2
View File
@@ -195,6 +195,7 @@ class LMS {
foreach($this->Data as $puts) {
fputs($fsocket, $puts);
$gets = '';
while(!$gets) { $gets = fgets($fsocket,32); }
$json = json_decode(substr($puts,6), true);
@@ -206,7 +207,6 @@ class LMS {
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
if(substr($gets,6,2) >= "80") break;
}
$gets = "";
}
fclose($fsocket);
@@ -217,6 +217,7 @@ class LMS {
foreach($this->Data as $puts) {
fputs($fsocket, $puts);
$gets = '';
while(!$gets) { $gets = fgets($fsocket,30); }
$dest = substr($puts,26,11);
if (substr($gets,0,19) == "0223 00".$dest) {
@@ -224,7 +225,6 @@ class LMS {
} else {
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
}
$gets = "";
}
fclose($fsocket);
+2 -2
View File
@@ -198,6 +198,7 @@ class SMS {
foreach($this->Data as $puts) {
fputs($fsocket, $puts);
$gets = '';
while(!$gets) { $gets = fgets($fsocket,32); }
$json = json_decode(substr($puts,6), true);
@@ -209,7 +210,6 @@ class SMS {
$this->Result[$dest] = $dest.":Error(".substr($gets,6,2).")";
if(substr($gets,6,2) >= "80") break;
}
$gets = "";
}
fclose($fsocket);
@@ -226,10 +226,10 @@ class SMS {
foreach($this->Data as $puts) {
$dest = substr($puts,26,11);
fputs($fp,$puts);
$gets = '';
while(!$gets) { $gets=fgets($fp,30); }
if (substr($gets,0,19)=="0223 00".$dest) $this->Result[]=$dest.":".substr($gets,19,10);
else $this->Result[$dest]=$dest.":Error";
$gets="";
}
fclose($fp);
}
+3 -3
View File
@@ -8,8 +8,8 @@ function poll($skin_dir='basic', $po_id=false)
// 투표번호가 넘어오지 않았다면 가장 큰(최근에 등록한) 투표번호를 얻는다
if (!$po_id) {
$row = sql_fetch(" select MAX(po_id) as max_po_id from {$g5['poll_table']} ");
$po_id = $row['max_po_id'];
$row = sql_fetch(" select MAX(po_id) as max_po_id from {$g5['poll_table']} where po_use = 1 ", false);
$po_id = isset($row['max_po_id']) ? $row['max_po_id'] : 0;
}
if(!$po_id)
@@ -36,7 +36,7 @@ function poll($skin_dir='basic', $po_id=false)
}
}
$po = sql_fetch(" select * from {$g5['poll_table']} where po_id = '$po_id' ");
$po = sql_fetch(" select * from {$g5['poll_table']} where po_id = '$po_id' and po_use = 1 ");
ob_start();
include_once ($poll_skin_path.'/poll.skin.php');
+4 -5
View File
@@ -1521,9 +1521,6 @@ function get_sns_share_link($sns, $url, $title, $img)
case 'twitter':
$str = '<a href="https://twitter.com/share?url='.urlencode($url).'&amp;text='.urlencode($title).'" class="share-twitter" target="_blank"><img src="'.$img.'" alt="트위터에 공유"></a>';
break;
case 'googleplus':
$str = '<a href="https://plus.google.com/share?url='.urlencode($url).'" class="share-googleplus" target="_blank"><img src="'.$img.'" alt="구글플러스에 공유"></a>';
break;
case 'kakaotalk':
if($config['cf_kakao_js_apikey'])
$str = '<a href="javascript:kakaolink_send(\''.str_replace('+', ' ', urlencode($title)).'\', \''.urlencode($url).'\');" class="share-kakaotalk"><img src="'.$img.'" alt="카카오톡 링크보내기"></a>';
@@ -2628,10 +2625,10 @@ function make_order_field($data, $exclude)
if(is_array($value)) {
foreach($value as $k=>$v) {
$field .= '<input type="hidden" name="'.$key.'['.$k.']" value="'.$v.'">'.PHP_EOL;
$field .= '<input type="hidden" name="'.$key.'['.$k.']" value="'.get_text($v).'">'.PHP_EOL;
}
} else {
$field .= '<input type="hidden" name="'.$key.'" value="'.$value.'">'.PHP_EOL;
$field .= '<input type="hidden" name="'.$key.'" value="'.get_text($value).'">'.PHP_EOL;
}
}
@@ -2772,6 +2769,8 @@ function check_pay_name_replace($payname, $od=array(), $is_client=0){
return '네이버페이_NHNKCP'.$add_str;
} else if( isset($od['od_other_pay_type']) && ($od['od_other_pay_type'] === 'OT13' || $od['od_other_pay_type'] === 'NHNKCP_KAKAOMONEY') ){
return '카카오페이_NHNKCP'.$add_str;
} else if( isset($od['od_other_pay_type']) && $od['od_other_pay_type'] === 'OT21' ){
return '애플페이_NHNKCP'.$add_str;
}
return 'PAYCO'.$add_str;
+1
View File
@@ -142,6 +142,7 @@ function shop_short_url_clean($string_url, $url, $page_name, $array_page_names){
$add_param .= $add_param ? '&amp;'.$add_qry : '?'.$add_qry;
}
$return_url = '';
foreach($s as $k => $v) { $return_url .= '/'.$v; }
return $host.$return_url.$add_param.$fragment;
+38 -32
View File
@@ -298,63 +298,69 @@ function seo_title_update($db_table, $pk_id, $type='bbs'){
}
}
function get_nginx_conf_rules($return_string=false){
function get_nginx_conf_rules($return_string = false)
{
$get_path_url = parse_url(G5_URL);
$base_path = isset($get_path_url['path']) ? $get_path_url['path'].'/' : '/';
$base_path = isset($get_path_url['path']) ? $get_path_url['path'] . '/' : '/';
$rules = array();
$rules[] = '#### '.G5_VERSION.' nginx rules BEGIN #####';
$rules[] = 'if (!-e $request_filename){';
$rules[] = '#### ' . G5_VERSION . ' nginx rules BEGIN #####';
if( $add_rules = run_replace('add_nginx_conf_rules', '', $get_path_url, $base_path, $return_string) ){
if ($add_rules = run_replace('add_nginx_conf_pre_rules', '', $get_path_url, $base_path, $return_string)) {
$rules[] = $add_rules;
}
$rules[] = "rewrite ^{$base_path}content/([0-9a-zA-Z_]+)$ {$base_path}".G5_BBS_DIR."/content.php?co_id=$1&rewrite=1 break;";
$rules[] = "rewrite ^{$base_path}content/([^/]+)/$ {$base_path}".G5_BBS_DIR."/content.php?co_seo_title=$1&rewrite=1 break;";
$rules[] = "rewrite ^{$base_path}rss/([0-9a-zA-Z_]+)$ {$base_path}".G5_BBS_DIR."/rss.php?bo_table=$1 break;";
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)$ {$base_path}".G5_BBS_DIR."/board.php?bo_table=$1&rewrite=1 break;";
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/write$ {$base_path}".G5_BBS_DIR."/write.php?bo_table=$1&rewrite=1 break;";
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/([^/]+)/$ {$base_path}".G5_BBS_DIR."/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 break;";
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/([0-9]+)$ {$base_path}".G5_BBS_DIR."/board.php?bo_table=$1&wr_id=$2&rewrite=1 break;";
$rules[] = 'if (!-e $request_filename) {';
if ($add_rules = run_replace('add_nginx_conf_rules', '', $get_path_url, $base_path, $return_string)) {
$rules[] = $add_rules;
}
$rules[] = "rewrite ^{$base_path}content/([0-9a-zA-Z_]+)$ {$base_path}" . G5_BBS_DIR . "/content.php?co_id=$1&rewrite=1 break;";
$rules[] = "rewrite ^{$base_path}content/([^/]+)/$ {$base_path}" . G5_BBS_DIR . "/content.php?co_seo_title=$1&rewrite=1 break;";
$rules[] = "rewrite ^{$base_path}rss/([0-9a-zA-Z_]+)$ {$base_path}" . G5_BBS_DIR . "/rss.php?bo_table=$1 break;";
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)$ {$base_path}" . G5_BBS_DIR . "/board.php?bo_table=$1&rewrite=1 break;";
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/write$ {$base_path}" . G5_BBS_DIR . "/write.php?bo_table=$1&rewrite=1 break;";
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/([^/]+)/$ {$base_path}" . G5_BBS_DIR . "/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 break;";
$rules[] = "rewrite ^{$base_path}([0-9a-zA-Z_]+)/([0-9]+)$ {$base_path}" . G5_BBS_DIR . "/board.php?bo_table=$1&wr_id=$2&rewrite=1 break;";
$rules[] = '}';
$rules[] = '#### '.G5_VERSION.' nginx rules END #####';
$rules[] = '#### ' . G5_VERSION . ' nginx rules END #####';
return $return_string ? implode("\n", $rules) : $rules;
}
function get_mod_rewrite_rules($return_string=false){
function get_mod_rewrite_rules($return_string = false)
{
$get_path_url = parse_url(G5_URL);
$base_path = isset($get_path_url['path']) ? $get_path_url['path'].'/' : '/';
$base_path = isset($get_path_url['path']) ? $get_path_url['path'] . '/' : '/';
$rules = array();
$rules[] = '#### '.G5_VERSION.' rewrite BEGIN #####';
$rules[] = '#### ' . G5_VERSION . ' rewrite BEGIN #####';
$rules[] = '<IfModule mod_rewrite.c>';
$rules[] = 'RewriteEngine On';
$rules[] = 'RewriteBase '.$base_path;
$rules[] = 'RewriteBase ' . $base_path;
if ($add_rules = run_replace('add_mod_rewrite_pre_rules', '', $get_path_url, $base_path, $return_string)) {
$rules[] = $add_rules;
}
$rules[] = 'RewriteCond %{REQUEST_FILENAME} -f [OR]';
$rules[] = 'RewriteCond %{REQUEST_FILENAME} -d';
$rules[] = 'RewriteRule ^ - [L]';
if( $add_rules = run_replace('add_mod_rewrite_rules', '', $get_path_url, $base_path, $return_string) ){
if ($add_rules = run_replace('add_mod_rewrite_rules', '', $get_path_url, $base_path, $return_string)) {
$rules[] = $add_rules;
}
$rules[] = 'RewriteRule ^content/([0-9a-zA-Z_]+)$ '.G5_BBS_DIR.'/content.php?co_id=$1&rewrite=1 [QSA,L]';
$rules[] = 'RewriteRule ^content/([^/]+)/$ '.G5_BBS_DIR.'/content.php?co_seo_title=$1&rewrite=1 [QSA,L]';
$rules[] = 'RewriteRule ^rss/([0-9a-zA-Z_]+)$ '.G5_BBS_DIR.'/rss.php?bo_table=$1 [QSA,L]';
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)$ '.G5_BBS_DIR.'/board.php?bo_table=$1&rewrite=1 [QSA,L]';
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/([^/]+)/$ '.G5_BBS_DIR.'/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 [QSA,L]';
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/write$ '.G5_BBS_DIR.'/write.php?bo_table=$1&rewrite=1 [QSA,L]';
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/([0-9]+)$ '.G5_BBS_DIR.'/board.php?bo_table=$1&wr_id=$2&rewrite=1 [QSA,L]';
$rules[] = 'RewriteRule ^content/([0-9a-zA-Z_]+)$ ' . G5_BBS_DIR . '/content.php?co_id=$1&rewrite=1 [QSA,L]';
$rules[] = 'RewriteRule ^content/([^/]+)/$ ' . G5_BBS_DIR . '/content.php?co_seo_title=$1&rewrite=1 [QSA,L]';
$rules[] = 'RewriteRule ^rss/([0-9a-zA-Z_]+)$ ' . G5_BBS_DIR . '/rss.php?bo_table=$1 [QSA,L]';
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)$ ' . G5_BBS_DIR . '/board.php?bo_table=$1&rewrite=1 [QSA,L]';
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/([^/]+)/$ ' . G5_BBS_DIR . '/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1 [QSA,L]';
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/write$ ' . G5_BBS_DIR . '/write.php?bo_table=$1&rewrite=1 [QSA,L]';
$rules[] = 'RewriteRule ^([0-9a-zA-Z_]+)/([0-9]+)$ ' . G5_BBS_DIR . '/board.php?bo_table=$1&wr_id=$2&rewrite=1 [QSA,L]';
$rules[] = '</IfModule>';
$rules[] = '#### '.G5_VERSION.' rewrite END #####';
$rules[] = '#### ' . G5_VERSION . ' rewrite END #####';
return $return_string ? implode("\n", $rules) : $rules;
}
+5 -3
View File
@@ -95,7 +95,8 @@ include_once(G5_LIB_PATH.'/popular.lib.php');
<script>
function fsearchbox_submit(f)
{
if (f.stx.value.length < 2) {
var stx = f.stx.value.trim();
if (stx.length < 2) {
alert("검색어는 두글자 이상 입력하십시오.");
f.stx.select();
f.stx.focus();
@@ -104,8 +105,8 @@ include_once(G5_LIB_PATH.'/popular.lib.php');
// 검색에 많은 부하가 걸리는 경우 이 주석을 제거하세요.
var cnt = 0;
for (var i=0; i<f.stx.value.length; i++) {
if (f.stx.value.charAt(i) == ' ')
for (var i = 0; i < stx.length; i++) {
if (stx.charAt(i) == ' ')
cnt++;
}
@@ -115,6 +116,7 @@ include_once(G5_LIB_PATH.'/popular.lib.php');
f.stx.focus();
return false;
}
f.stx.value = stx;
return true;
}
+23 -23
View File
@@ -156,32 +156,32 @@ $cart_count = sql_num_rows($result);
<div class="go_shopping"><a href="<?php echo G5_SHOP_URL; ?>/" class="btn01">쇼핑 계속하기</a></div>
<?php } else { ?>
<div class="sod_ta_wr">
<?php
$tot_price = $tot_sell_price + $send_cost; // 총계 = 주문상품금액합계 + 배송비
if ($tot_price > 0 || $send_cost > 0) {
?>
<dl id="m_sod_bsk_tot">
<?php if ($send_cost > 0) { // 배송비가 0 보다 크다면 (있다면) ?>
<dt class="sod_bsk_dvr">배송비</dt>
<dd class="sod_bsk_dvr"><strong><?php echo number_format($send_cost); ?> 원</strong></dd>
<?php
$tot_price = $tot_sell_price + $send_cost; // 총계 = 주문상품금액합계 + 배송비
if ($tot_price > 0 || $send_cost > 0) {
?>
<dl id="m_sod_bsk_tot">
<?php if ($send_cost > 0) { // 배송비가 0 보다 크다면 (있다면) ?>
<dt class="sod_bsk_dvr">배송비</dt>
<dd class="sod_bsk_dvr"><strong><?php echo number_format($send_cost); ?> 원</strong></dd>
<?php } ?>
<?php if ($tot_price > 0) { ?>
<dt>포인트</dt>
<dd><strong><?php echo number_format($tot_point); ?> 점</strong></dd>
<dt class="sod_bsk_cnt">총계</dt>
<dd class="sod_bsk_cnt"><strong><?php echo number_format($tot_price); ?></strong> 원</dd>
<?php } ?>
</dl>
<?php } ?>
<?php if ($tot_price > 0) { ?>
<dt>포인트</dt>
<dd><strong><?php echo number_format($tot_point); ?> 점</strong></dd>
<dt class="sod_bsk_cnt">총계</dt>
<dd class="sod_bsk_cnt"><strong><?php echo number_format($tot_price); ?></strong> 원</dd>
<?php } ?>
</dl>
<?php } ?>
<div id="sod_bsk_act" class="btn_confirm">
<div class="total">총계 <strong class="total_cnt"><?php echo number_format($tot_price); ?>원</strong>
<div id="sod_bsk_act" class="btn_confirm">
<div class="total">총계 <strong class="total_cnt"><?php echo number_format($tot_price); ?>원</strong></div>
<input type="hidden" name="url" value="<?php echo G5_SHOP_URL; ?>/orderform.php">
<input type="hidden" name="act" value="">
<input type="hidden" name="records" value="<?php echo $i; ?>">
<button type="button" onclick="return form_check('buy');" class="btn_submit">주문하기</button>
</div>
<input type="hidden" name="url" value="<?php echo G5_SHOP_URL; ?>/orderform.php">
<input type="hidden" name="act" value="">
<input type="hidden" name="records" value="<?php echo $i; ?>">
<button type="button" onclick="return form_check('buy');" class="btn_submit">주문하기</button>
</div>
<?php } ?>
<?php if ($naverpay_button_js) { ?>
+3 -3
View File
@@ -87,7 +87,7 @@ $sql = " select it_id, it_name from {$g5['g5_shop_item_table']}
limit 1 ";
$row = sql_fetch($sql);
if (isset($row['it_id']) && $row['it_id']) {
$next_title = '다음 상품 <span>'.$row['it_name'].'</span>';
$next_title = '다음상품 <span>'.$row['it_name'].'</span>';
$next_href = '<a href="'.shop_item_url($row['it_id']).'" id="siblings_next">';
$next_href2 = '</a>';
} else {
@@ -197,7 +197,7 @@ include_once(G5_MSHOP_PATH.'/_head.php');
include_once(G5_SHOP_PATH.'/settle_naverpay.inc.php');
// 상단 HTML
echo '<div id="sit_hhtml">'.conv_content($it['it_mobile_head_html'], 1).'</div>';
echo run_replace('shop_it_mobile_head_html', '<div id="sit_hhtml">'.conv_content($it['it_mobile_head_html'], 1).'</div>', $it);
?>
<?php if($is_orderable) { ?>
@@ -222,6 +222,6 @@ else
<?php
// 하단 HTML
echo conv_content($it['it_mobile_tail_html'], 1);
echo run_replace('shop_it_mobile_tail_html', conv_content($it['it_mobile_tail_html'], 1), $it);
include_once(G5_MSHOP_PATH.'/_tail.php');
+1
View File
@@ -29,6 +29,7 @@ $param_opt_3 = isset($_REQUEST['param_opt_3']) ? clean_xss_tags($_REQUEST['param
<input type="hidden" name="naverpay_point_direct" value="Y"> <!-- 네이버페이 포인트 결제를 하려면 naverpay_point_direct 를 Y -->
<?php } ?>
<input type="hidden" name="kakaopay_direct" value="A" > <!-- KAKAOPAY 결제창 호출 -->
<input type="hidden" name="applepay_direct" value="A" > <!-- APPLEPAY 결제창 호출 -->
<!-- 주문번호 -->
<input type="hidden" name="ordr_idxx" value="<?php echo $od_id; ?>">
<!-- 인증수단(영문 소문자) * 반드시 대소문자 구분 -->
+17 -7
View File
@@ -67,6 +67,7 @@ include_once('./_common.php');
$payco_direct = isset($_POST["payco_direct"]) ? $_POST["payco_direct"] : ''; // PAYCO 결제창 호출
$naverpay_direct = isset($_POST["naverpay_direct"]) ? $_POST["naverpay_direct"] : ''; // NAVERPAY 결제창 호출
$kakaopay_direct = isset($_POST["kakaopay_direct"]) ? $_POST["kakaopay_direct"] : ''; // KAKAOPAY 결제창 호출
$applepay_direct = isset($_POST["applepay_direct"]) ? $_POST["applepay_direct"] : ''; // APPLEPAY 결제창 호출
/*
* 기타 파라메터 추가 부분 - Start -
@@ -157,7 +158,7 @@ include_once('./_common.php');
{
var v_frm = document.sm_form;
layer_cont_obj = document.getElementById("content");
layer_receipt_obj = document.getElementById("layer_receipt");
@@ -165,9 +166,16 @@ include_once('./_common.php');
layer_receipt_obj.style.display = "block";
v_frm.target = "frm_receipt";
// IOS 환경의 경우 iframe에서 네이버페이와 애플페이의 cors 문제가 일어나므로 iframe으로 열지 않는다.
var isIOS = /iPad|iPhone|iPod/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
// 네이버페이면 반드시 페이지전환 방식이어야 하며, 그 외에는 iframe 방식으로 한다.
if(typeof v_frm.naverpay_direct !== "undefined" && v_frm.naverpay_direct.value == "Y") {
if (isIOS) {
v_frm.target = "";
}
// 네이버페이 또는 애플페이의 경우 반드시 페이지전환 방식이어야 하며, 그 외에는 iframe 방식으로 한다.
if((typeof v_frm.naverpay_direct !== "undefined" && v_frm.naverpay_direct.value == "Y") || (typeof v_frm.applepay_direct !== "undefined" && v_frm.applepay_direct.value == "Y")) {
v_frm.target = "";
}
@@ -267,18 +275,20 @@ if($enc_data != '' && $enc_info != '' && $tran_cd != '') {
?>
<?php if($payco_direct){ ?>
<input type="hidden" name="payco_direct" value="<?php echo $payco_direct; ?>"> <!-- PAYCO 결제창 호출 -->
<input type="hidden" name="payco_direct" value="<?php echo get_text($payco_direct); ?>"> <!-- PAYCO 결제창 호출 -->
<?php } ?>
<?php if($naverpay_direct){ ?>
<input type="hidden" name="naverpay_direct" value="<?php echo $naverpay_direct; ?>"> <!-- 네이버페이 결제창 호출 -->
<input type="hidden" name="naverpay_direct" value="<?php echo get_text($naverpay_direct); ?>"> <!-- 네이버페이 결제창 호출 -->
<?php if(isset($default['de_easy_pay_services']) && in_array('used_nhnkcp_naverpay_point', explode(',', $default['de_easy_pay_services'])) ){ // 네이버페이 포인트 결제 옵션 ?>
<input type="hidden" name="naverpay_point_direct" value="Y"> <!-- 네이버페이 포인트 결제를 하려면 naverpay_point_direct 를 Y -->
<?php } ?>
<?php } ?>
<?php if($applepay_direct === "Y"){ ?>
<input type="hidden" name="applepay_direct" value="<?php echo get_text($applepay_direct); ?>"> <!-- 애플페이 결제창 호출 -->
<?php } ?>
<?php if($kakaopay_direct){ ?>
<input type="hidden" name="kakaopay_direct" value="<?php echo $kakaopay_direct; ?>"> <!-- 카카오페이 결제창 호출 -->
<input type="hidden" name="kakaopay_direct" value="<?php echo get_text($kakaopay_direct); ?>"> <!-- 카카오페이 결제창 호출 -->
<?php } ?>
<!-- 필수 사항 -->
<!-- 요청 구분 -->
+1
View File
@@ -24,6 +24,7 @@ $param_opt_3 = isset($_REQUEST['param_opt_3']) ? clean_xss_tags($_REQUEST['param
<input type="hidden" name="payco_direct" value=""> <!-- PAYCO 결제창 호출 -->
<input type="hidden" name="naverpay_direct" value="A" > <!-- NAVERPAY 결제창 호출 -->
<input type="hidden" name="kakaopay_direct" value="A" > <!-- KAKAOPAY 결제창 호출 -->
<input type="hidden" name="applepay_direct" value="A" > <!-- APPLEPAY 결제창 호출 -->
<!-- 주문번호 -->
<input type="hidden" name="ordr_idxx" value="<?php echo $od_id; ?>">
<!-- 인증수단(영문 소문자) * 반드시 대소문자 구분 -->
+1 -1
View File
@@ -2,7 +2,7 @@
include_once('./_common.php');
// 상품 리스트에서 다른 필드로 정렬을 하려면 아래의 배열 코드에서 해당 필드를 추가하세요.
if( isset($sort) && ! in_array($sort, array('it_sum_qty', 'it_price', 'it_use_avg', 'it_use_cnt', 'it_update_time')) ){
if( isset($sort) && ! in_array($sort, array('it_name', 'it_sum_qty', 'it_price', 'it_use_avg', 'it_use_cnt', 'it_update_time')) ){
$sort='';
}
+6 -6
View File
@@ -1,12 +1,12 @@
<?php
include_once('./_common.php');
$type = isset($_REQUEST['type']) ? preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\s]/", "", $_REQUEST['type']) : '';
if ($type == 1) $g5['title'] = '히트상품';
else if ($type == 2) $g5['title'] = '추천상품';
else if ($type == 3) $g5['title'] = '최신상품';
else if ($type == 4) $g5['title'] = '인기상품';
else if ($type == 5) $g5['title'] = '세일상품';
$type = isset($_REQUEST['type']) ? (int) preg_replace("/[^0-9]/", "", $_REQUEST['type']) : 1;
if ($type === 1) $g5['title'] = '히트상품';
else if ($type === 2) $g5['title'] = '추천상품';
else if ($type === 3) $g5['title'] = '최신상품';
else if ($type === 4) $g5['title'] = '인기상품';
else if ($type === 5) $g5['title'] = '세일상품';
else
alert('상품유형이 아닙니다.');
+1 -1
View File
@@ -111,7 +111,7 @@ $cp_count = get_shop_member_coupon_count($member['mb_id'], true);
<li>
<div class="wish_img"><?php echo $image; ?></div>
<div class="wish_info">
<a href="<?php echo get_shop_item($row['it_id'], true); ?>" class="info_link"><?php echo stripslashes($row['it_name']); ?></a>
<a href="<?php echo shop_item_url($row['it_id']); ?>" class="info_link"><?php echo stripslashes($row['it_name']); ?></a>
<span class="info_date"><?php echo substr($row['wi_time'], 2, 8); ?></span>
</div>
</li>
+20 -1
View File
@@ -624,6 +624,9 @@ if($is_kakaopay_use) {
if( in_array('nhnkcp_kakaopay', $de_easy_pay_service_array) ){
$easypay_prints['nhnkcp_kakaopay'] = '<li><input type="radio" id="od_settle_nhnkcp_kakaopay" name="od_settle_case" data-pay="kakaopay" value="간편결제" > <label for="od_settle_nhnkcp_kakaopay" class="kakaopay_icon nhnkcp_kakaopay lb_icon" title="NHN_KCP - 카카오페이">카카오페이</label></li>';
}
if( in_array('nhnkcp_applepay', $de_easy_pay_service_array) && preg_match('~^(?:(?:(?:Mozilla/\d\.\d\s*\()+|Mobile\s*Safari\s*\d+\.\d+(\.\d+)?\s*)(?:iPhone(?:\s+Simulator)?|iPad|iPod);\s*(?:U;\s*)?(?:[a-z]+(?:-[a-z]+)?;\s*)?CPU\s*(?:iPhone\s*)?(?:OS\s*\d+_\d+(?:_\d+)?\s*)?(?:like|comme)\s*Mac\s*O?S?\s*X(?:;\s*[a-z]+(?:-[a-z]+)?)?\)\s*)?(?:AppleWebKit/\d+(?:\.\d+(?:\.\d+)?|\s*\+)?\s*)?(?:\(KHTML,\s*(?:like|comme)\s*Gecko\s*\)\s*)?(?:Version/\d+\.\d+(?:\.\d+)?\s*)?(?:Mobile/\w+\s*)?(?:Safari/\d+\.\d+(?:\.\d+)?.*)?$~', $_SERVER['HTTP_USER_AGENT']) ){
$easypay_prints['nhnkcp_applepay'] = '<li><input type="radio" id="od_settle_nhnkcp_applepay" name="od_settle_case" data-pay="applepay" value="간편결제" > <label for="od_settle_nhnkcp_applepay" class="applepay_icon nhnkcp_applepay lb_icon" title="NHN_KCP - 애플페이">애플페이</label></li>';
}
} else {
$easypay_prints[strtolower($pg_easy_pay_name)] = '<li><input type="radio" id="od_settle_easy_pay" name="od_settle_case" value="간편결제" '.$checked.'> <label for="od_settle_easy_pay" class="'.$pg_easy_pay_name.' lb_icon">'.$pg_easy_pay_name.'</label></li>';
}
@@ -922,7 +925,7 @@ $(function() {
$("#od_coupon_frm").remove();
$("#od_coupon_btn").text("변경").focus();
if(!$("#od_coupon_cancel").length)
$("#od_coupon_btn").after("<button type=\"button\" id=\"od_coupon_cancel\" class=\"cp_cancel1\">취소</button>");
$("#od_coupon_btn").after("<button type=\"button\" id=\"od_coupon_cancel\" class=\"cp_cancel cp_cancel1\">취소</button>");
});
$(document).on("click", "#od_coupon_close", function() {
@@ -1233,6 +1236,7 @@ var temp_point = 0;
function pay_approval()
{
// 무통장 아닌 가상계좌, 계좌이체, 휴대폰, 신용카드, 기타 등등 을 처리한다.
// 재고체크
var stock_msg = order_stock_check();
if(stock_msg != "") {
@@ -1299,6 +1303,7 @@ function pay_approval()
if(typeof f.payco_direct !== "undefined") f.payco_direct.value = "";
if(typeof f.naverpay_direct !== "undefined") f.naverpay_direct.value = "A";
if(typeof f.kakaopay_direct !== "undefined") f.kakaopay_direct.value = "A";
if(typeof f.applepay_direct !== "undefined") f.applepay_direct.value = "A";
if(typeof f.ActionResult !== "undefined") f.ActionResult.value = "";
if(typeof f.pay_method !== "undefined") f.pay_method.value = "";
@@ -1311,6 +1316,8 @@ function pay_approval()
}
} else if(nhnkcp_easy_pay === "kakaopay"){
if(typeof f.kakaopay_direct !== "undefined") f.kakaopay_direct.value = "Y";
} else if(nhnkcp_easy_pay === "applepay"){
if(typeof f.applepay_direct !== "undefined") f.applepay_direct.value = "Y";
} else {
if(typeof f.payco_direct !== "undefined") f.payco_direct.value = "Y";
}
@@ -1318,6 +1325,10 @@ function pay_approval()
if(typeof f.ActionResult !== "undefined") f.ActionResult.value = "CARD"; // 대소문자 구분
if(typeof f.pay_method !== "undefined") f.pay_method.value = "card"; // 대소문자 구분
//if(nhnkcp_easy_pay === "applepay"){
// if(typeof f.ActionResult !== "undefined") f.ActionResult.value = "card";
// if(typeof f.pay_method !== "undefined") f.pay_method.value = "CARD";
//}
}
<?php } else if($default['de_pg_service'] == 'lg') { ?>
@@ -1435,6 +1446,14 @@ function pay_approval()
function forderform_check()
{
// 무통장만 여기에처 처리한다.
// 재고체크
var stock_msg = order_stock_check();
if(stock_msg != "") {
alert(stock_msg);
return false;
}
var f = document.forderform;
// 필드체크
@@ -12,6 +12,7 @@ if($config['cf_cert_use'] && ($config['cf_cert_simple'] || $config['cf_cert_ipin
<div id="find_info" class="new_win<?php if($config['cf_cert_use'] != 0 && $config['cf_cert_find'] != 0) { ?> cert<?php } ?>">
<div class="new_win_con">
<form name="fpasswordlost" action="<?php echo $action_url ?>" onsubmit="return fpasswordlost_submit(this);" method="post" autocomplete="off">
<input type="hidden" name="cert_no" value="">
<h3>이메일로 찾기</h3>
<fieldset id="info_fs">
<p>
+3 -3
View File
@@ -149,9 +149,9 @@
#bo_w .bo_w_select select {border:1px solid #d0d3db;background:#fff;width:100%}
#bo_w .bo_w_link label {position:absolute;top:1px;left:1px;border-radius:3px 0 0 3px;width:45px;height:43px;line-height:43px;font-size:1.2em;text-align:center;color:#b2b2b2}
#bo_w .bo_w_link .frm_input {padding-left:50px}
#bo_w .bo_w_flie .lb_icon {position:absolute;top:0px;left:0px;border-radius:3px 0 0 3px;width:45px;height:43px;line-height:43px;font-size:1.2em;text-align:center;color:#b2b2b2}
#bo_w .bo_w_flie .frm_file {padding-left:50px}
#bo_w .bo_w_flie .file_wr {position:relative;color:#000;vertical-align:middle;margin:0}
#bo_w .bo_w_flie .lb_icon, .form_01 .bo_w_flie .lb_icon {position:absolute;top:0px;left:0px;border-radius:3px 0 0 3px;width:45px;height:43px;line-height:43px;font-size:1.2em;text-align:center;color:#b2b2b2}
#bo_w .bo_w_flie .frm_file, .form_01 .bo_w_flie .frm_file {padding-left:50px}
#bo_w .bo_w_flie .file_wr, .form_01 .bo_w_flie .file_wr {position:relative;color:#000;vertical-align:middle;margin:0}
#bo_w .bo_w_flie .frm_input {margin:5px 0 0}
.filebox .btn_file {display:inline-block;position:absolute;right:8px;top:8px;border:1px solid #3a8afd;border-radius:3px;width:60px;height:30px;color:#3a8afd;font-size:1em;line-height:30px;font-weight:bold;background:#fff;text-align:center;vertical-align:middle;cursor:pointer}
+36
View File
@@ -11,7 +11,43 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
</div>
</h2>
<div id="ans_con">
<?php
// 파일 출력
if(isset($answer['img_count']) && $answer['img_count']) {
echo "<div id=\"bo_v_img\">\n";
for ($i=0; $i<$answer['img_count']; $i++) {
echo get_view_thumbnail($answer['img_file'][$i], $qaconfig['qa_image_width']);
}
echo "</div>\n";
}
?>
<?php echo get_view_thumbnail(conv_content($answer['qa_content'], $answer['qa_html']), $qaconfig['qa_image_width']); ?>
<?php if(isset($answer['download_count']) && $answer['download_count']) { ?>
<!-- 첨부파일 시작 { -->
<section id="bo_v_file">
<h2>첨부파일</h2>
<ul>
<?php
// 가변 파일
for ($i=0; $i<$answer['download_count']; $i++) {
?>
<li>
<i class="fa fa-download" aria-hidden="true"></i>
<a href="<?php echo $answer['download_href'][$i]; ?>" class="view_file_download" download>
<strong><?php echo $answer['download_source'][$i] ?></strong>
</a>
</li>
<?php
}
?>
</ul>
</section>
<!-- } 첨부파일 끝 -->
<?php } ?>
</div>
<button id="btn_ans_btn" class="btn_b03 btn"><i class="fa fa-ellipsis-v" aria-hidden="true"></i><span class="sound_only">게시판 리스트 옵션</span></button>
+16 -1
View File
@@ -9,7 +9,7 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<h2>답변등록</h2>
<form name="fanswer" method="post" action="./qawrite_update.php" onsubmit="return fwrite_submit(this);" autocomplete="off">
<form name="fanswer" method="post" action="./qawrite_update.php" onsubmit="return fwrite_submit(this);" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="qa_id" value="<?php echo $view['qa_id']; ?>">
<input type="hidden" name="w" value="a">
<input type="hidden" name="sca" value="<?php echo $sca ?>">
@@ -46,6 +46,21 @@ if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
<label for="qa_content" class="sound_only">내용<strong>필수</strong></label>
<?php echo $editor_html; // 에디터 사용시는 에디터로, 아니면 textarea 로 노출 ?>
</li>
<li class="bo_w_flie">
<div class="file_wr filebox">
<input type="text" class="fileName" readonly="readonly" placeholder="파일을 첨부하세요">
<label for="bf_file[1]"><i class="fa fa-download lb_icon" aria-hidden="true"></i><span class="sound_only">파일 #1</span><span class="btn_file">파일첨부</span></label>
<input type="file" name="bf_file[1]" id="bf_file[1]" title="파일첨부 1 : 용량 <?php echo $upload_max_filesize; ?> 이하만 업로드 가능" class="frm_file uploadBtn">
</div>
<br>
<div class="file_wr filebox">
<input type="text" class="fileName" readonly="readonly" placeholder="파일을 첨부하세요">
<label for="bf_file[2]"><i class="fa fa-download lb_icon" aria-hidden="true"></i><span class="sound_only">파일 #2</span><span class="btn_file">파일첨부</span></label>
<input type="file" name="bf_file[2]" id="bf_file[2]" title="파일첨부 2 : 용량 <?php echo $upload_max_filesize; ?> 이하만 업로드 가능" class="frm_file uploadBtn">
</div>
</li>
</ul>
</div>
+5 -3
View File
@@ -45,7 +45,8 @@ if ($stx) {
<script>
function fsearch_submit(f)
{
if (f.stx.value.length < 2) {
var stx = f.stx.value.trim();
if (stx.length < 2) {
alert("검색어는 두글자 이상 입력하십시오.");
f.stx.select();
f.stx.focus();
@@ -54,8 +55,8 @@ if ($stx) {
// 검색에 많은 부하가 걸리는 경우 이 주석을 제거하세요.
var cnt = 0;
for (var i=0; i<f.stx.value.length; i++) {
if (f.stx.value.charAt(i) == ' ')
for (var i = 0; i < stx.length; i++) {
if (stx.charAt(i) == ' ')
cnt++;
}
@@ -65,6 +66,7 @@ if ($stx) {
f.stx.focus();
return false;
}
f.stx.value = stx;
f.action = "";
return true;
+1 -2
View File
@@ -7,7 +7,7 @@ add_javascript('<script src="'.G5_JS_URL.'/jquery.bxslider.js"></script>', 10);
?>
<?php if($config['cf_kakao_js_apikey']) { ?>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js" async></script>
<script src="<?php echo G5_JS_URL; ?>/kakaolink.js"></script>
<script>
// 사용할 앱의 Javascript 키를 설정해 주세요.
@@ -77,7 +77,6 @@ add_javascript('<script src="'.G5_JS_URL.'/jquery.bxslider.js"></script>', 10);
<div class="sns_area">
<?php echo get_sns_share_link('facebook', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/facebook.png'); ?>
<?php echo get_sns_share_link('twitter', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/twitter.png'); ?>
<?php echo get_sns_share_link('googleplus', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/gplus.png'); ?>
<?php echo get_sns_share_link('kakaotalk', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/sns_kakao.png'); ?>
<?php
$href = G5_SHOP_URL.'/iteminfo.php?it_id='.$it_id;
+1 -2
View File
@@ -9,7 +9,7 @@ add_javascript('<script src="'.G5_JS_URL.'/shop.list.action.js"></script>', 10);
?>
<?php if(!defined('G5_IS_SHOP_AJAX_LIST') && $config['cf_kakao_js_apikey']) { ?>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js" async></script>
<script src="<?php echo G5_JS_URL; ?>/kakaolink.js"></script>
<script>
// 사용할 앱의 Javascript 키를 설정해 주세요.
@@ -116,7 +116,6 @@ foreach((array) $list as $row){
echo "<h3>SNS 공유</h3>";
echo get_sns_share_link('facebook', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/facebook.png');
echo get_sns_share_link('twitter', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/twitter.png');
echo get_sns_share_link('googleplus', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/gplus.png');
echo get_sns_share_link('kakaotalk', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/sns_kakao.png');
echo "<button type=\"button\" class=\"sct_sns_cls\"><span class=\"sound_only\">닫기</span><i class=\"fa fa-times\" aria-hidden=\"true\"></i></button>";
echo "</div>\n";
+1 -2
View File
@@ -9,7 +9,7 @@ add_javascript('<script src="'.G5_JS_URL.'/shop.list.action.js"></script>', 10);
?>
<?php if($config['cf_kakao_js_apikey']) { ?>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js" async></script>
<script src="<?php echo G5_JS_URL; ?>/kakaolink.js"></script>
<script>
// 사용할 앱의 Javascript 키를 설정해 주세요.
@@ -108,7 +108,6 @@ foreach((array) $list as $row){
echo "<h3>SNS 공유</h3>";
echo get_sns_share_link('facebook', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/facebook.png');
echo get_sns_share_link('twitter', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/twitter.png');
echo get_sns_share_link('googleplus', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/gplus.png');
echo get_sns_share_link('kakaotalk', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/sns_kakao.png');
echo "<button type=\"button\" class=\"sct_sns_cls\"><span class=\"sound_only\">닫기</span><i class=\"fa fa-times\" aria-hidden=\"true\"></i></button>";
echo "</div>\n";
+1 -2
View File
@@ -10,7 +10,7 @@ add_javascript('<script src="'.G5_JS_URL.'/shop.list.action.js"></script>', 10);
<script src="<?php echo G5_JS_URL ?>/jquery.fancylist.js"></script>
<?php if($config['cf_kakao_js_apikey']) { ?>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js" async></script>
<script src="<?php echo G5_JS_URL; ?>/kakaolink.js"></script>
<script>
// 사용할 앱의 Javascript 키를 설정해 주세요.
@@ -104,7 +104,6 @@ foreach((array) $list as $row){
echo "<div class=\"sct_sns\" style=\"top:{$sns_top}px\">";
echo get_sns_share_link('facebook', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/facebook.png');
echo get_sns_share_link('twitter', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/twitter.png');
echo get_sns_share_link('googleplus', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/gplus.png');
echo get_sns_share_link('kakaotalk', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/sns_kakao.png');
echo "</div>\n";
}
+1 -2
View File
@@ -10,7 +10,7 @@ add_javascript('<script src="'.G5_JS_URL.'/shop.list.action.js"></script>', 10);
?>
<?php if($config['cf_kakao_js_apikey']) { ?>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js" async></script>
<script src="<?php echo G5_JS_URL; ?>/kakaolink.js"></script>
<script>
// 사용할 앱의 Javascript 키를 설정해 주세요.
@@ -104,7 +104,6 @@ foreach((array) $list as $row){
echo "<div class=\"sct_sns\" style=\"top:{$sns_top}px\">";
echo get_sns_share_link('facebook', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/facebook.png');
echo get_sns_share_link('twitter', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/twitter.png');
echo get_sns_share_link('googleplus', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/gplus.png');
echo get_sns_share_link('kakaotalk', $sns_url, $sns_title, G5_MSHOP_SKIN_URL.'/img/sns_kakao.png');
echo "</div>\n";
}
+1 -1
View File
@@ -7,7 +7,7 @@ add_stylesheet('<link rel="stylesheet" href="'.G5_MSHOP_SKIN_URL.'/style.css">',
<script src="<?php echo G5_JS_URL ?>/jquery.fancylist.js"></script>
<?php if($config['cf_kakao_js_apikey']) { ?>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js" async></script>
<script src="<?php echo G5_JS_URL; ?>/kakaolink.js"></script>
<script>
// 사용할 앱의 Javascript 키를 설정해 주세요.
-4
View File
@@ -69,7 +69,6 @@
.sct_sns a {display:inline-block;margin:0 2px;width:28px;height:28px;line-height:28px;border-radius:3px;font-size:0;text-align:center}
.share-facebook {background:#415b92}
.share-twitter {background:#35b3dc}
.share-googleplus {background:#d5503a}
.share-kakaotalk {background:#ffeb00}
.sct_sns img {width:20px;height:auto;vertical-align:middle}
.sct_sns button {margin:0 4px 0 0;padding:0;border:0}
@@ -103,7 +102,6 @@
.sct_10 .sct_sns a {display:inline-block;border-radius:50%;width:50px;height:50px;line-height:25px;text-align:center;padding:13px 0;margin:20px 5px}
.sct_10 .sct_sns .share-facebook {background:#415b92}
.sct_10 .sct_sns .share-twitter {background:#35b3dc}
.sct_10 .sct_sns .share-googleplus {background:#ea3838}
.sct_10 .sct_sns img {width:24px}
.sct_10 .sct_sns_bg {background:rgba(0,0,0,0.1);width:100%;height:100%}
.sct_10 .sct_sns_cls {position:absolute;right:0;top:0;color:#b5b8bb;border:0;padding:12px 15px;font-size:16px;background:#fff;margin:0;height:50px}
@@ -129,7 +127,6 @@
.sct_10_list .sct_sns a {display:inline-block;border-radius:50%;width:50px;height:50px;line-height:25px;text-align:center;padding:13px 0;margin:20px 5px}
.sct_10_list .sct_sns .share-facebook {background:#415b92}
.sct_10_list .sct_sns .share-twitter {background:#35b3dc}
.sct_10_list .sct_sns .share-googleplus {background:#ea3838}
.sct_10_list .sct_sns img {width:24px}
.sct_10_list .sct_sns_bg {background:rgba(0,0,0,0.1);width:100%;height:100%}
.sct_10_list .sct_sns_cls {position:absolute;right:0;top:0;color:#b5b8bb;border:0;padding:12px 15px;font-size:16px;background:#fff}
@@ -332,7 +329,6 @@
#sit_star_sns .sns_area a {display:inline-block;width:35px;height:35px;line-height:35px;background:#eee;text-align:center;border-radius:50%;padding-top:5px}
#sit_star_sns .sns_area a img {width:24px;height:auto}
#sit_star_sns .sns_area #sit_btn_rec {font-size:15px;padding-top:0}
#sit_star_sns .sns_area .share-googleplus {background:#ea3838}
#sit_star_sns .sns_area .share-facebook {background:#415b92}
#sit_star_sns .sns_area .share-twitter {background:#35b3dc}
+21 -1
View File
@@ -54,7 +54,27 @@ add_stylesheet('<link rel="stylesheet" href="'.G5_PLUGIN_URL.'/debugbar/style.cs
?>
<tr>
<td scope="row" data-label="실행순서"><?php echo $key; ?></td>
<td class="left" data-label="쿼리문"><?php echo $query['sql']; ?></td>
<td class="left" data-label="쿼리문">
<?php
if(isset($query['source']['class'])) {
$function = "{$query['source']['class']}{$query['source']['type']}{$query['source']['function']}()";
} else if (isset($query['source']['function'])) {
$function = "{$query['source']['function']}()";
} else {
$function = null;
}
?>
<p class="query_source">
<em><?php echo "{$query['source']['file']}:{$query['source']['line']}" ?></em><br>
<?php if($function) { echo "<em>{$function}</em><br>"; } ?>
</p>
<?php
echo "<p class=\"query_sql\">{$query['sql']}</p>";
if(!$query['success']) {
echo '<p class="query_error_message">오류: [' . $query['error_code'] . '] ' . $query['error_message'] . '</p>';
}
?>
</td>
<td data-label="실행시간"><?php echo $show_excuted_time.' ms'; ?></td>
</tr>
<?php } ?>
+4 -2
View File
@@ -23,12 +23,14 @@
.debug_table{border:1px solid #ccc;border-collapse:collapse;margin:0;padding:0;width:100%}
.debug_table caption{display:none}
.debug_table tr{background:#f8f8f8;border:1px solid #ddd;padding:.35em}
.debug_table th,.debug_table td{padding:.625em;text-align:center}
.debug_table th,.debug_table td{padding:.625em;text-align:center;white-space:nowrap;}
.debug_table tbody tr:hover td{background:#c7d4dd!important}
.debug_table tbody tr:nth-child(even){background-color:#fff}
.debug_table td.left{text-align:left}
.debug_table td.left{text-align:left;font-family:monospace;white-space:initial}
.debug_table th{font-size:.85em;letter-spacing:.1em;text-transform:uppercase}
.debug_table td img{text-align:center}
.debug_table .query_sql {font-weight:bold;margin:.5em 0}
.debug_table .query_error_message {color:red;margin:.5em 0}
.debug_table.hook_table th, .debug_table.hook_table td {text-align:left;border:1px solid #ddd;}
.hook_table .hook_count{margin-left:3px;font-size:0.9em;color:#7cbc0a}
+3 -2
View File
@@ -1,9 +1,9 @@
// ================================================================
// CHEditor 5.1.9.3-p4
// CHEditor 5.1.9.4
// ----------------------------------------------------------------
// Homepage: http://www.chcode.com
// EMail: support@chcode.com
// Copyright (c) 1997-2020 CHSOFT
// Copyright (c) 1997-2021 CHSOFT
// ================================================================
var GB = {
colors: ['#000000','#313131','#434343','#535353','#666666','#999999','#a0a0a0','#b5b5b5','#c0c0c0','#dcdcdc','#eeeeee','#ffffff',
@@ -568,6 +568,7 @@ function setConfig() {
this.cheditor.tabSpaces = '';
this.cheditor.modifyState = false;
this.cheditor.tabSpaces = new Array(this.config.tabIndent + 1).join(' ');
this.URI = URI;
}
function cheditor() {
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

@@ -1,15 +1,15 @@
<?php
include_once("_common.php");
define("CHE_UPLOAD_IMG_CHECK", 1); // 이미지 파일을 썸네일 할수 있는지 여부를 체크합니다. ( 해당 파일이 이미지 파일인지 체크합니다. 1이면 사용, 0이면 사용 안함 )
define("CHE_UPLOAD_IMG_CHECK", 1); // 이미지 파일을 썸네일 할수 있는지 여부를 체크합니다. ( 해당 파일이 이미지 파일인지 체크합니다. 1이면 사용, 0이면 사용 안함 )
// ---------------------------------------------------------------------------
# 이미지가 저장될 디렉토리의 전체 경로를 설정합니다.
# 끝에 슬래쉬(/)는 붙이지 않습니다.
# 주의: 이 경로의 접근 권한은 쓰기, 읽기가 가능하도록 설정해 주십시오.
# 이미지가 저장될 디렉토리의 전체 경로를 설정합니다.
# 끝에 슬래쉬(/)는 붙이지 않습니다.
# 주의: 이 경로의 접근 권한은 쓰기, 읽기가 가능하도록 설정해 주십시오.
# data/editor 디렉토리가 없는 경우가 있을수 있으므로 디렉토리를 생성하는 코드를 추가함. kagla 140305
# data/editor 디렉토리가 없는 경우가 있을수 있으므로 디렉토리를 생성하는 코드를 추가함. kagla 140305
@mkdir(G5_DATA_PATH.'/'.G5_EDITOR_DIR, G5_DIR_PERMISSION);
@chmod(G5_DATA_PATH.'/'.G5_EDITOR_DIR, G5_DIR_PERMISSION);
@@ -24,8 +24,8 @@ define("SAVE_DIR", $data_dir);
@mkdir(SAVE_DIR, G5_DIR_PERMISSION);
@chmod(SAVE_DIR, G5_DIR_PERMISSION);
# 위에서 설정한 'SAVE_DIR'의 URL을 설정합니다.
# 끝에 슬래쉬(/)는 붙이지 않습니다.
# 위에서 설정한 'SAVE_DIR'의 URL을 설정합니다.
# 끝에 슬래쉬(/)는 붙이지 않습니다.
define("SAVE_URL", $data_url);
@@ -93,9 +93,9 @@ if ($found != true || $filename_len != 23) {
exit;
}
// 저장 파일 이름: 년월일시분초_렌덤문자8자
// 저장 파일 이름: 년월일시분초_렌덤문자8자
// 20140327125959_abcdefghi.jpg
// 원본 파일 이름: $_POST["origname"]
// 원본 파일 이름: $_POST["origname"]
$filename = che_replace_filename($filename);
$savefile = SAVE_DIR . '/' . $filename;
+6 -6
View File
@@ -1,9 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html lang="ko">
<head>
<title>CHEditor</title>
<meta name="robots" content="noindex, nofollow" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="../css/dialog.css" />
<script src="js/dialog.js" type="text/javascript"></script>
<script src="js/flash.js" type="text/javascript"></script>
@@ -11,12 +11,12 @@
<body>
<div class="flash-movie-source">
<div style="margin-bottom: 10px;width: 562px">
<span class="font-normal">&lt;동영상 소스 코드&gt; iframe 또는 object 태그를 입력하세요.</span>
<span class="font-normal">동영상 링크 URL 또는 IFRAME이나 EMBED 소스 코드를 붙여 넣거나 입력하세요.</span>
</div>
<textarea name="embed" id="fm_embed" style="height:40px;width:99%"></textarea>
<textarea name="source" id="fm_source" style="height:40px;width:99%"></textarea>
</div>
<div class="spacer"></div>
<div class="flash-player-wrapper" id="fm_player"></div>
<div class="bottom-status" id="buttonWrapper"></div>
</body>
</html>
</html>
@@ -6,13 +6,13 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="../css/dialog.css" />
<script src="js/dialog.js" type="text/javascript"></script>
<script src="https://maps.google.com/maps/api/js?V=3&language=ko&region=KR" type="text/javascript"></script>
<script src="https://maps.google.com/maps/api/js?V=3&language=ko&region=KR&key=JS_MAPS_API_KEY" type="text/javascript"></script>
<script src="js/google_map.js" type="text/javascript"></script>
</head>
<body onload="initMap(5)">
<div style="padding-left:10px">
<span class="font-normal">찾을 주소: </span>
<input type="text" name="address" id="fm_address" value="서울" />
<input type="text" name="address" id="fm_address" title="찾을 주소" value="서울" />
<span id="map_search"></span>
<div class="font-normal" style="margin: 5px 0px 0px 58px;color:#666">찾으실 도로명 주소, 지번 또는 건물명을 입력하세요.</div>
</div>
@@ -64,6 +64,7 @@
<div style="margin-top:5px;font-size: 12px">
<input type="checkbox" name="use_spacer" value="1" checked="checked" />사진 여백 넣기
</div>
<div id="webgl_logo_wrapper" class="webgl_logo_wrapper" style="text-align: center;"></div>
</form>
</div>
</div>
+133 -29
View File
@@ -1,5 +1,5 @@
// ================================================================
// CHEditor 5
// Movie
// ================================================================
var button = [
{ alt : '', img : 'play.gif', cmd : doPlay },
@@ -7,7 +7,10 @@ var button = [
{ alt : '', img : 'cancel.gif', cmd : popupClose }
],
oEditor = null,
iframeSource = false;
iframeSource = null,
showMovie = false,
defaultMovieWidth = 640,
defaultMovieHeight = 360;
function init(dialog) {
var dlg = new Dialog(this);
@@ -17,52 +20,65 @@ function init(dialog) {
dlg.setDialogHeight();
}
function doPlay()
{
var elem = oEditor.trimSpace(document.getElementById("fm_embed").value),
embed = null, div = document.createElement('div'),
pos, str, object, child, movieHeight, movieWidth, i, params = [];
function getSource() {
return oEditor.trimSpace(document.getElementById("fm_source").value);
}
elem = oEditor.trimSpace(elem);
if (elem == '') {
function doPlay() {
var embed = null,
div = document.createElement('div'),
pos, str, object, child, movieHeight, movieWidth, params = [], showWrapper,
source = getSource(), iframe;
showMovie = true;
if (source === '') {
return;
}
if (elem.toLowerCase().indexOf("iframe") !== -1) {
document.getElementById('fm_player').innerHTML = elem;
iframeSource = true;
showWrapper = document.getElementById('fm_player');
if (source.toLowerCase().indexOf("iframe") !== -1) {
showWrapper.innerHTML = source;
iframeSource = source;
return;
}
pos = elem.toLowerCase().indexOf("embed");
if (/https?:\/\//.test(source)) {
iframe = createIframeElement(defaultMovieWidth, defaultMovieHeight, source);
if (iframe) {
showWrapper.innerHTML = '';
showWrapper.appendChild(iframe);
iframeSource = iframe;
}
return;
}
pos = source.toLowerCase().indexOf("embed");
if (pos !== -1) {
str = elem.substr(pos);
str = source.substr(pos);
pos = str.indexOf(">");
div.innerHTML = "<" + str.substr(0, pos) + ">";
embed = div.firstChild;
} else {
div.innerHTML = elem;
div.innerHTML = source;
object = div.getElementsByTagName('OBJECT')[0];
if (object && object.hasChildNodes()) {
child = object.firstChild;
movieWidth = (isNaN(object.width) !== true) ? object.width : 320;
movieHeight = (isNaN(object.height) !== true) ? object.height : 240;
movieWidth = (isNaN(object.width) !== true) ? object.width : defaultMovieWidth;
movieHeight = (isNaN(object.height) !== true) ? object.height : defaultMovieHeight;
do {
if ((child.nodeName === 'PARAM') && (typeof child.name !== 'undefined') && (typeof child.value !== 'undefined')) {
params.push({key: (child.name == 'movie') ? 'src' : child.name, val: child.value});
if (child.nodeName === 'PARAM' && typeof child.name !== 'undefined' && typeof child.value !== 'undefined')
{
params.push({
key: child.name === 'movie' ? 'src' : child.name,
val: child.value
});
}
child = child.nextSibling;
} while (child);
if (params.length > 0) {
embed = document.createElement('embed');
embed.setAttribute("width", movieWidth);
embed.setAttribute("height", movieHeight);
for (i = 0; i < params.length; i++) {
embed.setAttribute(params[i].key, params[i].val);
}
embed.setAttribute("type", "application/x-shockwave-flash");
embed = createEmbedElement(movieWidth, movieHeight, params, null);
}
}
}
@@ -72,6 +88,89 @@ function doPlay()
}
}
function createIframeElement(width, height, src) {
var iframe = document.createElement('iframe'), uri, query, id, movie = null;
uri = new oEditor.URI(src);
if (uri.path && uri.path.charAt(0) !== '/') {
uri.path = '/' + uri.path;
}
switch (uri.authority) {
case 'youtu.be' :
case 'youtube.com':
case 'www.youtube.com':
if (uri.path === '/watch' && uri.query) {
query = uri.query.split('=');
if (query[0] === 'v') {
movie = '/' + query[1];
}
}
if (!movie && uri.path) {
movie = uri.path;
if (uri.query) {
movie += '?' + uri.query;
}
}
if (movie) {
movie = 'https://www.youtube.com/embed' + movie;
}
break;
case 'vimeo.com' :
if (uri.path) {
movie = 'https://player.vimeo.com/video' + uri.path;
}
break;
case 'afree.ca' :
if (uri.path) {
movie = 'http://play.afreecatv.com' + uri.path + '/embed';
}
break;
case 'tv.naver.com' :
if (uri.path) {
id = uri.path.substring(uri.path.lastIndexOf('/'));
movie = 'https://tv.naver.com/embed' + id + '?autoPlay=true';
}
break;
case 'tv.kakao.com' :
if (uri.path) {
id = uri.path.substring(uri.path.lastIndexOf('/'));
movie = 'https://tv.kakao.com/embed/player/cliplink' + id;
}
break;
default :
movie = null;
}
if (!movie) {
return null;
}
iframe.setAttribute('width', width);
iframe.setAttribute('height', height);
iframe.setAttribute('frameborder', "0");
iframe.setAttribute('allowfullscreen', "true");
iframe.setAttribute('src', movie);
return iframe;
}
function createEmbedElement(width, height, params, src) {
var embed = document.createElement('embed'), i;
embed.setAttribute("type", "application/x-shockwave-flash");
embed.setAttribute('width', width);
embed.setAttribute('height', height);
if (src) {
embed.setAttribute('src', src);
}
for (i = 0; i < params.length; i++) {
embed.setAttribute(params[i].key, params[i].val);
}
return embed;
}
function popupClose() {
document.getElementById('fm_player').innerHTML = '';
oEditor.popupWinCancel();
@@ -79,13 +178,17 @@ function popupClose() {
function doSubmit()
{
var source = String(oEditor.trimSpace(document.getElementById("fm_embed").value));
var source = getSource();
if (source === '') {
popupClose();
}
if (!showMovie) {
document.getElementById('fm_player').style.visibility = 'hidden';
doPlay();
}
if (iframeSource || source.indexOf("iframe") !== -1) {
oEditor.insertHtmlPopup(source);
if (iframeSource) {
oEditor.insertHtmlPopup(iframeSource);
} else {
oEditor.insertFlash(source);
}
@@ -93,3 +196,4 @@ function doSubmit()
document.getElementById('fm_player').innerHTML = '';
oEditor.popupWinClose();
}
+25 -20
View File
@@ -13,7 +13,9 @@ var oEditor = null,
mapWidth = 512,
mapHeight = 320,
panorama,
panoramaVisible = false;
panoramaVisible = false,
marker,
staticMapsAPI = 'STATIC_MAPS_API_KEY';
function doSubmit() {
var mapImg = document.createElement("img"),
@@ -29,10 +31,9 @@ function doSubmit() {
mapImg.style.width = mapWidth + 'px';
mapImg.style.height = mapHeight + 'px';
mapImg.style.border = '1px #000 solid';
mapImg.setAttribute("alt", "Google Map");
mapImg.setAttribute('alt', 'Google Map');
mapImg.onload = function () {
oEditor.insertHtmlPopup(mapImg);
oEditor.setImageEvent(true);
oEditor.popupWinClose();
};
@@ -41,42 +42,46 @@ function doSubmit() {
panoramaHeading = panorama.getPov().heading;
panoramaZoom = panorama.getPov().zoom;
panoramaPosition = panorama.getPosition();
mapImg.src = "http://maps.googleapis.com/maps/api/streetview?location=" + panoramaPosition +
mapImg.src = "http://maps.googleapis.com/maps/api/streetview?" +
"location=" + panoramaPosition.lat() + ',' + panoramaPosition.lng() +
"&pitch=" + panoramaPitch +
"&heading=" + panoramaHeading +
"&size=" + mapWidth + 'x' + mapHeight +
"&zoom=" + panoramaZoom +
"&sensor=false" +
"&region=KR";
"&region=KR" +
"&key=" + staticMapsAPI;
} else {
mapImg.src = "http://maps.google.com/maps/api/staticmap?center=" + centerLat + ',' + centerLng +
mapImg.src = "http://maps.google.com/maps/api/staticmap?" +
"center=" + centerLat + ',' + centerLng +
"&zoom=" + setZoom +
"&size=" + mapWidth + 'x' + mapHeight +
"&maptype=" + mapType +
//"&markers=" + marker_lat + ',' + marker_lng +
"&markers=" + marker_lat + ',' + marker_lng +
"&sensor=false" +
"&language=ko" +
"&region=KR";
"&region=KR" +
"&key=" + staticMapsAPI;
}
}
function searchAddress() {
var address = document.getElementById('fm_address').value,
geocoder = new google.maps.Geocoder();
//var results, status;
//var marker = new google.maps.Marker({ 'map': map, 'draggable': true });
geocoder.geocode({'address' : address},
function (results, status) {
if (status === google.maps.GeocoderStatus.OK) {
centerLat = results[0].geometry.location.lat();
centerLng = results[0].geometry.location.lng();
latlng = new google.maps.LatLng(centerLat, centerLng);
map.setCenter(latlng);
map.setZoom(setZoom);
}
});
function (results, status) {
if (status === google.maps.GeocoderStatus.OK) {
centerLat = results[0].geometry.location.lat();
centerLng = results[0].geometry.location.lng();
latlng = new google.maps.LatLng(centerLat, centerLng);
map.setCenter(latlng);
map.setZoom(setZoom);
marker = new google.maps.Marker({ 'map': map, 'draggable': true, 'position': latlng,
animation: google.maps.Animation.DROP});
marker.setMap(map);
}
});
}
function initMap(zoom) {
+62 -59
View File
@@ -36,7 +36,8 @@ var activeImage = null,
uploadImagePath = '',
uploadMaxNumber = 12,
uploadScript,
useWebGL = false;
useWebGL = false,
supportImageOrientation;
if (ArrayBuffer && !ArrayBuffer.prototype.slice) {
ArrayBuffer.prototype.slice = function (start, end) {
@@ -437,11 +438,6 @@ function fileFilterError(file) {
"gif, png, jpg, webp 사진 파일만 전송할 수 있습니다.");
}
function explorerFileFilterError(file) {
alert("선택하신 '" + file + "' 파일은 전송할 수 없습니다.\n" +
"익스플로러 환경에서는 gif, png, jpg 사진 파일만 \n전송할 수 있습니다.");
}
function imgComplete(img, imgSize, boxId) {
var resizeW, resizeH, M, elem;
img.setAttribute("border", '0');
@@ -929,7 +925,7 @@ function DoUpload() {
blob = new Blob();
for (key in blob) {
if (blob.hasOwnProperty(key)) {
if ({}.hasOwnProperty.call(blob, key)) {
(function (key) {
Object.defineProperty(MYBLOB.prototype,
key,
@@ -967,13 +963,7 @@ DoUpload.prototype = {
file = files[i];
if (!file.type.match(fileTypeRe)) {
// 엣지를 제외한 ie브라우저인지 체크
var agent = navigator.userAgent.toLowerCase();
if (agent.indexOf('trident') != -1 || agent.indexOf("msie") != -1) {
explorerFileFilterError(file.name);
} else {
FileFilterError(file.name);
}
fileFilterError(file.name);
continue;
}
this.list.push(file);
@@ -1032,15 +1022,22 @@ DoUpload.prototype = {
offset = 2,
marker, little, tags, i;
// JPEG가 아닌 경우, 알 수 없음
if (view.getUint16(0, false) !== 0xffd8) {
return -2;
}
while (offset < length) {
// 알 수 없음
if (view.getUint16(offset + 2, false) <= 8) {
return -1;
}
marker = view.getUint16(offset, false);
offset += 2;
if (marker === 0xffe1) {
// 알 수 없음
if (view.getUint32(offset += 2, false) !== 0x45786966) {
return -1;
}
@@ -1061,7 +1058,7 @@ DoUpload.prototype = {
offset += view.getUint16(offset, false);
}
}
// 알 수 없음
return -1;
},
@@ -1076,7 +1073,7 @@ DoUpload.prototype = {
|| window.MSBlobBuilder;
if (e.name === 'TypeError' && window.BlobBuilder) {
blobb = new BlobBuilder();
// eslint-disable-next-line no-undef
blobb.append(data);
blob = blobb.getBlob(datatype);
console.log("TypeError");
@@ -1089,50 +1086,46 @@ DoUpload.prototype = {
return blob;
},
imageResize : function (image, filetype, resizeWidth, orientation, addWaterMark) {
var canvas, source_w = image.width, source_h = image.height,
resize_h, resize_w, ratio_w, ratio_h, ratio_w_half, ratio_h_half,
imageResize : function (image, filetype, resize_w, orientation, addWaterMark) {
var canvas = document.createElement("canvas"),
ctx = canvas.getContext("2d"),
source_w = image.width,
source_h = image.height,
resize_h, ratio_w, ratio_h, ratio_w_half, ratio_h_half,
source_img, resize_img, source_data, resize_data, j, i,
x2, weight, weights, weights_alpha, gx_a, gx_b, gx_g, gx_r, center_x, center_y, x_start, x_stop,
y_start, y_stop, y, dy, part_w, x, dx, w, pos_x,
ctx, gl, imageData = null;
x2, weight, weights, weights_alpha, gx_a, gx_b, gx_g, gx_r,
center_x, center_y, x_start, x_stop,
y_start, y_stop, y, dy, part_w, x, dx, w, pos_x, gl, imageData = null;
// 카메라 로테이션 보정
if (orientation > 0) {
canvas = document.createElement("canvas");
canvas.width = source_w;
canvas.height = source_h;
ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
if (orientation > 0 && !supportImageOrientation) {
if ([5,6,7,8].indexOf(orientation) > -1) {
canvas.width = source_h;
canvas.height = source_w;
} else {
canvas.width = source_w;
canvas.height = source_h;
}
switch (orientation) {
case 2 :
ctx.translate(-1, 0, 0, 1, canvas.width, 0); break;
case 3 :
ctx.translate(-1, 0, 0, -1, canvas.width, canvas.height); break;
case 4 :
ctx.translate(1, 0, 0, -1, 0, canvas.height); break;
case 5 :
ctx.translate(0, 1, 1, 0, 0, 0); break;
case 6 :
ctx.translate(0, 1, -1, 0, canvas.height, 0); break;
case 7 :
ctx.translate(0, -1, -1, 0, canvas.height, canvas.width); break;
case 8 :
ctx.translate(0, -1, 1, 0, 0, canvas.width); break;
case 2 : ctx.transform(-1, 0, 0, 1, source_w, 0); break;
case 3 : ctx.transform(-1, 0, 0, -1, source_w, source_h); break;
case 4 : ctx.transform(1, 0, 0, -1, 0, source_h); break;
case 5 : ctx.transform(0, 1, 1, 0, 0, 0); break;
case 6 : ctx.transform(0, 1, -1, 0, source_h, 0); break;
case 7 : ctx.transform(0, -1, -1, 0, source_h, source_w); break;
case 8 : ctx.transform(0, -1, 1, 0, 0, source_w); break;
default: break;
}
ctx.drawImage(image, 0, 0);
ctx.drawImage(image, 0, 0, source_w, source_h);
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
ctx.restore();
source_w = canvas.width;
source_h = canvas.height;
}
if (source_w > resizeWidth) {
resize_w = resizeWidth;
if (source_w > resize_w) {
resize_h = Math.ceil(resize_w / source_w * source_h);
try {
@@ -1143,8 +1136,6 @@ DoUpload.prototype = {
canvas = gl_canvas;
});
} catch (ignore) {
canvas = document.createElement("canvas");
ctx = canvas.getContext("2d");
canvas.width = source_w;
canvas.height = source_h;
@@ -1216,14 +1207,10 @@ DoUpload.prototype = {
canvas.height = resize_h;
ctx.putImageData(resize_img, 0, 0);
}
} else {
canvas = document.createElement("canvas"),
canvas.width = source_w; canvas.height = source_h;
ctx = canvas.getContext("2d");
canvas.width = source_w;
canvas.height = source_h;
ctx.drawImage(image, 0, 0);
resize_h = source_h;
resize_w = source_w;
}
if (this.reader.watermark && addWaterMark) {
@@ -1276,7 +1263,8 @@ DoUpload.prototype = {
filename = evt.target.file.name,
filetype = evt.target.file.type,
file = evt.target.file,
blob, image, orientation = 1, slice = 64 * 1024;
blob, image, orientation = 1,
slice = 64 * 1024;
if (slice > file.size - 1) {
slice = file.size;
@@ -1298,12 +1286,12 @@ DoUpload.prototype = {
xhr.open('POST', uploadScript, true);
if (imageResizeWidth > 0) {
fileFormat = filename.substring(filename.lastIndexOf('.'));
if (imageResizeWidth > 0 && fileFormat !== '.gif') {
bitmapData = self.imageResize(this, filetype, imageResizeWidth, orientation, true);
file = self.canvasToBlob(bitmapData, filetype);
}
fileFormat = filename.substring(filename.lastIndexOf('.'));
randomName = self.makeFilename(fileFormat);
data.append('origname', filename);
@@ -1375,7 +1363,6 @@ DoUpload.prototype = {
blob = null;
xhr.send(data);
};
image.src = blob.getURL();
}
},
@@ -1484,7 +1471,7 @@ function setResizeWidth() {
}
function init(dialog) {
var dlg, i, elem, input, select, value, name, xhr_f, xhr_v, tmpcanvas, glicon;
var dlg, i, elem, input, select, value, name, xhr_f, xhr_v, tmpcanvas, glicon, testImg;
oEditor = this;
oEditor.dialog = dialog;
@@ -1588,8 +1575,24 @@ function init(dialog) {
xhr_f.send();
xhr_v.send();
}
glicon = new Image();
glicon.className = 'webgl_logo';
glicon.src = uploadImagePath + (useWebGL ? "/webgl.png" : "/webgl-off.png");
document.getElementById('webgl_logo_wrapper').appendChild(glicon);
// 브라우저가 사진 Orientation 보정을 자동으로 지원하지는지 확인
testImg = new Image();
testImg.onload = function () {
supportImageOrientation = testImg.width === 2 && testImg.height === 3;
};
testImg.src =
'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' +
'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' +
'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' +
'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/x' +
'ABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAA' +
'AAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQ' +
'voP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXw' +
'H/9k=';
}
@@ -35,8 +35,9 @@ var activeImage = null,
tmpTop = 0,
uploadImagePath = '',
uploadMaxNumber = 12,
uploadScript;
useWebGL = false;
uploadScript,
useWebGL = false,
supportImageOrientation;
if (ArrayBuffer && !ArrayBuffer.prototype.slice) {
ArrayBuffer.prototype.slice = function (start, end) {
@@ -434,12 +435,7 @@ function startUpload(list) {
function fileFilterError(file) {
alert("선택하신 '" + file + "' 파일은 전송할 수 없습니다.\n" +
"gif, png, jpg, webp 사진 파일만 전송할 수 있습니다.");
}
function explorerFileFilterError(file) {
alert("선택하신 '" + file + "' 파일은 전송할 수 없습니다.\n" +
"익스플로러 환경에서는 gif, png, jpg 사진 파일만 \n전송할 수 있습니다.");
"gif, png, jpg 사진 파일만 전송할 수 있습니다.");
}
function imgComplete(img, imgSize, boxId) {
@@ -967,16 +963,10 @@ DoUpload.prototype = {
file = files[i];
if (!file.type.match(fileTypeRe)) {
// 엣지를 제외한 ie브라우저인지 체크
var agent = navigator.userAgent.toLowerCase();
if (agent.indexOf('trident') != -1 || agent.indexOf("msie") != -1) {
explorerFileFilterError(file.name);
} else {
FileFilterError(file.name);
}
fileFilterError(file.name);
continue;
}
this.list.push(file);
this.list.push(file);
}
if (this.list.length < 1) {
@@ -1089,50 +1079,46 @@ DoUpload.prototype = {
return blob;
},
imageResize : function (image, filetype, resizeWidth, orientation, addWaterMark) {
var canvas, source_w = image.width, source_h = image.height,
resize_h, resize_w, ratio_w, ratio_h, ratio_w_half, ratio_h_half,
imageResize : function (image, filetype, resize_w, orientation, addWaterMark) {
var canvas = document.createElement("canvas"),
ctx = canvas.getContext("2d"),
source_w = image.width,
source_h = image.height,
resize_h, ratio_w, ratio_h, ratio_w_half, ratio_h_half,
source_img, resize_img, source_data, resize_data, j, i,
x2, weight, weights, weights_alpha, gx_a, gx_b, gx_g, gx_r, center_x, center_y, x_start, x_stop,
y_start, y_stop, y, dy, part_w, x, dx, w, pos_x,
ctx, gl, imageData = null;
x2, weight, weights, weights_alpha, gx_a, gx_b, gx_g, gx_r,
center_x, center_y, x_start, x_stop,
y_start, y_stop, y, dy, part_w, x, dx, w, pos_x, gl, imageData = null;
// 카메라 로테이션 보정
if (orientation > 0) {
canvas = document.createElement("canvas");
canvas.width = source_w;
canvas.height = source_h;
ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
if (orientation > 0 && !supportImageOrientation) {
if ([5,6,7,8].indexOf(orientation) > -1) {
canvas.width = source_h;
canvas.height = source_w;
} else {
canvas.width = source_w;
canvas.height = source_h;
}
switch (orientation) {
case 2 :
ctx.translate(-1, 0, 0, 1, canvas.width, 0); break;
case 3 :
ctx.translate(-1, 0, 0, -1, canvas.width, canvas.height); break;
case 4 :
ctx.translate(1, 0, 0, -1, 0, canvas.height); break;
case 5 :
ctx.translate(0, 1, 1, 0, 0, 0); break;
case 6 :
ctx.translate(0, 1, -1, 0, canvas.height, 0); break;
case 7 :
ctx.translate(0, -1, -1, 0, canvas.height, canvas.width); break;
case 8 :
ctx.translate(0, -1, 1, 0, 0, canvas.width); break;
case 2 : ctx.transform(-1, 0, 0, 1, source_w, 0); break;
case 3 : ctx.transform(-1, 0, 0, -1, source_w, source_h); break;
case 4 : ctx.transform(1, 0, 0, -1, 0, source_h); break;
case 5 : ctx.transform(0, 1, 1, 0, 0, 0); break;
case 6 : ctx.transform(0, 1, -1, 0, source_h, 0); break;
case 7 : ctx.transform(0, -1, -1, 0, source_h, source_w); break;
case 8 : ctx.transform(0, -1, 1, 0, 0, source_w); break;
default: break;
}
ctx.drawImage(image, 0, 0);
ctx.drawImage(image, 0, 0, source_w, source_h);
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
ctx.restore();
source_w = canvas.width;
source_h = canvas.height;
}
if (source_w > resizeWidth) {
resize_w = resizeWidth;
if (source_w > resize_w) {
resize_h = Math.ceil(resize_w / source_w * source_h);
try {
@@ -1143,8 +1129,6 @@ DoUpload.prototype = {
canvas = gl_canvas;
});
} catch (ignore) {
canvas = document.createElement("canvas");
ctx = canvas.getContext("2d");
canvas.width = source_w;
canvas.height = source_h;
@@ -1216,14 +1200,10 @@ DoUpload.prototype = {
canvas.height = resize_h;
ctx.putImageData(resize_img, 0, 0);
}
} else {
canvas = document.createElement("canvas"),
canvas.width = source_w; canvas.height = source_h;
ctx = canvas.getContext("2d");
canvas.width = source_w;
canvas.height = source_h;
ctx.drawImage(image, 0, 0);
resize_h = source_h;
resize_w = source_w;
}
if (this.reader.watermark && addWaterMark) {
@@ -1484,7 +1464,7 @@ function setResizeWidth() {
}
function init(dialog) {
var dlg, i, elem, input, select, value, name, xhr_f, xhr_v, tmpcanvas, glicon;
var dlg, i, elem, input, select, value, name, xhr_f, xhr_v, tmpcanvas, glicon, testImg;
oEditor = this;
oEditor.dialog = dialog;
@@ -1556,11 +1536,6 @@ function init(dialog) {
}
}
if (browser.mobile) {
input = document.getElementById('inputImageUpload');
input.setAttribute('capture', 'filesystem');
}
tmpcanvas = document.createElement('canvas');
if (tmpcanvas.getContext('webgl', {preserveDrawingBuffer: true}) ||
tmpcanvas.getContext('experimental-webgl', {preserveDrawingBuffer: true}))
@@ -1588,8 +1563,24 @@ function init(dialog) {
xhr_f.send();
xhr_v.send();
}
glicon = new Image();
glicon.className = 'webgl_logo';
glicon.src = uploadImagePath + (useWebGL ? "/webgl.png" : "/webgl-off.png");
document.getElementById('webgl_logo_wrapper').appendChild(glicon);
// 브라우저가 사진 Orientation 보정을 자동으로 지원하지는지 확인
testImg = new Image();
testImg.onload = function () {
supportImageOrientation = testImg.width === 2 && testImg.height === 3;
};
testImg.src =
'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' +
'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' +
'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' +
'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/x' +
'ABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAA' +
'AAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQ' +
'voP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXw' +
'H/9k=';
}
+43
View File
@@ -0,0 +1,43 @@
<?xml version='1.0' encoding='UTF-8'?>
<!ELEMENT Template (Container|PopupWindow|Toolbar)*>
<!ELEMENT Container (Html)*>
<!ELEMENT Html (#PCDATA)>
<!ELEMENT PopupWindow (Html)*>
<!ELEMENT Toolbar (Image|Group)*>
<!ELEMENT Image EMPTY>
<!ATTLIST Image
file CDATA #IMPLIED
>
<!ELEMENT Group (Button)*>
<!ATTLIST Group
name CDATA #IMPLIED
>
<!ELEMENT Button (Attribute)*>
<!ATTLIST Button
name CDATA #IMPLIED
tooltip CDATA #IMPLIED
>
<!ELEMENT Attribute (Icon|Execution)*>
<!ATTLIST Attribute
class CDATA #IMPLIED
width CDATA #IMPLIED
height CDATA #IMPLIED
check CDATA #IMPLIED
default CDATA #IMPLIED
use CDATA #IMPLIED
type CDATA #IMPLIED
node CDATA #IMPLIED
>
<!ELEMENT Icon EMPTY>
<!ATTLIST Icon
position CDATA #IMPLIED
width CDATA #IMPLIED
class CDATA #IMPLIED
margin CDATA #IMPLIED
alt CDATA #IMPLIED
>
<!ELEMENT Execution EMPTY>
<!ATTLIST Execution
method CDATA #IMPLIED
value CDATA #IMPLIED
>
+2
View File
@@ -18,6 +18,8 @@
class KCAPTCHA{
private $keystring;
// generates keystring and image
function image(){
require(dirname(__FILE__).'/kcaptcha_config.php');
+5 -2
View File
@@ -4,10 +4,13 @@ include_once('captcha.lib.php');
$captcha = new KCAPTCHA();
$ss_captcha_key = get_session("ss_captcha_key");
$ss_captcha_key_decrypt = '';
if( $ss_captcha_key && !preg_match('/^[0-9]/', $ss_captcha_key) && function_exists('get_string_decrypt') ){
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
$ss_captcha_key = str_replace($ip, '', get_string_decrypt($ss_captcha_key));
$ss_captcha_key_decrypt = str_replace($ip, '', get_string_decrypt($ss_captcha_key));
}
$captcha->setKeyString($ss_captcha_key);
# php 5.2 또는 5.3 버전에서 포인터처럼 해당 세션값이 변경되는 버그가 있어서 아래와 같이 조치함
if(! $ss_captcha_key_decrypt) $ss_captcha_key_decrypt = $ss_captcha_key;
$captcha->setKeyString($ss_captcha_key_decrypt);
$captcha->getKeyString();
$captcha->image();
+4 -1
View File
@@ -211,14 +211,17 @@ $ct_cert->mf_clear();
var $opener = window.opener;
var is_mobile = false;
$opener.name="parentPage";
$opener.name="parentPage";
// 안드로이드 웹뷰에서 거의 다 새창을 지원하므로 더 이상 iframe 을 사용하지 않습니다.
/*
if (typeof g5_is_mobile != "undefined" && g5_is_mobile ) {
$opener = window.parent;
is_mobile = true;
} else {
$opener = window.opener;
}
*/
// up_hash 검증
if( document.mbFindForm.up_hash.value != $opener.$("input[name=veri_up_hash]").val() ) {
+5 -5
View File
@@ -116,17 +116,17 @@ window.onload = function() {
function cert_page()
{
var frm = document.form_auth;
// iframe에서 세션공유 문제가 있어서 더 이상 iframe 을 사용하지 않습니다.
var use_iframe = false;
if ( ( frm.req_tx.value == "auth" || frm.req_tx.value == "otp_auth" ) )
{
frm.action=".<?php echo $resultPage; ?>";
// MOBILE
if( ( navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1 ) )
if(use_iframe && ( navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1 ) )
{
self.name="kcp_cert";
}
// PC
else
{
frm.target="kcp_cert";
@@ -139,12 +139,12 @@ function cert_page()
else if ( frm.req_tx.value == "cert" )
{
if( ( navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1 ) ) // 스마트폰인 경우
if(use_iframe && ( navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1 ) )
{
window.parent.$("input[name=veri_up_hash]").val(frm.up_hash.value); // up_hash 데이터 검증을 위한 필드
self.name="auth_popup";
}
else // 스마트폰 아닐때
else
{
window.opener.$("input[name=veri_up_hash]").val(frm.up_hash.value); // up_hash 데이터 검증을 위한 필드
frm.target = "auth_popup";

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