diff --git a/adm/config_form.php b/adm/config_form.php
index 4375f7ef8..f040f04db 100644
--- a/adm/config_form.php
+++ b/adm/config_form.php
@@ -95,11 +95,23 @@ if(!isset($config['cf_cert_use'])) {
ADD `cf_cert_ipin` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_cert_use`,
ADD `cf_cert_hp` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_cert_ipin`,
ADD `cf_cert_kcb_cd` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_cert_hp`,
- ADD `cf_cert_kcp_cd` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_cert_kcb_cd` ", true);
+ ADD `cf_cert_kcp_cd` VARCHAR(255) NOT NULL DEFAULT '' AFTER `cf_cert_kcb_cd`,
+ ADD `cf_cert_limit` INT(11) NOT NULL DEFAULT '0' AFTER `cf_cert_kcp_cd` ", true);
sql_query(" ALTER TABLE `{$g4['member_table']}`
CHANGE `mb_hp_certify` `mb_certify` VARCHAR(20) NOT NULL DEFAULT '' ", true);
sql_query(" update {$g4['member_table']} set mb_certify = 'hp' where mb_certify = '1' ");
sql_query(" update {$g4['member_table']} set mb_certify = '' where mb_certify = '0' ");
+ sql_query(" CREATE TABLE IF NOT EXISTS `{$g4['cert_history_table']}` (
+ `cr_id` int(11) NOT NULL auto_increment,
+ `mb_id` varchar(255) NOT NULL DEFAULT '',
+ `cr_company` varchar(255) NOT NULL DEFAULT '',
+ `cr_method` varchar(255) NOT NULL DEFAULT '',
+ `cr_ip` varchar(255) NOT NULL DEFAULT '',
+ `cr_date` date NOT NULL DEFAULT '0000-00-00',
+ `cr_time` time NOT NULL DEFAULT '00:00:00',
+ PRIMARY KEY (`cr_id`),
+ KEY `mb_id` (`mb_id`)
+ )", true);
}
$g4['title'] = '환경설정';
@@ -641,6 +653,13 @@ $pg_anchor = '
KCP 휴대폰 본인확인 서비스 신청페이지
+
+ |
+
+ 회수제한은 실서비스에서 아이핀과 휴대폰 본인확인 인증에 개별 적용됩니다. 0 으로 설정하시면 회수제한이 적용되지 않습니다.'); ?>
+ 회
+ |
+
diff --git a/adm/config_form_update.php b/adm/config_form_update.php
index 70e8e82a0..84b36a6eb 100644
--- a/adm/config_form_update.php
+++ b/adm/config_form_update.php
@@ -113,6 +113,7 @@ $sql = " update {$g4['config_table']}
cf_cert_hp = '{$_POST['cf_cert_hp']}',
cf_cert_kcb_cd = '{$_POST['cf_cert_kcb_cd']}',
cf_cert_kcp_cd = '{$_POST['cf_cert_kcp_cd']}',
+ cf_cert_limit = '{$_POST['cf_cert_limit']}',
cf_googl_shorturl_apikey = '{$_POST['cf_googl_shorturl_apikey']}',
cf_facebook_appid = '{$_POST['cf_facebook_appid']}',
cf_facebook_secret = '{$_POST['cf_facebook_secret']}',
diff --git a/adm/img/logo.jpg b/adm/img/logo.jpg
index d822183d2..b85e10ed7 100644
Binary files a/adm/img/logo.jpg and b/adm/img/logo.jpg differ
diff --git a/adm/img/qnb_board.jpg b/adm/img/qnb_board.jpg
deleted file mode 100644
index 617c89152..000000000
Binary files a/adm/img/qnb_board.jpg and /dev/null differ
diff --git a/adm/img/qnb_log.jpg b/adm/img/qnb_log.jpg
deleted file mode 100644
index aa6f915e8..000000000
Binary files a/adm/img/qnb_log.jpg and /dev/null differ
diff --git a/adm/img/qnb_mb.jpg b/adm/img/qnb_mb.jpg
deleted file mode 100644
index 75e2ed3cc..000000000
Binary files a/adm/img/qnb_mb.jpg and /dev/null differ
diff --git a/adm/img/tnb_chome.jpg b/adm/img/tnb_chome.jpg
deleted file mode 100644
index 9c31d93df..000000000
Binary files a/adm/img/tnb_chome.jpg and /dev/null differ
diff --git a/adm/img/tnb_chome_cf.jpg b/adm/img/tnb_chome_cf.jpg
deleted file mode 100644
index f82579e00..000000000
Binary files a/adm/img/tnb_chome_cf.jpg and /dev/null differ
diff --git a/adm/img/tnb_logout.jpg b/adm/img/tnb_logout.jpg
deleted file mode 100644
index 10171b80e..000000000
Binary files a/adm/img/tnb_logout.jpg and /dev/null differ
diff --git a/adm/img/tnb_modify.jpg b/adm/img/tnb_modify.jpg
deleted file mode 100644
index 69111abc7..000000000
Binary files a/adm/img/tnb_modify.jpg and /dev/null differ
diff --git a/adm/member_form.php b/adm/member_form.php
index 0670dbe8d..39b07640d 100644
--- a/adm/member_form.php
+++ b/adm/member_form.php
@@ -57,11 +57,31 @@ else if ($w == 'u')
else
alert('제대로 된 값이 넘어오지 않았습니다.');
-// 휴대폰 본인확인
+// 본인확인방법
+switch($mb['mb_certify']) {
+ case 'hp':
+ $mb_certify_case = '휴대폰';
+ $mb_certify_val = 'hp';
+ break;
+ case 'ipin':
+ $mb_certify_case = '아이핀';
+ $mb_certify_val = 'ipin';
+ break;
+ case 'admin':
+ $mb_certify_case = '관리자 수정';
+ $mb_certify_val = 'admin';
+ break;
+ default:
+ $mb_certify_case = '';
+ $mb_certify_val = 'admin';
+ break;
+}
+
+// 본인확인
$mb_certify_yes = $mb['mb_certify'] ? 'checked="checked"' : '';
$mb_certify_no = !$mb['mb_certify'] ? 'checked="checked"' : '';
-// 휴대폰 성인인증
+// 성인인증
$mb_adult_yes = $mb['mb_adult'] ? 'checked="checked"' : '';
$mb_adult_no = !$mb['mb_adult'] ? 'checked="checked"' : '';
@@ -149,12 +169,21 @@ include_once('./admin.head.php');
|
|
+
+ | 본인확인방법 |
+
+ >
+
+ >
+
+ |
+
| 본인확인 |
>
- >
+ >
|
|
diff --git a/adm/member_form_update.php b/adm/member_form_update.php
index cb7e70d68..976538f0b 100644
--- a/adm/member_form_update.php
+++ b/adm/member_form_update.php
@@ -20,14 +20,23 @@ if($mb_hp) {
alert($result);
}
+// 인증정보처리
+if($_POST['mb_certify_case'] && $_POST['mb_certify']) {
+ $mb_certify = $_POST['mb_certify_case'];
+ $mb_adult = $_POST['mb_adult'];
+} else {
+ $mb_certify = '';
+ $mb_adult = 0;
+}
+
$sql_common = " mb_name = '{$_POST['mb_name']}',
mb_nick = '{$_POST['mb_nick']}',
mb_email = '{$_POST['mb_email']}',
mb_homepage = '{$_POST['mb_homepage']}',
mb_tel = '{$_POST['mb_tel']}',
mb_hp = '{$_POST['mb_hp']}',
- mb_certify = '{$_POST['mb_certify']}',
- mb_adult = '{$_POST['mb_adult']}',
+ mb_certify = '{$mb_certify}',
+ mb_adult = '{$mb_adult}',
mb_zip1 = '{$_POST['mb_zip1']}',
mb_zip2 = '{$_POST['mb_zip2']}',
mb_addr1 = '{$_POST['mb_addr1']}',
diff --git a/adm/member_list.php b/adm/member_list.php
index a222a0299..45d5593fa 100644
--- a/adm/member_list.php
+++ b/adm/member_list.php
@@ -138,26 +138,25 @@ $colspan = 15;
- 회원아이디 |
+ 아이디 |
이름 |
+ 본인확인 |
휴대폰 |
- 주소 |
+ 상태/권한 |
최종접속 |
- 포인트 |
+ 접근 그룹 |
관리 |
| 별명 |
- 상태/권한 |
- 전화번호 |
- 메일 인증 |
메일 수신 |
정보 공개 |
- 본인 확인 |
+ 메일 인증 |
성인 인증 |
접근 차단 |
+ 전화번호 |
+ 포인트 |
가입일 |
- 접근그룹 |
@@ -204,6 +203,25 @@ $colspan = 15;
$tr_bg = '';
if ($i%2 == 0) $tr_bg = 'class="tr_bg"';
+
+ switch($row['mb_certify']) {
+ case 'hp':
+ $mb_certify_case = '휴대폰';
+ $mb_certify_val = 'hp';
+ break;
+ case 'ipin':
+ $mb_certify_case = '아이핀';
+ $mb_certify_val = '';
+ break;
+ case 'admin':
+ $mb_certify_case = '관리자';
+ $mb_certify_val = 'admin';
+ break;
+ default:
+ $mb_certify_case = ' ';
+ $mb_certify_val = 'admin';
+ break;
+ }
?>
>
@@ -212,16 +230,15 @@ $colspan = 15;
- |
+ |
|
- |
- |
- |
- |
-
|
-
- >
- |
+
+ >
+
+ >
+
+ |
+ |
|
- |
+ |
+ |
+
|
+
+ >
+ |
Yes':'No'; ?> |
value="1"> |
value="1"> |
- value="1"> |
value="1"> |
value="" id="mb_intercept_date_" title="">
|
+ |
+ |
|
- |
자료가 없습니다. | ";
?>
+
diff --git a/adm/member_list_update.php b/adm/member_list_update.php
index c468b4f68..aee328184 100644
--- a/adm/member_list_update.php
+++ b/adm/member_list_update.php
@@ -26,13 +26,18 @@ if ($_POST['act_button'] == "선택수정") {
} else if ($member['mb_id'] == $mb['mb_id']) {
$msg .= $mb['mb_id'].' : 로그인 중인 관리자는 수정 할 수 없습니다.\\n';
} else {
+ if($_POST['mb_certify'][$k])
+ $mb_adult = $_POST['mb_adult'][$k];
+ else
+ $mb_adult = 0;
+
$sql = " update {$g4['member_table']}
set mb_level = '{$_POST['mb_level'][$k]}',
mb_intercept_date = '{$_POST['mb_intercept_date'][$k]}',
mb_mailling = '{$_POST['mb_mailling'][$k]}',
mb_open = '{$_POST['mb_open'][$k]}',
mb_certify = '{$_POST['mb_certify'][$k]}',
- mb_adult = '{$_POST['mb_adult'][$k]}'
+ mb_adult = '{$mb_adult}'
where mb_id = '{$_POST['mb_id'][$k]}' ";
sql_query($sql);
}
diff --git a/css/admin.css b/css/admin.css
index a405da62a..f661803ef 100644
--- a/css/admin.css
+++ b/css/admin.css
@@ -26,19 +26,16 @@ h2 {font-size:1.2em}
#hd h1, #hd h2 {margin:0;padding:0;font-size:0;line-height:0;border:0;overflow:hidden}
#hd_wrap {z-index:11;position:relative;margin:0 auto;width:1000px}
#logo {position:relative;height:70px}
-#logo img {position:absolute;top:15px;left:0}
+#logo img {position:absolute;top:13px;left:0}
-#tnb {z-index:2;position:absolute;top:1px;right:0;zoom:1}
+#tnb {z-index:2;position:absolute;top:20px;right:0;zoom:1}
#tnb:after {display:block;visibility:hidden;clear:both;content:""}
#tnb {float:right;margin:0;padding:0;zoom:1}
#tnb:after {display:block;visibility:hidden;clear:both;content:""}
-#tnb li {float:left}
-#tnb a {display:block;position:relative;width:68px;height:68px;color:#e0e0e0;font-size:0.95em;text-decoration:none}
+#tnb li {float:left;margin:0 0 0 1px}
+#tnb a {display:block;position:relative;padding:0 15px;height:33px;background:#383a3f;color:#e0e0e0;text-decoration:none;line-height:2.8em}
+#tnb a:focus, #tnb a:hover {background:#fff;color:#383a3f}
#tnb span {position:absolute;bottom:10px;left:0;width:100%;text-align:center}
-#tnb_modify {background:url('../adm/img/tnb_modify.jpg')}
-#tnb_chome_cf {background:url('../adm/img/tnb_chome_cf.jpg')}
-#tnb_chome {background:url('../adm/img/tnb_chome.jpg')}
-#tnb_logout {background:url('../adm/img/tnb_logout.jpg')}
/* gnb js off */
#gnb {z-index:12;background:#383a3f}
@@ -62,27 +59,23 @@ h2 {font-size:1.2em}
.gnb_js .gnb_1dli_on a {float:none;background:#fff;color:#000}
.gnb_js .gnb_2dul {display:none;position:absolute;top:35px}
.gnb_js .gnb_2dli a {display:inline-block;float:none !important;padding:0 10px;width:161px;text-align:left}
+.gnb_js .gnb_2dli a:focus, .gnb_js .gnb_2dli a:hover {background:#484848;color:#fff}
.gnb_1dli_over .gnb_2dul {display:block;left:-1px;width:181px;border:1px solid #c3c7c5;border-top:0;background:#fff}
.gnb_1dli_over2 .gnb_2dul {display:block;right:-1px;width:181px;border:1px solid #c3c7c5;border-top:0;background:#fff}
.gnb_js .gnb_grp_style {background:#f7f7f7 !important}
+.gnb_js .gnb_grp_style:focus, .gnb_js .gnb_grp_style:hover {background:#484848 !important}
.gnb_js .gnb_grp_div {border-top:1px solid #eee}
/* 중간 레이아웃 */
#wrapper {z-index:5;margin:30px auto;width:1000px;min-height:630px;height:auto !important;height:630px;zoom:1}
#wrapper:after {display:block;visibility:hidden;clear:both;content:""}
-#qnb {float:right;margin:0;padding:0;list-style:none}
-#qnb li {margin-bottom:20px}
-#qnb a {display:block;width:40px;font-size:0.9em;text-align:center;letter-spacing:-0.1em}
-#qnb a:focus, #qnb a:hover, #qnb a:active {text-decoration:none}
-#qnb img {margin-bottom:5px}
-
-#container {z-index:4;position:relative;float:left;width:942px}
+#container {z-index:4;position:relative}
/* 텍스트 크기 조절 */
#text_size {position:absolute;top:0;right:0}
-#text_size button {padding:0 10px;height:30px;background:#000;color:#fff;cursor:pointer}
+#text_size button {padding:0 10px;height:30px;border:0;background:#000;color:#fff;cursor:pointer}
/* 하단 레이아웃 */
#ft {margin:20px 0;padding:5px 0;border-top:1px solid #d0d6d8}
@@ -194,7 +187,7 @@ thead th input {vertical-align:top} /* middle 로 하면 게시판 읽기에서
thead a {color:#fff}
tfoot th {border-top:1px solid #666;border-bottom:1px solid #666;background:#484848;color:#fff}
tfoot td {border-color:#666;background:#484848;color:#fff;font-weight:bold;text-align:center}
-td {padding:8px 5px 6px;border-top:1px solid #e9e9e9;border-bottom:1px solid #e9e9e9;line-height:1.5em;word-break:break-all}
+td {padding:8px 5px 6px;border:1px solid #e9e9e9;line-height:1.5em;word-break:break-all}
.bo_sideview td {padding:6px 4px} /* 사이드뷰 사용하는 테이블 셀 패딩값 */
/* 내용 없는 테이블 */
.empty_table {padding:200px 0;text-align:center}
@@ -271,15 +264,17 @@ td {padding:8px 5px 6px;border-top:1px solid #e9e9e9;border-bottom:1px solid #e9
.tr_bg {background:#f5f6fa}
.td_addr {text-align:left !important}
+.td_boolean {width:50px;text-align:center}
.td_chk {width:30px;text-align:center}
-.td_num {width:60px;text-align:center}
-.td_bignum {width:100px;text-align:center}
+.td_callnum {width:80px;text-align:center}
+.td_date {width:70px;text-align:center}
.td_grid {width:60px;text-align:center}
.td_mbid, .td_name, .td_mbname {width:100px;text-align:left !important}
-.td_date {width:70px;text-align:center}
-.td_time {width:130px;text-align:center}
-.td_boolean {width:50px;text-align:center}
+.td_num {width:60px;text-align:center}
+.td_bignum {width:100px;text-align:center}
+.td_smallnum {width:30px;text-align:center}
.td_pt {text-align:right !important}
+.td_time {width:130px;text-align:center}
.txt_true {color:#e8180c}
.txt_false {color:#ccc}
diff --git a/install/gnuboard4s.sql b/install/gnuboard4s.sql
index 692b14b1e..90d1b8878 100644
--- a/install/gnuboard4s.sql
+++ b/install/gnuboard4s.sql
@@ -287,6 +287,7 @@ CREATE TABLE IF NOT EXISTS `g4s_config` (
`cf_cert_hp` varchar(255) NOT NULL DEFAULT '',
`cf_cert_kcb_cd` varchar(255) NOT NULL DEFAULT '',
`cf_cert_kcp_cd` varchar(255) NOT NULL DEFAULT '',
+ `cf_cert_limit` int(11) NOT NULL DEFAULT '0',
`cf_googl_shorturl_apikey` varchar(255) NOT NULL DEFAULT '',
`cf_facebook_appid` varchar(255) NOT NULL,
`cf_facebook_secret` varchar(255) NOT NULL,
@@ -317,6 +318,24 @@ CREATE TABLE IF NOT EXISTS `g4s_config` (
-- --------------------------------------------------------
+--
+-- Table structure for table `g4s_cert_history`
+--
+
+CREATE TABLE IF NOT EXISTS `g4s_cert_history` (
+ `cr_id` int(11) NOT NULL auto_increment,
+ `mb_id` varchar(255) NOT NULL DEFAULT '',
+ `cr_company` varchar(255) NOT NULL DEFAULT '',
+ `cr_method` varchar(255) NOT NULL DEFAULT '',
+ `cr_ip` varchar(255) NOT NULL DEFAULT '',
+ `cr_date` date NOT NULL DEFAULT '0000-00-00',
+ `cr_time` time NOT NULL DEFAULT '00:00:00',
+ PRIMARY KEY (`cr_id`),
+ KEY `mb_id` (`mb_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
--
-- Table structure for table `g4s_group`
--
diff --git a/install/install_db.php b/install/install_db.php
index ff734bd71..afe693e17 100644
--- a/install/install_db.php
+++ b/install/install_db.php
@@ -125,6 +125,7 @@ $sql = " insert into `{$table_prefix}config`
cf_movie_extension = 'asx|asf|wmv|wma|mpg|mpeg|mov|avi|mp3',
cf_formmail_is_member = '1',
cf_page_rows = '15',
+ cf_cert_limit = '2',
cf_stipulation = '해당 홈페이지에 맞는 회원가입약관을 입력합니다.',
cf_privacy = '해당 홈페이지에 맞는 개인정보취급방침을 입력합니다.'
";
@@ -207,6 +208,7 @@ fwrite($f, "\$g4['visit_sum_table'] = G4_TABLE_PREFIX.'visit_sum'; // 방문자
fwrite($f, "\$g4['uniqid_table'] = G4_TABLE_PREFIX.'uniqid'; // 유니크한 값을 만드는 테이블\n");
fwrite($f, "\$g4['syndi_log_table'] = G4_TABLE_PREFIX.'syndi_log'; // 네이버 신디케이션 컨텐츠 삭제 로그 테이블\n");
fwrite($f, "\$g4['autosave_table'] = G4_TABLE_PREFIX.'autosave'; // 게시글 작성시 일정시간마다 글을 임시 저장하는 테이블\n");
+fwrite($f, "\$g4['cert_history_table'] = G4_TABLE_PREFIX.'cert_history'; // 인증내역 테이블\n");
fwrite($f, "?>");
fclose($f);
diff --git a/js/certify.js b/js/certify.js
new file mode 100644
index 000000000..9402449f8
--- /dev/null
+++ b/js/certify.js
@@ -0,0 +1,53 @@
+// 본인확인 인증창 호출
+function certify_win_open(type, url)
+{
+ if(type == 'kcb-ipin')
+ {
+ var popupWindow = window.open( url, "kcbPop", "left=200, top=100, status=0, width=450, height=550" );
+ popupWindow.focus();
+ }
+ else if(type == 'kcb-hp')
+ {
+ var popupWindow = window.open( url, "auth_popup", "left=200, top=100, width=430, height=590, scrollbar=yes" );
+ popupWindow.focus();
+ }
+ else if(type == 'kcp-hp')
+ {
+ if( ( navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1 ) == false ) // 스마트폰이 아닌경우
+ {
+ var return_gubun;
+ var width = 410;
+ var height = 500;
+
+ var leftpos = screen.width / 2 - ( width / 2 );
+ var toppos = screen.height / 2 - ( height / 2 );
+
+ var winopts = "width=" + width + ", height=" + height + ", toolbar=no,status=no,statusbar=no,menubar=no,scrollbars=no,resizable=no";
+ var position = ",left=" + leftpos + ", top=" + toppos;
+ var AUTH_POP = window.open(url,'auth_popup', winopts + position);
+ }
+ }
+}
+
+// 인증체크
+function cert_confirm()
+{
+ var type;
+ var val = document.fregisterform.cert_type.value
+
+ switch(val) {
+ case "ipin":
+ type = "아이핀";
+ break;
+ case "hp":
+ type = "휴대폰";
+ break;
+ default:
+ return true;
+ }
+
+ if(confirm("이미 "+type+"으로 본인확인을 완료하셨습니다.\n\n이전 인증을 취소하고 다시 인증하시겠습니까?"))
+ return true;
+ else
+ return false;
+}
\ No newline at end of file
diff --git a/lib/common.lib.php b/lib/common.lib.php
index 2df36355f..6e6ad9074 100644
--- a/lib/common.lib.php
+++ b/lib/common.lib.php
@@ -2305,4 +2305,57 @@ function autosave_count($mb_id)
return 0;
}
}
+
+// 본인확인내역 기록
+function insert_cert_history($mb_id, $company, $method)
+{
+ global $g4;
+
+ $sql = " insert into {$g4['cert_history_table']}
+ set mb_id = '$mb_id',
+ cr_company = '$company',
+ cr_method = '$method',
+ cr_ip = '{$_SERVER['REMOTE_ADDR']}',
+ cr_date = '".G4_TIME_YMD."',
+ cr_time = '".G4_TIME_HIS."' ";
+ sql_query($sql);
+}
+
+// 인증시도회수 체크
+function certify_count_check($mb_id, $type)
+{
+ global $g4, $config;
+
+ if($config['cf_cert_use'] != 2)
+ return;
+
+ if($config['cf_cert_limit'] == 0)
+ return;
+
+ $sql = " select count(*) as cnt from {$g4['cert_history_table']} ";
+
+ if($mb_id) {
+ $sql .= " where mb_id = '$mb_id' ";
+ } else {
+ $sql .= " where cr_ip = '{$_SERVER['REMOTE_ADDR']}' ";
+ }
+
+ $sql .= " and cr_method = '".$type."' and cr_date = '".G4_TIME_YMD."' ";
+
+ $row = sql_fetch($sql);
+
+ switch($type) {
+ case 'hp':
+ $cert = '휴대폰';
+ break;
+ case 'ipin':
+ $cert = '아이핀';
+ break;
+ default:
+ break;
+ }
+
+ if((int)$row['cnt'] >= (int)$config['cf_cert_limit'])
+ alert_close('오늘 '.$cert.' 본인확인을 '.$row['cnt'].'회 이용하셔서 더 이상 이용할 수 없습니다.');
+}
?>
\ No newline at end of file
diff --git a/mobile/skin/member/basic/register_form.skin.php b/mobile/skin/member/basic/register_form.skin.php
index bf200e95b..0c11e76cf 100644
--- a/mobile/skin/member/basic/register_form.skin.php
+++ b/mobile/skin/member/basic/register_form.skin.php
@@ -3,6 +3,9 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
?>
+
+
+
-
-