diff --git a/adm/admin.menu100.php b/adm/admin.menu100.php
index 6ac1e32ba..4670cb9ef 100644
--- a/adm/admin.menu100.php
+++ b/adm/admin.menu100.php
@@ -11,8 +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('100510', 'Browscap 업데이트', G5_ADMIN_URL.'/browscap.php', 'cf_browscap'),
- 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');
?>
\ No newline at end of file
diff --git a/adm/browscap.php b/adm/browscap.php
index 0a3323fcf..25f2f511d 100644
--- a/adm/browscap.php
+++ b/adm/browscap.php
@@ -2,6 +2,9 @@
$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('최고관리자만 접근 가능합니다.');
diff --git a/adm/browscap_convert.php b/adm/browscap_convert.php
new file mode 100644
index 000000000..c01a92af8
--- /dev/null
+++ b/adm/browscap_convert.php
@@ -0,0 +1,40 @@
+=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE))
+ alert('사용할 수 없는 기능입니다.', G5_ADMIN_URL);
+
+if ($is_admin != 'super')
+ alert('최고관리자만 접근 가능합니다.');
+
+$g5['title'] = '접속로그 변환';
+include_once('./admin.head.php');
+?>
+
+
+
접속로그 Browscap 정보로 변환하시려면 아래 업데이트 버튼을 클릭해 주세요.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/adm/browscap_converter.php b/adm/browscap_converter.php
new file mode 100644
index 000000000..0b4983702
--- /dev/null
+++ b/adm/browscap_converter.php
@@ -0,0 +1,86 @@
+=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE))
+ die('사용할 수 없는 기능입니다.');
+
+if($is_admin != 'super')
+ die('최고관리자로 로그인 후 실행해 주세요.');
+
+// 접속자 정보 필드 추가
+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);
+}
+
+// browscap cache 파일 체크
+if(!is_file(G5_DATA_PATH.'/cache/browscap_cache.php')) {
+ echo 'Browscap 정보가 없습니다. 아래 링크로 이동해 Browscap 정보를 업데이트 하세요.
'.PHP_EOL;
+ echo 'Browscap 업데이트
'.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_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++) {
+ if(!$row['vi_agent'])
+ continue;
+
+ $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 '변환완료
';
+else
+ echo '총 '.number_format($total_count).'건 중 '.number_format($cnt).'건 변환완료
접속로그를 추가로 변환하시려면 아래 업데이트 버튼을 클릭해 주세요.
';
+?>
\ No newline at end of file
diff --git a/adm/browscap_update.php b/adm/browscap_update.php
index 2b27c237f..e27a73974 100644
--- a/adm/browscap_update.php
+++ b/adm/browscap_update.php
@@ -7,6 +7,9 @@ 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('최고관리자만 접근 가능합니다.');
diff --git a/adm/visit.sub.php b/adm/visit.sub.php
index a9b3d7468..4d1f97f42 100644
--- a/adm/visit.sub.php
+++ b/adm/visit.sub.php
@@ -29,7 +29,9 @@ $query_string = $qstr ? '?'.$qstr : '';
도메인
브라우저
운영체제
+ =') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE) { ?>
접속기기
+
시간
요일
일
diff --git a/adm/visit_device.php b/adm/visit_device.php
index 629a87d18..76aaffd39 100644
--- a/adm/visit_device.php
+++ b/adm/visit_device.php
@@ -17,7 +17,7 @@ $result = sql_query($sql);
while ($row=sql_fetch_array($result)) {
$s = $row['vi_device'];
if(!$s)
- $s = get_device($row['vi_agent']);
+ $s = '기타';
$arr[$s]++;
@@ -65,7 +65,7 @@ while ($row=sql_fetch_array($result)) {
}
if (!$key) {
- $key = 'Unknown';
+ $key = '기타';
}
$rate = ($count / $sum_count * 100);
diff --git a/adm/visit_search.php b/adm/visit_search.php
index 269c20b52..5ce251388 100644
--- a/adm/visit_search.php
+++ b/adm/visit_search.php
@@ -78,8 +78,6 @@ $listall = '처음'; //페이지 처
$os = get_os($row['vi_agent']);
$device = $row['vi_device'];
- if(!$device)
- $device = get_device($row['vi_agent']);
$link = "";
$referer = "";
diff --git a/bbs/visit_insert.inc.php b/bbs/visit_insert.inc.php
index 994dcb1e7..624f20a33 100644
--- a/bbs/visit_insert.inc.php
+++ b/bbs/visit_insert.inc.php
@@ -15,12 +15,24 @@ 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']));
- // Browscap 캐시 파일이 있으면 실행
- if(is_file(G5_DATA_PATH.'/cache/browscap_cache.php')) {
- $browscap = get_browscap_info($_SERVER['HTTP_USER_AGENT']);
- $vi_browser = $browscap->Comment;
- $vi_os = $browscap->Platform;
- $vi_device = $browscap->Device_Type;
+ $vi_browser = '';
+ $vi_os = '';
+ $vi_device = '';
+ if(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE) {
+ // 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;
+ }
}
$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}' ) ";
diff --git a/config.php b/config.php
index 4d19c4bae..f969d91a2 100644
--- a/config.php
+++ b/config.php
@@ -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에 각각 대응되므로
diff --git a/lib/common.lib.php b/lib/common.lib.php
index dbce98d82..80d90b64a 100644
--- a/lib/common.lib.php
+++ b/lib/common.lib.php
@@ -3173,22 +3173,4 @@ function check_vaild_callback($callback){
return true;
}
}
-
-// Browscap 정보 얻기
-function get_browscap_info($agent)
-{
- if(!$agent)
- return false;
-
- include_once(G5_PLUGIN_PATH.'/browscap/Browscap.php');
-
- $browscap = new phpbrowscap\Browscap(G5_DATA_PATH.'/cache');
- $browscap->updateMethod = 'cURL';
- $browscap->doAutoUpdate = false;
- $browscap->cacheFilename = 'browscap_cache.php';
-
- $info = $browscap->getBrowser($agent);
-
- return $info;
-}
?>
\ No newline at end of file
diff --git a/lib/visit.lib.php b/lib/visit.lib.php
index 1abde1dac..1808fd5f7 100644
--- a/lib/visit.lib.php
+++ b/lib/visit.lib.php
@@ -50,22 +50,51 @@ function visit($skin_dir='basic')
// get_browser() 함수는 이미 있음
function get_brow($agent)
{
- $info = get_browscap_info($agent);
+ $agent = strtolower($agent);
- return $info->Comment;
+ //echo $agent; echo "
";
+
+ if (preg_match("/msie ([1-9][0-9]\.[0-9]+)/", $agent, $m)) { $s = 'MSIE '.$m[1]; }
+ else if(preg_match("/firefox/", $agent)) { $s = "FireFox"; }
+ else if(preg_match("/chrome/", $agent)) { $s = "Chrome"; }
+ else if(preg_match("/x11/", $agent)) { $s = "Netscape"; }
+ else if(preg_match("/opera/", $agent)) { $s = "Opera"; }
+ else if(preg_match("/gec/", $agent)) { $s = "Gecko"; }
+ else if(preg_match("/bot|slurp/", $agent)) { $s = "Robot"; }
+ else if(preg_match("/internet explorer/", $agent)) { $s = "IE"; }
+ else if(preg_match("/mozilla/", $agent)) { $s = "Mozilla"; }
+ else { $s = "기타"; }
+
+ return $s;
}
function get_os($agent)
{
- $info = get_browscap_info($agent);
+ $agent = strtolower($agent);
- return $info->Platform;
-}
+ //echo $agent; echo "
";
-function get_device($agent)
-{
- $info = get_browscap_info($agent);
+ if (preg_match("/windows 98/", $agent)) { $s = "98"; }
+ else if(preg_match("/windows 95/", $agent)) { $s = "95"; }
+ else if(preg_match("/windows nt 4\.[0-9]*/", $agent)) { $s = "NT"; }
+ else if(preg_match("/windows nt 5\.0/", $agent)) { $s = "2000"; }
+ else if(preg_match("/windows nt 5\.1/", $agent)) { $s = "XP"; }
+ else if(preg_match("/windows nt 5\.2/", $agent)) { $s = "2003"; }
+ else if(preg_match("/windows nt 6\.0/", $agent)) { $s = "Vista"; }
+ else if(preg_match("/windows nt 6\.1/", $agent)) { $s = "Windows7"; }
+ else if(preg_match("/windows nt 6\.2/", $agent)) { $s = "Windows8"; }
+ else if(preg_match("/windows 9x/", $agent)) { $s = "ME"; }
+ else if(preg_match("/windows ce/", $agent)) { $s = "CE"; }
+ else if(preg_match("/mac/", $agent)) { $s = "MAC"; }
+ else if(preg_match("/linux/", $agent)) { $s = "Linux"; }
+ else if(preg_match("/sunos/", $agent)) { $s = "sunOS"; }
+ else if(preg_match("/irix/", $agent)) { $s = "IRIX"; }
+ else if(preg_match("/phone/", $agent)) { $s = "Phone"; }
+ else if(preg_match("/bot|slurp/", $agent)) { $s = "Robot"; }
+ else if(preg_match("/internet explorer/", $agent)) { $s = "IE"; }
+ else if(preg_match("/mozilla/", $agent)) { $s = "Mozilla"; }
+ else { $s = "기타"; }
- return $info->Device_Type;
+ return $s;
}
?>
\ No newline at end of file