Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad67fca323 | ||
|
|
614dce643c | ||
|
|
c0cd45cc18 | ||
|
|
f3e7dbbb43 | ||
|
|
5247359e39 | ||
|
|
4ed4938cf1 | ||
|
|
158d9040d2 | ||
|
|
aebfc70b10 | ||
|
|
69ca119b10 | ||
|
|
be15f890c9 | ||
|
|
bc71241846 | ||
|
|
4bcce2696c | ||
|
|
7083bb0899 |
@@ -11,7 +11,13 @@ $menu['menu100'] = array (
|
||||
array('100900', '캐시파일 일괄삭제',G5_ADMIN_URL.'/cache_file_delete.php', 'cf_cache', 1),
|
||||
array('100910', '캡챠파일 일괄삭제',G5_ADMIN_URL.'/captcha_file_delete.php', 'cf_captcha', 1),
|
||||
array('100920', '썸네일파일 일괄삭제',G5_ADMIN_URL.'/thumbnail_file_delete.php', 'cf_thumbnail', 1),
|
||||
array('100500', 'phpinfo()', G5_ADMIN_URL.'/phpinfo.php', 'cf_phpinfo'),
|
||||
array('100400', '부가서비스', G5_ADMIN_URL.'/service.php', 'cf_service')
|
||||
array('100500', 'phpinfo()', G5_ADMIN_URL.'/phpinfo.php', 'cf_phpinfo')
|
||||
);
|
||||
|
||||
if(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE) {
|
||||
$menu['menu100'][] = array('100510', 'Browscap 업데이트', G5_ADMIN_URL.'/browscap.php', 'cf_browscap');
|
||||
$menu['menu100'][] = array('100520', '접속로그 변환', G5_ADMIN_URL.'/browscap_convert.php', 'cf_visit_cnvrt');
|
||||
}
|
||||
|
||||
$menu['menu100'][] = array('100400', '부가서비스', G5_ADMIN_URL.'/service.php', 'cf_service');
|
||||
?>
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
$sub_menu = "100510";
|
||||
include_once('./_common.php');
|
||||
|
||||
if(!(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE))
|
||||
alert('사용할 수 없는 기능입니다.', G5_ADMIN_URL);
|
||||
|
||||
if ($is_admin != 'super')
|
||||
alert('최고관리자만 접근 가능합니다.');
|
||||
|
||||
$g5['title'] = 'Browscap 업데이트';
|
||||
include_once('./admin.head.php');
|
||||
?>
|
||||
|
||||
<div id="processing">
|
||||
<p>Browscap 정보를 업데이트하시려면 아래 업데이트 버튼을 클릭해 주세요.</p>
|
||||
<button type="button" id="run_update">업데이트</button>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
$("#run_update").on("click", function() {
|
||||
$("#processing").html('<div class="update_processing"></div><p>Browscap 정보를 업데이트 중입니다.</p>');
|
||||
|
||||
$.ajax({
|
||||
url: "./browscap_update.php",
|
||||
async: true,
|
||||
cache: false,
|
||||
dataType: "html",
|
||||
success: function(data) {
|
||||
if(data != "") {
|
||||
alert(data);
|
||||
return false;
|
||||
}
|
||||
|
||||
$("#processing").html("<div class='check_processing'></div><p>Browscap 정보를 업데이트 했습니다.</p>");
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php
|
||||
include_once('./admin.tail.php');
|
||||
?>
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
$sub_menu = "100520";
|
||||
include_once('./_common.php');
|
||||
|
||||
if(!(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE))
|
||||
alert('사용할 수 없는 기능입니다.', G5_ADMIN_URL);
|
||||
|
||||
if ($is_admin != 'super')
|
||||
alert('최고관리자만 접근 가능합니다.');
|
||||
|
||||
$rows = preg_replace('#[^0-9]#', '', $_GET['rows']);
|
||||
if(!$rows)
|
||||
$rows = 100;
|
||||
|
||||
$g5['title'] = '접속로그 변환';
|
||||
include_once('./admin.head.php');
|
||||
?>
|
||||
|
||||
<div id="processing">
|
||||
<p>접속로그 정보를 Browscap 정보로 변환하시려면 아래 업데이트 버튼을 클릭해 주세요.</p>
|
||||
<button type="button" id="run_update">업데이트</button>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
$(document).on("click", "#run_update", function() {
|
||||
$("#processing").html('<div class="update_processing"></div><p>Browscap 정보로 변환 중입니다.</p>');
|
||||
|
||||
$.ajax({
|
||||
method: "GET",
|
||||
url: "./browscap_converter.php",
|
||||
data: { rows: "<?php echo $rows; ?>" },
|
||||
async: true,
|
||||
cache: false,
|
||||
dataType: "html",
|
||||
success: function(data) {
|
||||
$("#processing").html(data);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php
|
||||
include_once('./admin.tail.php');
|
||||
?>
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
ini_set('memory_limit', '-1');
|
||||
include_once('./_common.php');
|
||||
|
||||
// clean the output buffer
|
||||
ob_end_clean();
|
||||
|
||||
if(!(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE))
|
||||
die('사용할 수 없는 기능입니다.');
|
||||
|
||||
if($is_admin != 'super')
|
||||
die('최고관리자로 로그인 후 실행해 주세요.');
|
||||
|
||||
// browscap cache 파일 체크
|
||||
if(!is_file(G5_DATA_PATH.'/cache/browscap_cache.php')) {
|
||||
echo '<p>Browscap 정보가 없습니다. 아래 링크로 이동해 Browscap 정보를 업데이트 하세요.</p>'.PHP_EOL;
|
||||
echo '<p><a href="'.G5_ADMIN_URL.'/browscap.php">Browscap 업데이트</a></p>'.PHP_EOL;
|
||||
exit;
|
||||
}
|
||||
|
||||
include_once(G5_PLUGIN_PATH.'/browscap/Browscap.php');
|
||||
$browscap = new phpbrowscap\Browscap(G5_DATA_PATH.'/cache');
|
||||
$browscap->doAutoUpdate = false;
|
||||
$browscap->cacheFilename = 'browscap_cache.php';
|
||||
|
||||
// 데이터 변환
|
||||
$rows = preg_replace('#[^0-9]#', '', $_GET['rows']);
|
||||
if(!$rows)
|
||||
$rows = 100;
|
||||
|
||||
$sql_common = " from {$g5['visit_table']} where vi_agent <> '' and ( vi_browser = '' or vi_os = '' or vi_device = '' ) ";
|
||||
$sql_order = " order by vi_id desc ";
|
||||
$sql_limit = " limit 0, $rows ";
|
||||
|
||||
$sql = " select count(vi_id) as cnt $sql_common ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
|
||||
$sql = " select vi_id, vi_agent, vi_browser, vi_os, vi_device
|
||||
$sql_common
|
||||
$sql_order
|
||||
$sql_limit ";
|
||||
$result = sql_query($sql);
|
||||
|
||||
$cnt = 0;
|
||||
for($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$info = $browscap->getBrowser($row['vi_agent']);
|
||||
|
||||
$brow = $row['vi_browser'];
|
||||
if(!$brow)
|
||||
$brow = $info->Comment;
|
||||
|
||||
$os = $row['vi_os'];
|
||||
if(!$os)
|
||||
$os = $info->Platform;
|
||||
|
||||
$device = $row['vi_device'];
|
||||
if(!$device)
|
||||
$device = $info->Device_Type;
|
||||
|
||||
$sql2 = " update {$g5['visit_table']}
|
||||
set vi_browser = '$brow',
|
||||
vi_os = '$os',
|
||||
vi_device = '$device'
|
||||
where vi_id = '{$row['vi_id']}' ";
|
||||
sql_query($sql2);
|
||||
|
||||
$cnt++;
|
||||
}
|
||||
|
||||
if(($total_count - $cnt) == 0 || $total_count == 0)
|
||||
echo '<div class="check_processing"></div><p>변환완료</p>';
|
||||
else
|
||||
echo '<p>총 '.number_format($total_count).'건 중 '.number_format($cnt).'건 변환완료<br><br>접속로그를 추가로 변환하시려면 아래 업데이트 버튼을 클릭해 주세요.</p><button type="button" id="run_update">업데이트</button>';
|
||||
?>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
ini_set('memory_limit', '-1');
|
||||
|
||||
$sub_menu = "100510";
|
||||
include_once('./_common.php');
|
||||
|
||||
// clean the output buffer
|
||||
ob_end_clean();
|
||||
|
||||
if(!(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE))
|
||||
die('사용할 수 없는 기능입니다.');
|
||||
|
||||
if ($is_admin != 'super')
|
||||
die('최고관리자만 접근 가능합니다.');
|
||||
|
||||
include_once(G5_PLUGIN_PATH.'/browscap/Browscap.php');
|
||||
|
||||
$browscap = new phpbrowscap\Browscap(G5_DATA_PATH.'/cache');
|
||||
$browscap->updateMethod = 'cURL';
|
||||
$browscap->cacheFilename = 'browscap_cache.php';
|
||||
$browscap->updateCache();
|
||||
|
||||
die('');
|
||||
?>
|
||||
@@ -186,6 +186,14 @@ if(!isset($config['cf_sms_type'])) {
|
||||
ADD `cf_sms_type` varchar(10) NOT NULL DEFAULT '' AFTER `cf_sms_use` ", true);
|
||||
}
|
||||
|
||||
// 접속자 정보 필드 추가
|
||||
if(!sql_query(" select vi_browser from {$g5['visit_table']} limit 1 ")) {
|
||||
sql_query(" ALTER TABLE `{$g5['visit_table']}`
|
||||
ADD `vi_browser` varchar(255) NOT NULL DEFAULT '' AFTER `vi_agent`,
|
||||
ADD `vi_os` varchar(255) NOT NULL DEFAULT '' AFTER `vi_browser`,
|
||||
ADD `vi_device` varchar(255) NOT NULL DEFAULT '' AFTER `vi_os` ", true);
|
||||
}
|
||||
|
||||
if(!$config['cf_faq_skin']) $config['cf_faq_skin'] = "basic";
|
||||
if(!$config['cf_mobile_faq_skin']) $config['cf_mobile_faq_skin'] = "basic";
|
||||
|
||||
|
||||
+12
-2
@@ -395,6 +395,9 @@ td.td_grpset {width:160px;border-left:1px solid #e9ecee;text-align:center}
|
||||
.td_tdiv {border-bottom:1px solid #c9c9c9 !important}
|
||||
.td_tel {width:80px;text-align:center}
|
||||
.td_test {width:50px;text-align:center}
|
||||
.td_category1{width:130px;text-align:center}
|
||||
.td_category2{width:100px;text-align:center}
|
||||
.td_category3{width:80px;text-align:center}
|
||||
|
||||
.txt_true {color:#e8180c}
|
||||
.txt_false {color:#ccc}
|
||||
@@ -730,7 +733,7 @@ strong.sodr_nonpay {display:block;padding:5px 0;text-align:right}
|
||||
#theme_list li .tmli_if:hover button.tmli_dt{display:block}
|
||||
#theme_list li .theme_sl{float:left;border:none;margin-top:5px;padding:0 5px;height:26px;background:#999;color:#fff}
|
||||
#theme_list li .theme_sl:hover{background:#ff3061}
|
||||
#theme_list li .theme_deactive{margin-left:4px}
|
||||
#theme_list li .theme_deactive{margin-left:4px}
|
||||
#theme_list li .theme_sl_use{background:#ff3061;line-height:26px}
|
||||
#theme_list li .theme_pr{float:right;margin-top:5px;padding:0 5px;height:24px;line-height:24px; border: 1px solid #ccc; background: #fafafa; }
|
||||
#theme_list li .theme_preview{ float: right; margin-top: 5px; padding:0 5px;height:26px; border: 1px solid #ccc; background: #fafafa; margin-right:3px}
|
||||
@@ -763,4 +766,11 @@ strong.sodr_nonpay {display:block;padding:5px 0;text-align:right}
|
||||
/*전송실패 문자 재전송 내역*/
|
||||
.sms_table{padding:0 20px 40px;}
|
||||
.sms_table table th{border:1px solid #ddd;padding:9px 0}
|
||||
.sms_table table td{border:1px solid #ddd;text-align:center;width:16%;padding:9px 0}
|
||||
.sms_table table td{border:1px solid #ddd;text-align:center;width:16%;padding:9px 0}
|
||||
|
||||
/* Browscap */
|
||||
.update_processing{width:300px;height:300px;margin:0 auto;background:url(../img/ajax_loader.gif) no-repeat 0 0}
|
||||
#processing{margin: 0 auto;padding: 70px 0;max-width: 800px;border: 1px solid #eee;background: #f9f9f9;text-align:center;}
|
||||
#processing p{font-size:1.2em}
|
||||
.check_processing {width:300px;height:300px;margin:0 auto;background:url(../img/check.png) no-repeat 50% 50% }
|
||||
#processing button{background:#ff3061;border:none;color:#fff;padding: 15px;width:150px;margin-top:15px}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 7.2 KiB |
@@ -244,7 +244,7 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
}
|
||||
} else {
|
||||
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
|
||||
$result = $SMS->Add($list, $reply, '', '', $wr_message, $booking, $wr_total);
|
||||
$result = $SMS->Add2($list, $reply, '', '', $wr_message, $booking, $wr_total);
|
||||
|
||||
if ($result)
|
||||
{
|
||||
|
||||
@@ -29,6 +29,9 @@ $query_string = $qstr ? '?'.$qstr : '';
|
||||
<li><a href="./visit_domain.php<?php echo $query_string ?>">도메인</a></li>
|
||||
<li><a href="./visit_browser.php<?php echo $query_string ?>">브라우저</a></li>
|
||||
<li><a href="./visit_os.php<?php echo $query_string ?>">운영체제</a></li>
|
||||
<?php if(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE) { ?>
|
||||
<li><a href="./visit_device.php<?php echo $query_string ?>">접속기기</a></li>
|
||||
<?php } ?>
|
||||
<li><a href="./visit_hour.php<?php echo $query_string ?>">시간</a></li>
|
||||
<li><a href="./visit_week.php<?php echo $query_string ?>">요일</a></li>
|
||||
<li><a href="./visit_date.php<?php echo $query_string ?>">일</a></li>
|
||||
|
||||
@@ -15,7 +15,9 @@ $sql = " select * from {$g5['visit_table']}
|
||||
where vi_date between '{$fr_date}' and '{$to_date}' ";
|
||||
$result = sql_query($sql);
|
||||
while ($row=sql_fetch_array($result)) {
|
||||
$s = get_brow($row['vi_agent']);
|
||||
$s = $row['vi_browser'];
|
||||
if(!$s)
|
||||
$s = get_brow($row['vi_agent']);
|
||||
|
||||
$arr[$s]++;
|
||||
|
||||
@@ -70,7 +72,7 @@ while ($row=sql_fetch_array($result)) {
|
||||
|
||||
<tr class="<?php echo $bg; ?>">
|
||||
<td class="td_num"><?php echo $no ?></td>
|
||||
<td class="td_category"><?php echo $key ?></td>
|
||||
<td class="td_category td_category1"><?php echo $key ?></td>
|
||||
<td>
|
||||
<div class="visit_bar">
|
||||
<span style="width:<?php echo $s_rate ?>%"></span>
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
$sub_menu = "200800";
|
||||
include_once('./_common.php');
|
||||
|
||||
auth_check($auth[$sub_menu], 'r');
|
||||
|
||||
$g5['title'] = '기기별 접속자집계';
|
||||
include_once('./visit.sub.php');
|
||||
|
||||
$colspan = 5;
|
||||
|
||||
$max = 0;
|
||||
$sum_count = 0;
|
||||
$sql = " select * from {$g5['visit_table']}
|
||||
where vi_date between '$fr_date' and '$to_date' ";
|
||||
$result = sql_query($sql);
|
||||
while ($row=sql_fetch_array($result)) {
|
||||
$s = $row['vi_device'];
|
||||
if(!$s)
|
||||
$s = '기타';
|
||||
|
||||
$arr[$s]++;
|
||||
|
||||
if ($arr[$s] > $max) $max = $arr[$s];
|
||||
|
||||
$sum_count++;
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="tbl_head01 tbl_wrap">
|
||||
<table>
|
||||
<caption><?php echo $g5['title']; ?> 목록</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">순위</th>
|
||||
<th scope="col">접속기기</th>
|
||||
<th scope="col">그래프</th>
|
||||
<th scope="col">접속자수</th>
|
||||
<th scope="col">비율(%)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="3">합계</td>
|
||||
<td><strong><?php echo $sum_count ?></strong></td>
|
||||
<td>100%</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody>
|
||||
<?php
|
||||
$i = 0;
|
||||
$k = 0;
|
||||
$save_count = -1;
|
||||
$tot_count = 0;
|
||||
if (count($arr)) {
|
||||
arsort($arr);
|
||||
foreach ($arr as $key=>$value) {
|
||||
$count = $arr[$key];
|
||||
if ($save_count != $count) {
|
||||
$i++;
|
||||
$no = $i;
|
||||
$save_count = $count;
|
||||
} else {
|
||||
$no = '';
|
||||
}
|
||||
|
||||
if (!$key) {
|
||||
$key = '기타';
|
||||
}
|
||||
|
||||
$rate = ($count / $sum_count * 100);
|
||||
$s_rate = number_format($rate, 1);
|
||||
|
||||
$bg = 'bg'.($i%2);
|
||||
?>
|
||||
|
||||
<tr class="<?php echo $bg; ?>">
|
||||
<td class="td_num"><?php echo $no ?></td>
|
||||
<td class="td_category td_category1"><?php echo $key ?></td>
|
||||
<td>
|
||||
<div class="visit_bar">
|
||||
<span style="width:<?php echo $s_rate ?>%"></span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="td_numbig"><?php echo $count ?></td>
|
||||
<td class="td_num"><?php echo $s_rate ?></td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
}
|
||||
} else {
|
||||
echo '<tr><td colspan="'.$colspan.'" class="empty_table">자료가 없습니다.</td></tr>';
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
include_once('./admin.tail.php');
|
||||
?>
|
||||
+15
-6
@@ -7,7 +7,7 @@ auth_check($auth[$sub_menu], 'r');
|
||||
$g5['title'] = '접속자집계';
|
||||
include_once('./visit.sub.php');
|
||||
|
||||
$colspan = 5;
|
||||
$colspan = 6;
|
||||
|
||||
$sql_common = " from {$g5['visit_table']} ";
|
||||
$sql_search = " where vi_date between '{$fr_date}' and '{$to_date}' ";
|
||||
@@ -41,15 +41,23 @@ $result = sql_query($sql);
|
||||
<th scope="col">IP</th>
|
||||
<th scope="col">접속 경로</th>
|
||||
<th scope="col">브라우저</th>
|
||||
<th scope="col">운영체제</th>
|
||||
<th scope="col">OS</th>
|
||||
<th scope="col">접속기기</th>
|
||||
<th scope="col">일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$brow = get_brow($row['vi_agent']);
|
||||
$os = get_os($row['vi_agent']);
|
||||
$brow = $row['vi_browser'];
|
||||
if(!$brow)
|
||||
$brow = get_brow($row['vi_agent']);
|
||||
|
||||
$os = $row['vi_os'];
|
||||
if(!$os)
|
||||
$os = get_os($row['vi_agent']);
|
||||
|
||||
$device = $row['vi_device'];
|
||||
|
||||
$link = '';
|
||||
$link2 = '';
|
||||
@@ -83,8 +91,9 @@ $result = sql_query($sql);
|
||||
<tr class="<?php echo $bg; ?>">
|
||||
<td class="td_category"><?php echo $ip ?></td>
|
||||
<td><?php echo $link ?><?php echo $title ?><?php echo $link2 ?></td>
|
||||
<td class="td_category"><?php echo $brow ?></td>
|
||||
<td class="td_category"><?php echo $os ?></td>
|
||||
<td class="td_category td_category1"><?php echo $brow ?></td>
|
||||
<td class="td_category td_category3"><?php echo $os ?></td>
|
||||
<td class="td_category td_category2"><?php echo $device; ?></td>
|
||||
<td class="td_datetime"><?php echo $row['vi_date'] ?> <?php echo $row['vi_time'] ?></td>
|
||||
</tr>
|
||||
|
||||
|
||||
+4
-2
@@ -15,7 +15,9 @@ $sql = " select * from {$g5['visit_table']}
|
||||
where vi_date between '$fr_date' and '$to_date' ";
|
||||
$result = sql_query($sql);
|
||||
while ($row=sql_fetch_array($result)) {
|
||||
$s = get_os($row['vi_agent']);
|
||||
$s = $row['vi_os'];
|
||||
if(!$s)
|
||||
$s = get_os($row['vi_agent']);
|
||||
|
||||
$arr[$s]++;
|
||||
|
||||
@@ -63,7 +65,7 @@ while ($row=sql_fetch_array($result)) {
|
||||
}
|
||||
|
||||
if (!$key) {
|
||||
$key = '직접';
|
||||
$key = 'Unknown';
|
||||
}
|
||||
|
||||
$rate = ($count / $sum_count * 100);
|
||||
|
||||
+14
-8
@@ -9,7 +9,7 @@ $g5['title'] = '접속자검색';
|
||||
include_once('./admin.head.php');
|
||||
include_once(G5_PLUGIN_PATH.'/jquery-ui/datepicker.php');
|
||||
|
||||
$colspan = 5;
|
||||
$colspan = 6;
|
||||
$listall = '<a href="'.$_SERVER['SCRIPT_NAME'].'">처음</a>'; //페이지 처음으로 (초기화용도)
|
||||
?>
|
||||
|
||||
@@ -36,6 +36,7 @@ $listall = '<a href="'.$_SERVER['SCRIPT_NAME'].'">처음</a>'; //페이지 처
|
||||
<th scope="col">접속 경로</th>
|
||||
<th scope="col">브라우저</th>
|
||||
<th scope="col">OS</th>
|
||||
<th scope="col">접속기기</th>
|
||||
<th scope="col">일시</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -68,8 +69,15 @@ $listall = '<a href="'.$_SERVER['SCRIPT_NAME'].'">처음</a>'; //페이지 처
|
||||
$result = sql_query($sql);
|
||||
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$brow = get_brow($row['vi_agent']);
|
||||
$os = get_os($row['vi_agent']);
|
||||
$brow = $row['vi_browser'];
|
||||
if(!$brow)
|
||||
$brow = get_brow($row['vi_agent']);
|
||||
|
||||
$os = $row['vi_os'];
|
||||
if(!$os)
|
||||
$os = get_os($row['vi_agent']);
|
||||
|
||||
$device = $row['vi_device'];
|
||||
|
||||
$link = "";
|
||||
$referer = "";
|
||||
@@ -92,16 +100,14 @@ $listall = '<a href="'.$_SERVER['SCRIPT_NAME'].'">처음</a>'; //페이지 처
|
||||
else
|
||||
$ip = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", G5_IP_DISPLAY, $row['vi_ip']);
|
||||
|
||||
if ($brow == '기타') $brow = '<span title="'.get_text($row['vi_agent']).'">'.$brow.'</span>';
|
||||
if ($os == '기타') $os = '<span title="'.get_text($row['vi_agent']).'">'.$os.'</span>';
|
||||
|
||||
$bg = 'bg'.($i%2);
|
||||
?>
|
||||
<tr class="<?php echo $bg; ?>">
|
||||
<td class="td_id"><a href="<?php echo $_SERVER['SCRIPT_NAME']; ?>?sfl=vi_ip&stx=<?php echo $ip; ?>"><?php echo $ip; ?></a></td>
|
||||
<td><?php echo $link.$title; ?></a></td>
|
||||
<td class="td_idsmall"><?php echo $brow; ?></td>
|
||||
<td class="td_idsmall"><?php echo $os; ?></td>
|
||||
<td class="td_idsmall td_category1"><?php echo $brow; ?></td>
|
||||
<td class="td_idsmall td_category3"><?php echo $os; ?></td>
|
||||
<td class="td_idsmall td_category2"><?php echo $device; ?></td>
|
||||
<td class="td_datetime"><a href="<?php echo $_SERVER['SCRIPT_NAME']; ?>?sfl=vi_date&stx=<?php echo $row['vi_date']; ?>"><?php echo $row['vi_date']; ?></a> <?php echo $row['vi_time']; ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
|
||||
@@ -5,8 +5,12 @@ include_once(G5_LIB_PATH.'/register.lib.php');
|
||||
$mb_email = trim($_POST['reg_mb_email']);
|
||||
$mb_id = trim($_POST['reg_mb_id']);
|
||||
|
||||
set_session('ss_check_mb_email', '');
|
||||
|
||||
if ($msg = empty_mb_email($mb_email)) die($msg);
|
||||
if ($msg = valid_mb_email($mb_email)) die($msg);
|
||||
if ($msg = prohibit_mb_email($mb_email)) die($msg);
|
||||
if ($msg = exist_mb_email($mb_email, $mb_id)) die($msg);
|
||||
|
||||
set_session('ss_check_mb_email', $mb_email);
|
||||
?>
|
||||
@@ -4,9 +4,13 @@ include_once(G5_LIB_PATH.'/register.lib.php');
|
||||
|
||||
$mb_id = trim($_POST['reg_mb_id']);
|
||||
|
||||
set_session('ss_check_mb_id', '');
|
||||
|
||||
if ($msg = empty_mb_id($mb_id)) die($msg);
|
||||
if ($msg = valid_mb_id($mb_id)) die($msg);
|
||||
if ($msg = count_mb_id($mb_id)) die($msg);
|
||||
if ($msg = exist_mb_id($mb_id)) die($msg);
|
||||
if ($msg = reserve_mb_id($mb_id)) die($msg);
|
||||
|
||||
set_session('ss_check_mb_id', $mb_id);
|
||||
?>
|
||||
@@ -5,9 +5,13 @@ include_once(G5_LIB_PATH.'/register.lib.php');
|
||||
$mb_nick = trim($_POST['reg_mb_nick']);
|
||||
$mb_id = trim($_POST['reg_mb_id']);
|
||||
|
||||
set_session('ss_check_mb_nick', '');
|
||||
|
||||
if ($msg = empty_mb_nick($mb_nick)) die($msg);
|
||||
if ($msg = valid_mb_nick($mb_nick)) die($msg);
|
||||
if ($msg = count_mb_nick($mb_nick)) die($msg);
|
||||
if ($msg = exist_mb_nick($mb_nick, $mb_id)) die($msg);
|
||||
if ($msg = reserve_mb_nick($mb_nick)) die($msg);
|
||||
|
||||
set_session('ss_check_mb_nick', $mb_nick);
|
||||
?>
|
||||
@@ -187,7 +187,7 @@ for ($i=1; $i<=count($_FILES['bf_file']['name']); $i++) {
|
||||
$shuffle = implode('', $chars_array);
|
||||
|
||||
// 첨부파일 첨부시 첨부파일명에 공백이 포함되어 있으면 일부 PC에서 보이지 않거나 다운로드 되지 않는 현상이 있습니다. (길상여의 님 090925)
|
||||
$upload[$i]['file'] = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.str_replace('%', '', urlencode(str_replace(' ', '_', $filename)));
|
||||
$upload[$i]['file'] = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.replace_filename($filename);
|
||||
|
||||
$dest_file = G5_DATA_PATH.'/qa/'.$upload[$i]['file'];
|
||||
|
||||
|
||||
@@ -79,6 +79,17 @@ if ($w == '' || $w == 'u') {
|
||||
if ($msg = valid_mb_id($mb_id)) alert($msg, "", true, true);
|
||||
if ($msg = count_mb_id($mb_id)) alert($msg, "", true, true);
|
||||
|
||||
// 이름, 닉네임에 utf-8 이외의 문자가 포함됐다면 오류
|
||||
// 서버환경에 따라 정상적으로 체크되지 않을 수 있음.
|
||||
$tmp_mb_name = iconv('UTF-8', 'UTF-8//IGNORE', $mb_name);
|
||||
if($tmp_mb_name != $mb_name) {
|
||||
alert('이름을 올바르게 입력해 주십시오.');
|
||||
}
|
||||
$tmp_mb_nick = iconv('UTF-8', 'UTF-8//IGNORE', $mb_nick);
|
||||
if($tmp_mb_nick != $mb_nick) {
|
||||
alert('닉네임을 올바르게 입력해 주십시오.');
|
||||
}
|
||||
|
||||
if ($w == '' && !$mb_password)
|
||||
alert('비밀번호가 넘어오지 않았습니다.');
|
||||
if($w == '' && $mb_password != $mb_password_re)
|
||||
@@ -103,6 +114,14 @@ if ($w == '' || $w == 'u') {
|
||||
if ($w=='') {
|
||||
if ($msg = exist_mb_id($mb_id)) alert($msg);
|
||||
|
||||
if (get_session('ss_check_mb_id') != $mb_id || get_session('ss_check_mb_nick') != $mb_nick || get_session('ss_check_mb_email') != $mb_email) {
|
||||
set_session('ss_check_mb_id', '');
|
||||
set_session('ss_check_mb_nick', '');
|
||||
set_session('ss_check_mb_email', '');
|
||||
|
||||
alert('올바른 방법으로 이용해 주십시오.');
|
||||
}
|
||||
|
||||
// 본인확인 체크
|
||||
if($config['cf_cert_use'] && $config['cf_cert_req']) {
|
||||
if(trim($_POST['cert_no']) != $_SESSION['ss_cert_no'] || !$_SESSION['ss_cert_no'])
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
if(!(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE))
|
||||
return;
|
||||
|
||||
// Browscap 캐시 파일이 있으면 실행
|
||||
if(defined('G5_VISIT_BROWSCAP_USE') && G5_VISIT_BROWSCAP_USE && is_file(G5_DATA_PATH.'/cache/browscap_cache.php')) {
|
||||
include_once(G5_PLUGIN_PATH.'/browscap/Browscap.php');
|
||||
|
||||
$browscap = new phpbrowscap\Browscap(G5_DATA_PATH.'/cache');
|
||||
$browscap->doAutoUpdate = false;
|
||||
$browscap->cacheFilename = 'browscap_cache.php';
|
||||
|
||||
$info = $browscap->getBrowser($_SERVER['HTTP_USER_AGENT']);
|
||||
|
||||
$vi_browser = $info->Comment;
|
||||
$vi_os = $info->Platform;
|
||||
$vi_device = $info->Device_Type;
|
||||
}
|
||||
?>
|
||||
@@ -15,7 +15,13 @@ if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR'])
|
||||
if (isset($_SERVER['HTTP_REFERER']))
|
||||
$referer = escape_trim(clean_xss_tags($_SERVER['HTTP_REFERER']));
|
||||
$user_agent = escape_trim(clean_xss_tags($_SERVER['HTTP_USER_AGENT']));
|
||||
$sql = " insert {$g5['visit_table']} ( vi_id, vi_ip, vi_date, vi_time, vi_referer, vi_agent ) values ( '{$vi_id}', '{$remote_addr}', '".G5_TIME_YMD."', '".G5_TIME_HIS."', '{$referer}', '{$user_agent}' ) ";
|
||||
$vi_browser = '';
|
||||
$vi_os = '';
|
||||
$vi_device = '';
|
||||
if(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE) {
|
||||
include_once(G5_BBS_PATH.'/visit_browscap.inc.php');
|
||||
}
|
||||
$sql = " insert {$g5['visit_table']} ( vi_id, vi_ip, vi_date, vi_time, vi_referer, vi_agent, vi_browser, vi_os, vi_device ) values ( '{$vi_id}', '{$remote_addr}', '".G5_TIME_YMD."', '".G5_TIME_HIS."', '{$referer}', '{$user_agent}', '{$vi_browser}', '{$vi_os}', '{$vi_device}' ) ";
|
||||
|
||||
$result = sql_query($sql, FALSE);
|
||||
// 정상으로 INSERT 되었다면 방문자 합계에 반영
|
||||
|
||||
@@ -485,7 +485,7 @@ for ($i=0; $i<count($_FILES['bf_file']['name']); $i++) {
|
||||
$shuffle = implode('', $chars_array);
|
||||
|
||||
// 첨부파일 첨부시 첨부파일명에 공백이 포함되어 있으면 일부 PC에서 보이지 않거나 다운로드 되지 않는 현상이 있습니다. (길상여의 님 090925)
|
||||
$upload[$i]['file'] = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.str_replace('%', '', urlencode(str_replace(' ', '_', $filename)));
|
||||
$upload[$i]['file'] = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.replace_filename($filename);
|
||||
|
||||
$dest_file = G5_DATA_PATH.'/file/'.$bo_table.'/'.$upload[$i]['file'];
|
||||
|
||||
|
||||
+7
-1
@@ -5,7 +5,7 @@
|
||||
********************/
|
||||
|
||||
define('G5_VERSION', '그누보드5');
|
||||
define('G5_GNUBOARD_VER', '5.1.5');
|
||||
define('G5_GNUBOARD_VER', '5.1.7');
|
||||
|
||||
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
||||
define('_GNUBOARD_', true);
|
||||
@@ -198,6 +198,12 @@ define('G5_IS_MOBILE_DHTML_USE', false);
|
||||
// MySQLi 사용여부를 설정합니다.
|
||||
define('G5_MYSQLI_USE', true);
|
||||
|
||||
// Browscap 사용여부를 설정합니다.
|
||||
define('G5_BROWSCAP_USE', true);
|
||||
|
||||
// 접속자 기록 때 Browscap 사용여부를 설정합니다.
|
||||
define('G5_VISIT_BROWSCAP_USE', false);
|
||||
|
||||
// ip 숨김방법 설정
|
||||
/* 123.456.789.012 ip의 숨김 방법을 변경하는 방법은
|
||||
\\1 은 123, \\2는 456, \\3은 789, \\4는 012에 각각 대응되므로
|
||||
|
||||
+16
-8
@@ -119,17 +119,25 @@ a:hover, a:focus, a:active {color:#000;text-decoration:underline}
|
||||
/* ie6 이미지 너비 지정 */
|
||||
.img_fix {width:100%;height:auto}
|
||||
|
||||
/* 캡챠 자동등록(입력)방지 기본 */
|
||||
/* 캡챠 자동등록(입력)방지 기본 -pc */
|
||||
#captcha {display:inline-block;position:relative}
|
||||
#captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden}
|
||||
#captcha #captcha_img {width:100px;height:41px;border:1px solid #e9e9e9}
|
||||
#captcha #captcha_mp3 {position:absolute;top:0;left:101px;;margin:0;padding:0;width:23px;height:22px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer}
|
||||
#captcha #captcha_mp3 span {position:absolute;top:0;left:0;width:23px;height:22px;background:url('../plugin/kcaptcha/img/sound.gif')}
|
||||
#captcha #captcha_reload {position:absolute;top:21px;left:101px;margin:0;padding:0;width:23px;height:22px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer}
|
||||
#captcha #captcha_reload span {position:absolute;top:0;left:0;width:23px;height:22px;background:url('../plugin/kcaptcha/img/reload.gif')}
|
||||
#captcha #captcha_key {margin:0 0 0 25px;padding:0 5px;width:70px;height:41px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:2.8em}
|
||||
#captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden;}
|
||||
#captcha #captcha_img {width:160px;height:60px;border:1px solid #e9e9e9;vertical-align:top;padding:0;margin:0}
|
||||
#captcha #captcha_mp3 {position:absolute;top:0;left:161px;;margin:0;padding:0;width:31px;height:31px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer}
|
||||
#captcha #captcha_mp3 span {position:absolute;top:0;left:0;width:31px;height:31px;background:url('../img/captcha.png') no-repeat;}
|
||||
#captcha #captcha_reload {position:absolute;top:31px;left:161px;margin:0;padding:0;width:31px;height:31px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../img/captcha.png') no-repeat 0 -30px;border-top:1px solid #ccc;text-indent:-999px}
|
||||
#captcha #captcha_key {margin:0 0 0 33px;padding:0 5px;width:70px;height:60px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:2.8em;vertical-align:top}
|
||||
#captcha #captcha_info {display:block;margin:5px 0 0;font-size:0.95em;letter-spacing:-0.1em}
|
||||
|
||||
/* 캡챠 자동등록(입력)방지 기본 - mobile */
|
||||
#captcha.m_captcha audio {display:block;margin:0 0 5px;width:187px}
|
||||
#captcha.m_captcha #captcha_img {width:160px;height:60px;border:1px solid #e9e9e9;margin-bottom:3px;margin-top:5px;display:block;}
|
||||
#captcha.m_captcha #captcha_reload {position:static;margin:0;padding:0;width:31px;height:31px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../../../img/captcha.png') no-repeat 0 -30px;text-indent:-999px}
|
||||
#captcha.m_captcha #captcha_reload span{display:none;}
|
||||
#captcha.m_captcha #captcha_key {margin:0;padding:0 5px;width:115px;height:29px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:29px;margin-left:3px}
|
||||
#captcha.m_captcha #captcha_info {display:block;margin:5px 0 0;font-size:0.95em;letter-spacing:-0.1em}
|
||||
#captcha.m_captcha #captcha_mp3 {width:31px;height:31px;background:url('../img/captcha.png') no-repeat; vertical-align:top;overflow:hidden;cursor:pointer;text-indent:-9999px;border:none}
|
||||
|
||||
/* ckeditor 단축키 */
|
||||
.cke_sc {margin:0 0 5px;text-align:right}
|
||||
.btn_cke_sc{display:inline-block;padding:0 10px;height:23px;border:1px solid #ccc;background:#fafafa;color:#000;text-decoration:none;line-height:1.9em;vertical-align:middle;cursor:pointer}
|
||||
|
||||
+19
-8
@@ -53,7 +53,7 @@ a:hover, a:focus, a:active {color:#000;text-decoration:underline}
|
||||
#hd_sch {display:none;border-top:1px solid #181818;background:#282828;text-align:center}
|
||||
#hd_sch h2 {position:absolute;font-size:0;text-indent:-9999em;line-height:0;overflow:hidden}
|
||||
#hd_sch form {position:relative;padding:30px 0}
|
||||
#hd_sch #sch_stx {height:30px;border:1px solid #181818;background:#323232 !important;line-height:2.5em;vertical-align:middle}
|
||||
#hd_sch #sch_stx {height:30px;border:1px solid #181818;background:#323232 !important;line-height:2.5em;vertical-align:middle;color:#ccc}
|
||||
#hd_sch #sch_submit {margin:0;padding:0 10px;height:32px;border:0;background:#000;color:#fff;vertical-align:middle}
|
||||
#hd_sch #sch_close {display:block;margin:0;padding:10px 0;width:100%;border:0;background:#000;color:#fff}
|
||||
|
||||
@@ -109,15 +109,26 @@ a:hover, a:focus, a:active {color:#000;text-decoration:underline}
|
||||
/* 이미지 등비율 리사이징 */
|
||||
.img_fix {width:100%;height:auto}
|
||||
|
||||
/* 캡챠 자동등록(입력)방지 기본 */
|
||||
#captcha {display:inline-block;position:relative}
|
||||
#captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden}
|
||||
/* 캡챠 자동등록(입력)방지 기본 - PC */
|
||||
#captcha {display:inline-block;position:relative;}
|
||||
#captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden;font-size:0}
|
||||
#captcha audio {display:block;margin:0 0 5px;width:187px}
|
||||
#captcha #captcha_img {width:60px;height:30px;border:1px solid #e9e9e9}
|
||||
#captcha #captcha_reload {margin:0;padding:0 5px;height:32px;border:0;background:#e4eaec;vertical-align:middle;overflow:hidden;cursor:pointer}
|
||||
#captcha #captcha_key {margin:0 0 0 4px;padding:0 5px;width:50px;height:30px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:2em}
|
||||
#captcha #captcha_img {width:160px;height:60px;border:1px solid #e9e9e9;margin-bottom:3px;margin-right:32px;vertical-align:top}
|
||||
#captcha #captcha_reload {position:absolute;top:31px;left:161px;width:31px;height:31px;background:url('../img/captcha.png') no-repeat 0 -30px;border:none;border-top:1px solid #ccc;overflow:hidden;cursor:pointer;text-indent:-9999px;}
|
||||
#captcha #captcha_key {margin:0;padding:0 5px;width:70px;height:60px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:2.8em;vertical-align:top}
|
||||
#captcha #captcha_info {display:block;margin:5px 0 0;font-size:0.95em;letter-spacing:-0.1em}
|
||||
#captcha #captcha_mp3{margin:0;padding:0 5px;height:32px;border:0;background:#e4eaec;vertical-align:middle;overflow:hidden;cursor:pointer}
|
||||
#captcha #captcha_mp3 {position:absolute;top:0;left:161px;width:31px;height:31px;background:url('../img/captcha.png') no-repeat; vertical-align:top;overflow:hidden;cursor:pointer;text-indent:-9999px;border:none}
|
||||
|
||||
/* 캡챠 자동등록(입력)방지 기본 - mobile */
|
||||
#captcha.m_captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden;font-size:0}
|
||||
#captcha.m_captcha audio {display:block;margin:0 0 5px;width:187px}
|
||||
#captcha.m_captcha #captcha_img {width:160px;height:60px;border:1px solid #e9e9e9;margin-bottom:3px;display:block;}
|
||||
#captcha.m_captcha #captcha_reload {width:31px;height:31px;background:url('../img/captcha.png') no-repeat 0 -30px;border:none;overflow:hidden;cursor:pointer;text-indent:-9999px;position:static}
|
||||
#captcha.m_captcha #captcha_key {margin:0;padding:0 5px;width:115px;height:29px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:29px;margin-left:3px}
|
||||
#captcha.m_captcha #captcha_info {display:block;margin:5px 0 0;font-size:0.95em;letter-spacing:-0.1em}
|
||||
#captcha.m_captcha #captcha_mp3 {width:31px;height:31px;background:url('../img/captcha.png') no-repeat; vertical-align:top;overflow:hidden;cursor:pointer;text-indent:-9999px;border:none}
|
||||
|
||||
|
||||
|
||||
/*단축키일람 */
|
||||
.btn_cke_sc{background:#333;color:#fff;padding:5px;border:none;margin-bottom:5px}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
Binary file not shown.
@@ -28,7 +28,7 @@
|
||||
|
||||
|
||||
//require_once 'PEAR.php';
|
||||
require_once 'oleread.inc';
|
||||
require_once 'oleread.inc.php';
|
||||
//require_once 'OLE.php';
|
||||
|
||||
define('SPREADSHEET_EXCEL_READER_BIFF8', 0x600);
|
||||
|
||||
+12
-1
@@ -1454,7 +1454,7 @@ function sql_set_charset($charset, $link=null)
|
||||
if(function_exists('mysqli_set_charset') && G5_MYSQLI_USE)
|
||||
mysqli_set_charset($link, $charset);
|
||||
else
|
||||
sql_query(" set names {$charset} ");
|
||||
mysql_query(" set names {$charset} ", $link);
|
||||
}
|
||||
|
||||
|
||||
@@ -2914,6 +2914,17 @@ function get_safe_filename($name)
|
||||
return $name;
|
||||
}
|
||||
|
||||
// 파일명 치환
|
||||
function replace_filename($name)
|
||||
{
|
||||
@session_start();
|
||||
$ss_id = session_id();
|
||||
$usec = get_microtime();
|
||||
$ext = array_pop(explode('.', $name));
|
||||
|
||||
return sha1($ss_id.$_SERVER['REMOTE_ADDR'].$usec).'.'.$ext;
|
||||
}
|
||||
|
||||
// 아이코드 사용자정보
|
||||
function get_icode_userinfo($id, $pass)
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit;
|
||||
|
||||
@ini_set('memory_limit', '512M');
|
||||
@ini_set('memory_limit', '-1');
|
||||
|
||||
// 게시글리스트 썸네일 생성
|
||||
function get_list_thumbnail($bo_table, $wr_id, $thumb_width, $thumb_height, $is_create=false, $is_crop=true, $crop_mode='center', $is_sharpen=false, $um_value='80/0.5/3')
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -35,96 +35,98 @@ class KCAPTCHA{
|
||||
|
||||
$alphabet_length=strlen($alphabet);
|
||||
|
||||
do{
|
||||
/*
|
||||
// generating random keystring
|
||||
while(true){
|
||||
$this->keystring='';
|
||||
for($i=0;$i<$length;$i++){
|
||||
$this->keystring.=$allowed_symbols{mt_rand(0,strlen($allowed_symbols)-1)};
|
||||
}
|
||||
if(!preg_match('/cp|cb|ck|c6|c9|rn|rm|mm|co|do|cl|db|qp|qb|dp|ww/', $this->keystring)) break;
|
||||
}
|
||||
*/
|
||||
|
||||
$font_file=$fonts[mt_rand(0, count($fonts)-1)];
|
||||
$font=imagecreatefrompng($font_file);
|
||||
imagealphablending($font, true);
|
||||
$fontfile_width=imagesx($font);
|
||||
$fontfile_height=imagesy($font)-1;
|
||||
$font_metrics=array();
|
||||
$symbol=0;
|
||||
$reading_symbol=false;
|
||||
$font_file=$fonts[mt_rand(0, count($fonts)-1)];
|
||||
$font=imagecreatefrompng($font_file);
|
||||
imagealphablending($font, true);
|
||||
$fontfile_width=imagesx($font);
|
||||
$fontfile_height=imagesy($font)-1;
|
||||
$font_metrics=array();
|
||||
$symbol=0;
|
||||
$reading_symbol=false;
|
||||
|
||||
// loading font
|
||||
for($i=0;$i<$fontfile_width && $symbol<$alphabet_length;$i++){
|
||||
$transparent = (imagecolorat($font, $i, 0) >> 24) == 127;
|
||||
// loading font
|
||||
for($i=0;$i<$fontfile_width && $symbol<$alphabet_length;$i++){
|
||||
$transparent = (imagecolorat($font, $i, 0) >> 24) == 127;
|
||||
|
||||
if(!$reading_symbol && !$transparent){
|
||||
$font_metrics[$alphabet{$symbol}]=array('start'=>$i);
|
||||
$reading_symbol=true;
|
||||
continue;
|
||||
}
|
||||
if(!$reading_symbol && !$transparent){
|
||||
$font_metrics[$alphabet{$symbol}]=array('start'=>$i);
|
||||
$reading_symbol=true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if($reading_symbol && $transparent){
|
||||
$font_metrics[$alphabet{$symbol}]['end']=$i;
|
||||
$reading_symbol=false;
|
||||
$symbol++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if($reading_symbol && $transparent){
|
||||
$font_metrics[$alphabet{$symbol}]['end']=$i;
|
||||
$reading_symbol=false;
|
||||
$symbol++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$img=imagecreatetruecolor($width, $height);
|
||||
imagealphablending($img, true);
|
||||
$white=imagecolorallocate($img, 255, 255, 255);
|
||||
$black=imagecolorallocate($img, 0, 0, 0);
|
||||
$img=imagecreatetruecolor($width, $height);
|
||||
imagealphablending($img, true);
|
||||
$white=imagecolorallocate($img, 255, 255, 255);
|
||||
$black=imagecolorallocate($img, 0, 0, 0);
|
||||
|
||||
imagefilledrectangle($img, 0, 0, $width-1, $height-1, $white);
|
||||
imagefilledrectangle($img, 0, 0, $width-1, $height-1, $white);
|
||||
|
||||
// draw text
|
||||
$x=1;
|
||||
for($i=0;$i<strlen($this->keystring);$i++){
|
||||
$m=$font_metrics[$this->keystring{$i}];
|
||||
// draw text
|
||||
$x=1;
|
||||
$odd=mt_rand(0,1);
|
||||
if($odd==0) $odd=-1;
|
||||
for($i=0;$i<$length;$i++){
|
||||
$m=$font_metrics[$this->keystring{$i}];
|
||||
|
||||
$y=mt_rand(-$fluctuation_amplitude, $fluctuation_amplitude)+($height-$fontfile_height)/2+2;
|
||||
$y=(($i%2)*$fluctuation_amplitude - $fluctuation_amplitude/2)*$odd
|
||||
+ mt_rand(-round($fluctuation_amplitude/3), round($fluctuation_amplitude/3))
|
||||
+ ($height-$fontfile_height)/2;
|
||||
|
||||
if($no_spaces){
|
||||
$shift=0;
|
||||
if($i>0){
|
||||
$shift=10000;
|
||||
for($sy=7;$sy<$fontfile_height-20;$sy+=1){
|
||||
for($sx=$m['start']-1;$sx<$m['end'];$sx+=1){
|
||||
$rgb=imagecolorat($font, $sx, $sy);
|
||||
$opacity=$rgb>>24;
|
||||
if($opacity<127){
|
||||
$left=$sx-$m['start']+$x;
|
||||
$py=$sy+$y;
|
||||
if($py>$height) break;
|
||||
for($px=min($left,$width-1);$px>$left-12 && $px>=0;$px-=1){
|
||||
$color=imagecolorat($img, $px, $py) & 0xff;
|
||||
if($color+$opacity<190){
|
||||
if($shift>$left-$px){
|
||||
$shift=$left-$px;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if($shift==10000){
|
||||
$shift=mt_rand(4,6);
|
||||
}
|
||||
if($no_spaces){
|
||||
$shift=0;
|
||||
if($i>0){
|
||||
$shift=10000;
|
||||
for($sy=3;$sy<$fontfile_height-10;$sy+=1){
|
||||
for($sx=$m['start']-1;$sx<$m['end'];$sx+=1){
|
||||
$rgb=imagecolorat($font, $sx, $sy);
|
||||
$opacity=$rgb>>24;
|
||||
if($opacity<127){
|
||||
$left=$sx-$m['start']+$x;
|
||||
$py=$sy+$y;
|
||||
if($py>$height) break;
|
||||
for($px=min($left,$width-1);$px>$left-200 && $px>=0;$px-=1){
|
||||
$color=imagecolorat($img, $px, $py) & 0xff;
|
||||
if($color+$opacity<170){ // 170 - threshold
|
||||
if($shift>$left-$px){
|
||||
$shift=$left-$px;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if($shift==10000){
|
||||
$shift=mt_rand(4,6);
|
||||
}
|
||||
|
||||
}
|
||||
}else{
|
||||
$shift=1;
|
||||
}
|
||||
imagecopy($img, $font, $x-$shift, $y, $m['start'], 1, $m['end']-$m['start'], $fontfile_height);
|
||||
$x+=$m['end']-$m['start']-$shift;
|
||||
}
|
||||
}while($x>=$width-10); // while not fit in canvas
|
||||
}
|
||||
}else{
|
||||
$shift=1;
|
||||
}
|
||||
imagecopy($img, $font, $x-$shift, $y, $m['start'], 1, $m['end']-$m['start'], $fontfile_height);
|
||||
$x+=$m['end']-$m['start']-$shift;
|
||||
}
|
||||
|
||||
//noise
|
||||
$white=imagecolorallocate($font, 255, 255, 255);
|
||||
$black=imagecolorallocate($font, 0, 0, 0);
|
||||
for($i=0;$i<(($height-30)*$x)*$white_noise_density;$i++){
|
||||
imagesetpixel($img, mt_rand(0, $x-1), mt_rand(10, $height-15), $white);
|
||||
}
|
||||
for($i=0;$i<(($height-30)*$x)*$black_noise_density;$i++){
|
||||
imagesetpixel($img, mt_rand(0, $x-1), mt_rand(10, $height-15), $black);
|
||||
}
|
||||
|
||||
$center=$x/2;
|
||||
|
||||
|
||||
@@ -6,21 +6,31 @@ $alphabet = "0123456789abcdefghijklmnopqrstuvwxyz"; # do not change without chan
|
||||
|
||||
# symbols used to draw CAPTCHA
|
||||
$allowed_symbols = "0123456789"; #digits
|
||||
//$allowed_symbols = "0123456789abcdef"; #digits // 스캔 방지를 위하여 abcdef 추가 151029 15:00
|
||||
//$allowed_symbols = "abcdeghkmnpqsuvxyz"; #digits
|
||||
//$allowed_symbols = "23456789abcdeghkmnpqsuvxyz"; #alphabet without similar symbols (o=0, 1=l, i=j, t=f)
|
||||
|
||||
# folder with fonts
|
||||
$fontsdir = 'fonts';
|
||||
$fontsdir = 'fonts';
|
||||
|
||||
# CAPTCHA string length
|
||||
//$length = mt_rand(5,6); # random 5 or 6
|
||||
$length = 6;
|
||||
|
||||
# CAPTCHA image size (you do not need to change it, whis parameters is optimal)
|
||||
$width = 120;
|
||||
$width = 160;
|
||||
$height = 60;
|
||||
|
||||
# symbol's vertical fluctuation amplitude divided by 2
|
||||
$fluctuation_amplitude = 5;
|
||||
//$fluctuation_amplitude = 5;
|
||||
//$fluctuation_amplitude = 11; // 파동&진폭 151028 14:00
|
||||
$fluctuation_amplitude = 5; // 파동&진폭 원래대로 151029 15:00
|
||||
|
||||
#noise
|
||||
//$white_noise_density=0; // no white noise
|
||||
$white_noise_density=1/6;
|
||||
//$black_noise_density=0; // no black noise
|
||||
$black_noise_density=1/20;
|
||||
|
||||
# increase safety by prevention of spaces between symbols
|
||||
$no_spaces = false;
|
||||
|
||||
@@ -379,7 +379,7 @@ if($config['cf_sms_type'] == 'LMS') {
|
||||
break;
|
||||
}
|
||||
}
|
||||
function Add($strDest, $strCallBack, $strCaller, $strURL, $strMessage, $strDate="", $nCount) {
|
||||
function Add2($strDest, $strCallBack, $strCaller, $strURL, $strMessage, $strDate="", $nCount) {
|
||||
global $g5;
|
||||
|
||||
$Error = $this->CheckCommonTypeDest($strDest, $nCount);
|
||||
|
||||
+16
-13
@@ -119,17 +119,25 @@ a:hover, a:focus, a:active {color:#000;text-decoration:underline}
|
||||
/* ie6 이미지 너비 지정 */
|
||||
.img_fix {width:100%;height:auto}
|
||||
|
||||
/* 캡챠 자동등록(입력)방지 기본 */
|
||||
/* 캡챠 자동등록(입력)방지 기본 -pc */
|
||||
#captcha {display:inline-block;position:relative}
|
||||
#captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden}
|
||||
#captcha #captcha_img {width:100px;height:41px;border:1px solid #e9e9e9}
|
||||
#captcha #captcha_mp3 {position:absolute;top:0;left:101px;;margin:0;padding:0;width:23px;height:22px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer}
|
||||
#captcha #captcha_mp3 span {position:absolute;top:0;left:0;width:23px;height:22px;background:url('../../../plugin/kcaptcha/img/sound.gif')}
|
||||
#captcha #captcha_reload {position:absolute;top:21px;left:101px;margin:0;padding:0;width:23px;height:22px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer}
|
||||
#captcha #captcha_reload span {position:absolute;top:0;left:0;width:23px;height:22px;background:url('../../../plugin/kcaptcha/img/reload.gif')}
|
||||
#captcha #captcha_key {margin:0 0 0 25px;padding:0 5px;width:70px;height:41px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:2.8em}
|
||||
#captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden;}
|
||||
#captcha #captcha_img {width:160px;height:60px;border:1px solid #e9e9e9;vertical-align:top;padding:0;margin:0}
|
||||
#captcha #captcha_mp3 {position:absolute;top:0;left:161px;;margin:0;padding:0;width:31px;height:31px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer}
|
||||
#captcha #captcha_mp3 span {position:absolute;top:0;left:0;width:31px;height:31px;background:url('../../../img/captcha.png') no-repeat;}
|
||||
#captcha #captcha_reload {position:absolute;top:31px;left:161px;margin:0;padding:0;width:31px;height:31px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../../../img/captcha.png') no-repeat 0 -30px;border-top:1px solid #ccc;text-indent:-999px}
|
||||
#captcha #captcha_key {margin:0 0 0 33px;padding:0 5px;width:70px;height:60px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:2.8em;vertical-align:top}
|
||||
#captcha #captcha_info {display:block;margin:5px 0 0;font-size:0.95em;letter-spacing:-0.1em}
|
||||
|
||||
/* 캡챠 자동등록(입력)방지 기본 - mobile */
|
||||
#captcha.m_captcha audio {display:block;margin:0 0 5px;width:187px}
|
||||
#captcha.m_captcha #captcha_img {width:160px;height:60px;border:1px solid #e9e9e9;margin-bottom:3px;margin-top:5px;display:block;}
|
||||
#captcha.m_captcha #captcha_reload {position:static;margin:0;padding:0;width:31px;height:31px;border:0;background:transparent;vertical-align:middle;overflow:hidden;cursor:pointer;background:url('../../../img/captcha.png') no-repeat 0 -30px;text-indent:-999px}
|
||||
#captcha.m_captcha #captcha_reload span{display:none;}
|
||||
#captcha.m_captcha #captcha_key {margin:0;padding:0 5px;width:115px;height:29px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:29px;margin-left:3px}
|
||||
#captcha.m_captcha #captcha_info {display:block;margin:5px 0 0;font-size:0.95em;letter-spacing:-0.1em}
|
||||
#captcha.m_captcha #captcha_mp3 {width:31px;height:31px;background:url('../../../img/captcha.png') no-repeat; vertical-align:top;overflow:hidden;cursor:pointer;text-indent:-9999px;border:none}
|
||||
|
||||
/* ckeditor 단축키 */
|
||||
.cke_sc {margin:0 0 5px;text-align:right}
|
||||
.btn_cke_sc{display:inline-block;padding:0 10px;height:23px;border:1px solid #ccc;background:#fafafa;color:#000;text-decoration:none;line-height:1.9em;vertical-align:middle;cursor:pointer}
|
||||
@@ -281,8 +289,3 @@ a.btn_admin:focus, a.btn_admin:hover {text-decoration:none}
|
||||
/* Mobile화면으로 */
|
||||
#device_change {display:block;margin:0.3em;padding:0.5em 0;border:1px solid #eee;border-radius:2em;background:#fff;color:#000;font-size:2em;text-decoration:none;text-align:center}
|
||||
|
||||
/*캡챠 모바일에서 피시버젼*/
|
||||
#captcha.m_captcha audio{display:block;margin:5px 0 10px}
|
||||
#captcha.m_captcha #captcha_key{margin-left:3px }
|
||||
#captcha.m_captcha #captcha_reload span{background:none;display:inline}
|
||||
#captcha.m_captcha #captcha_reload {position:relative ;width:auto;top:0;left:0;margin:0;padding:0 10px;height:43px;border:0;background:#e4eaec;vertical-align:middle;overflow:hidden;cursor:pointer}
|
||||
|
||||
@@ -53,7 +53,7 @@ a:hover, a:focus, a:active {color:#000;text-decoration:underline}
|
||||
#hd_sch {display:none;border-top:1px solid #181818;background:#282828;text-align:center}
|
||||
#hd_sch h2 {position:absolute;font-size:0;text-indent:-9999em;line-height:0;overflow:hidden}
|
||||
#hd_sch form {position:relative;padding:30px 0}
|
||||
#hd_sch #sch_stx {height:30px;border:1px solid #181818;background:#323232 !important;line-height:2.5em;vertical-align:middle}
|
||||
#hd_sch #sch_stx {height:30px;border:1px solid #181818;background:#323232 !important;line-height:2.5em;vertical-align:middle;color:#bbb}
|
||||
#hd_sch #sch_submit {margin:0;padding:0 10px;height:32px;border:0;background:#000;color:#fff;vertical-align:middle}
|
||||
#hd_sch #sch_close {display:block;margin:0;padding:10px 0;width:100%;border:0;background:#000;color:#fff}
|
||||
|
||||
@@ -109,15 +109,25 @@ a:hover, a:focus, a:active {color:#000;text-decoration:underline}
|
||||
/* 이미지 등비율 리사이징 */
|
||||
.img_fix {width:100%;height:auto}
|
||||
|
||||
/* 캡챠 자동등록(입력)방지 기본 */
|
||||
#captcha {display:inline-block;position:relative}
|
||||
#captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden}
|
||||
/* 캡챠 자동등록(입력)방지 기본 - PC */
|
||||
#captcha {display:inline-block;position:relative;}
|
||||
#captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden;font-size:0}
|
||||
#captcha audio {display:block;margin:0 0 5px;width:187px}
|
||||
#captcha #captcha_img {width:60px;height:30px;border:1px solid #e9e9e9}
|
||||
#captcha #captcha_reload {margin:0;padding:0 5px;height:32px;border:0;background:#e4eaec;vertical-align:middle;overflow:hidden;cursor:pointer}
|
||||
#captcha #captcha_key {margin:0 0 0 4px;padding:0 5px;width:50px;height:30px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:2em}
|
||||
#captcha #captcha_img {width:160px;height:60px;border:1px solid #e9e9e9;margin-bottom:3px;margin-right:32px;vertical-align:top}
|
||||
#captcha #captcha_reload {position:absolute;top:31px;left:161px;width:31px;height:31px;background:url('../../../img/captcha.png') no-repeat 0 -30px;border:none;border-top:1px solid #ccc;overflow:hidden;cursor:pointer;text-indent:-9999px;}
|
||||
#captcha #captcha_key {margin:0;padding:0 5px;width:70px;height:60px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:2.8em;vertical-align:top}
|
||||
#captcha #captcha_info {display:block;margin:5px 0 0;font-size:0.95em;letter-spacing:-0.1em}
|
||||
#captcha #captcha_mp3{margin:0;padding:0 5px;height:32px;border:0;background:#e4eaec;vertical-align:middle;overflow:hidden;cursor:pointer}
|
||||
#captcha #captcha_mp3 {position:absolute;top:0;left:161px;width:31px;height:31px;background:url('../../../img/captcha.png') no-repeat; vertical-align:top;overflow:hidden;cursor:pointer;text-indent:-9999px;border:none}
|
||||
|
||||
/* 캡챠 자동등록(입력)방지 기본 - mobile */
|
||||
#captcha.m_captcha legend {position:absolute;margin:0;padding:0;font-size:0;line-height:0;text-indent:-9999em;overflow:hidden;font-size:0}
|
||||
#captcha.m_captcha audio {display:block;margin:0 0 5px;width:187px}
|
||||
#captcha.m_captcha #captcha_img {width:160px;height:60px;border:1px solid #e9e9e9;margin-bottom:3px;display:block;}
|
||||
#captcha.m_captcha #captcha_reload {width:31px;height:31px;background:url('../../../img/captcha.png') no-repeat 0 -30px;border:none;overflow:hidden;cursor:pointer;text-indent:-9999px;position:static}
|
||||
#captcha.m_captcha #captcha_key {margin:0;padding:0 5px;width:115px;height:29px;border:1px solid #b8c9c2;background:#f7f7f7;font-size:1.333em;font-weight:bold;text-align:center;line-height:29px;margin-left:3px}
|
||||
#captcha.m_captcha #captcha_info {display:block;margin:5px 0 0;font-size:0.95em;letter-spacing:-0.1em}
|
||||
#captcha.m_captcha #captcha_mp3 {width:31px;height:31px;background:url('../../../img/captcha.png') no-repeat; vertical-align:top;overflow:hidden;cursor:pointer;text-indent:-9999px;border:none}
|
||||
|
||||
|
||||
/*단축키일람 */
|
||||
.btn_cke_sc{background:#333;color:#fff;padding:5px;border:none;margin-bottom:5px}
|
||||
|
||||
Reference in New Issue
Block a user