/spb3/sinc/header.php
sitePHPbasic 디버그 모드 : WARNING
[2] file(http://spb3.staredong.com/spb3_diff_source.php?md5_path=%2Fspb3%2Fsinc%2Fheader.php): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
Line : 89 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 file() 함수사용, line(89), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => file(http://spb3.staredong.com/spb3_diff_source.php?md5_path=%2Fspb3%2Fsinc%2Fheader.php): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 89 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => file(http://spb3.staredong.com/spb3_diff_source.php?md5_path=%2Fspb3%2Fsinc%2Fheader.php): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 89 [4] => Array ( [_GET] => Array ( [md5_path] => /spb3/sinc/header.php ) [_POST] => Array ( ) [_COOKIE] => Array ( ) [_FILES] => Array ( ) [_SERVER] => Array ( [HTTP_USER_AGENT] => CCBot/2.0 (https://commoncrawl.org/faq/) [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.5 [HTTP_ACCEPT_ENCODING] => br,gzip [HTTP_HOST] => kamprs.or.kr [HTTP_CONNECTION] => Keep-Alive [PATH] => /sbin:/usr/sbin:/bin:/usr/bin [SERVER_SIGNATURE] =>
Apache/2.2.3 (CentOS) Server at kamprs.or.kr Port 80
[SERVER_SOFTWARE] => Apache/2.2.3 (CentOS) [SERVER_NAME] => kamprs.or.kr [SERVER_ADDR] => 61.14.208.190 [SERVER_PORT] => 80 [REMOTE_ADDR] => 18.204.2.231 [DOCUMENT_ROOT] => /wecan/cc/cc.sdong.kr [SERVER_ADMIN] => root@localhost [SCRIPT_FILENAME] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [REMOTE_PORT] => 59676 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => md5_path=%2Fspb3%2Fsinc%2Fheader.php [REQUEST_URI] => /spb3/sadmin/util/svn/spb3_diff.php?md5_path=%2Fspb3%2Fsinc%2Fheader.php [SCRIPT_NAME] => /spb3/sadmin/util/svn/spb3_diff.php [PHP_SELF] => /spb3/sadmin/util/svn/spb3_diff.php [REQUEST_TIME_FLOAT] => 1634534246.809 [REQUEST_TIME] => 1634534246 ) [GLOBALS] => Array *RECURSION* [SITE] => Array ( [database] => [th] => spb3_ [uh] => /spb3/ [home] => /spb3/ [name] => sitePHPbasic [company] => 뉴21커뮤니티(주) [webmaster] => spb@sdong.kr [hp] => 16449501 [version] => 3.2.0 [debug] => 2 [home_path] => /wecan/cc/cc.sdong.kr/ [spb3_path] => /wecan/cc/cc.sdong.kr/spb3/ [html_path] => /wecan/cc/cc.sdong.kr/spb3/sinc/skin/ [lib_path] => /wecan/cc/cc.sdong.kr/spb3/sinc/lib/ ) [_SESSION] => Array ( ) [spb_error_checktime_time] => class_spb_checktime Object ( [vars] => Array ( ) ) [thisPath] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/ [file_source] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [http_response_header] => Array ( [0] => HTTP/1.1 404 Not Found [1] => Date: Mon, 18 Oct 2021 05:17:27 GMT [2] => Server: Apache/2.2.3 (CentOS) [3] => Content-Length: 301 [4] => Connection: close [5] => Content-Type: text/html; charset=iso-8859-1 ) ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 89 [function] => file [args] => Array ( [0] => http://spb3.staredong.com/spb3_diff_source.php?md5_path=%2Fspb3%2Fsinc%2Fheader.php ) ) ) [key] => 1 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 89 [function] => file [args] => Array ( [0] => http://spb3.staredong.com/spb3_diff_source.php?md5_path=%2Fspb3%2Fsinc%2Fheader.php ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] file(): Filename cannot be empty
Line : 119 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 file() 함수사용, line(119), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => file(): Filename cannot be empty [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 119 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => file(): Filename cannot be empty [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 119 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 119 [function] => file [args] => Array ( [0] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => 0 ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => 0 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => //======================================================= [oindex] => 1 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => //======================================================= ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => //======================================================= [oindex] => 1 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [oindex] => 2 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [oindex] => 2 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 설 명 : sitePHPbasic 해더 파일(header.php) [oindex] => 3 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // 설 명 : sitePHPbasic 해더 파일(header.php) ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 설 명 : sitePHPbasic 해더 파일(header.php) [oindex] => 3 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [oindex] => 4 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [oindex] => 4 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // Project: sitePHPbasic [oindex] => 5 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // Project: sitePHPbasic ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // Project: sitePHPbasic [oindex] => 5 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // ChangeLog [oindex] => 6 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // ChangeLog ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // ChangeLog [oindex] => 6 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // DATE 수정인 수정 내용 [oindex] => 7 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // DATE 수정인 수정 내용 ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // DATE 수정인 수정 내용 [oindex] => 7 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // -------- ------ ------------------------------------ [oindex] => 8 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // -------- ------ ------------------------------------ ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // -------- ------ ------------------------------------ [oindex] => 8 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [oindex] => 9 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [oindex] => 9 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [oindex] => 10 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [oindex] => 10 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [oindex] => 11 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // 09/04/21 박선민 debug ip보안과 log기능 개선 ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [oindex] => 11 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 09/05/08 박선민 debug 개선 [oindex] => 12 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // 09/05/08 박선민 debug 개선 ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 09/05/08 박선민 debug 개선 [oindex] => 12 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 09/09/27 박선민 bugfix - 57L [oindex] => 13 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // 09/09/27 박선민 bugfix - 57L ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 09/09/27 박선민 bugfix - 57L [oindex] => 13 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => //======================================================= [oindex] => 14 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => //======================================================= ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => //======================================================= [oindex] => 14 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 해킹체크 [oindex] => 15 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => // 해킹체크 ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => // 해킹체크 [oindex] => 15 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [oindex] => 16 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 122 [function] => array_keys [args] => Array ( [0] => [1] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [4] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 4 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] Invalid argument supplied for foreach()
Line : 123 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(123), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#1 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => Invalid argument supplied for foreach() [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 123 [arr] => Array ( [0] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 123 [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => Invalid argument supplied for foreach() [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 123 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [109] => require_once(dirname(__FILE__).'/ipconfig.php'); [110] => if(!$IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [111] => $SITE['exit'] = 'root사용자가 IPCONFIG에서 허용하지 않는 IP접근'; [112] => } [113] => [114] => /* [115] => if( ereg('(^|,)root(,|$)',$HEADER['priv']) ) { [116] => // 관리자만 아는 페이지이기에, 관리자 아닌 사람이 접근했다면 보안로그기록 [117] => // 매번 logon에서 uid,userid 일치 여부 체크 [118] => [119] => $sql = "SELECT uid FROM $SITE[th]logon WHERE uid=$_SESSION[seUid] and userid='$_SESSION[seUserid]' and find_in_set('root',priv)"; [120] => if(db_resultone($sql,0,'uid')<1) { [121] => //세션변수 이상 발생을 로그화 [122] => db_query("INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '비관리자 접근: $_SERVER[REQUEST_URI]\n" . __FILE__ . ':'. __LINE__ . "에서 발생','$_SERVER[REQUEST_URI]','$_SERVER[HTTP_REFERER]','$_SERVER[REMOTE_ADDR]')"); [123] => back('회원님은 root 권한이 없습니다. 방문 로그가 기록되었습니다.'); [124] => go_url('/'); [125] => } [126] => } [127] => */ [128] => [129] => // MyAdmin(MySQL 관리 페이지) 동작시 DB아이디 패스워드 특별변수 저장 [130] => if(ereg('^/spb3/sadmin/myadmin',$_SERVER['PHP_SELF'])) { [131] => $cfgServers_user=$SECURITY['db_user']; [132] => $cfgServers_pass=$SECURITY['db_pass']; [133] => } [134] => } // end if [135] => } // end if [136] => [137] => // 해킹감지 처리 [138] => if(isset($SITE['exit'])) { [139] => $sql = "INSERT INTO $SITE[th]log_secure (bid, rdate, log, host, ref_uri, ip) VALUES ( '$_SESSION[seUid]', UNIX_TIMESTAMP(), '".db_str($SITE['exit'])."','".db_str($_SERVER['REQUEST_URI'])."','".db_str($_SERVER['HTTP_REFERER'])."','$_SERVER[REMOTE_ADDR]')"; [140] => db_query($sql); [141] => sleep(5); [142] => exit($SITE['exit']); [143] => } [144] => [145] => // log_site 로그화(쿠키를 이용하여, 한시간이내 재입장은 무시!!) [146] => if( isset($HEADER['log']) and !isset($_COOKIE["ck_$HEADER[log]"]) ) { [147] => $HEADER['log'] = db_str($HEADER['log']); [148] => include($SITE['lib_path'].'class_browser_info.php'); [149] => $tmp = new BrowserInfo($_SERVER['HTTP_USER_AGENT']); [150] => [151] => // $seHTTP_REFERER는 어디서 링크하여 왔는지 저장하고, 로그인하면서 로그에 남기고 삭제된다. [152] => if( !$_SESSION['seUserid'] && !$_SESSION['seHTTP_REFERER'] && $_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST'])==false ) { [153] => $_SESSION['seHTTP_REFERER']=$_SERVER['HTTP_REFERER']; [154] => } [155] => if($_SESSION['seHTTP_REFERER']) { [156] => $parse_url = parse_url($_SESSION['seHTTP_REFERER']); [157] => $aParse_url = explode('.',$parse_url[host]); [158] => if($aParse_url[count($aParse_url)-1]=='kr') { [159] => $http_referer_host = $aParse_url[count($aParse_url)-3].'.'. $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [160] => } [161] => else { [162] => $http_referer_host = $aParse_url[count($aParse_url)-2].'.'. $aParse_url[count($aParse_url)-1]; [163] => } [164] => } [165] => db_query("INSERT INTO $SITE[th]log_site (bid, log, host, ip, ref_uri, ref_url, rdate, crm_os, crm_browser) values ('$_SESSION[seUid]', '$HEADER[log]', '$_SERVER[HTTP_HOST]','$_SERVER[REMOTE_ADDR]', '$_SESSION[seHTTP_REFERER]','$http_referer_host', UNIX_TIMESTAMP(), '{$tmp->OS} {$tmp->OS_Version}','{$tmp->Browser} {$tmp->Browser_Version}')"); [166] => // 참고 update spb3_log_site_sum set total=total+1, today=if(today_date=curdate(),today+1,1), today_date = curdate(), week=if(week_count=week(curdate()),week+1,1), week_count = week(curdate()), month=if(month_count=month(curdate()),month+1,1), month_count = month(curdate) where log='main' [167] => if($logdate=db_resultdata($SITE['th'].'log_site_sum','today_date','log',$HEADER['log'])) { [168] => if(date("Y-m-d")==$logdate) [169] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=today+1, week=week+1, month=month+1 where log='$HEADER[log]'"; [170] => else { [171] => $logdatetime = strtotime($logdate); [172] => if( date('n')!=date('n',$logdatetime) ) // 달이 틀리면 [173] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=1, today_date=curdate() where log='$HEADER[log]'"; [174] => elseif( date('W')!=date('W',$logdatetime) )// 주가 틀리면 [175] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [176] => else [177] => $sql = "update $SITE[th]log_site_sum set total=total+1, today=1, week=week+1, month=month+1, today_date=curdate() where log='$HEADER[log]'"; [178] => } [179] => } [180] => else { [181] => $sql = "insert into $SITE[th]log_site_sum set total=1, today=1, week=1, month=1, today_date=curdate(), log='$HEADER[log]', rdate=unix_timestamp()"; [182] => } [183] => db_query($sql); [184] => unset($logdate); [185] => [186] => setcookie("ck_$HEADER[log]", 'log',time()+3600); // 쿠키설정하여 1시간에 1번에 로그되도록 [187] => } [188] => [189] => // Board3 Include [190] => if($HEADER['useBoard3']) { [191] => // 1 list, 2 read, 4 write, 8 upload, 16 cate [192] => if($HEADER['useBoard3'] & 1) include_once($SITE['lib_path'].'function_board3list.php'); [193] => if($HEADER['useBoard3'] & 2) include_once($SITE['lib_path'].'function_board3read.php'); [194] => if($HEADER['useBoard3'] & 4) include_once($SITE['lib_path'].'function_board3write.php'); [195] => if($HEADER['useBoard3'] & 8) include_once($SITE['lib_path'].'function_board3upload.php'); [196] => if($HEADER['useBoard3'] & 16) include_once($SITE['lib_path'].'function_board3cate.php'); [197] => } [198] => [199] => // 각종 함수 include [200] => if($HEADER['useClassDB']) include_once($SITE['lib_path'].'class_mysql3.php'); [201] => if($HEADER['useSkin']) include_once($SITE['lib_path'].'class_phemplate.php'); [202] => if($HEADER['useCheck']) include_once($SITE['lib_path'].'function_check.php'); [203] => if($HEADER['useApp']) include_once($SITE['lib_path'].'function_app.php'); [204] => if($HEADER['useImage']) include_once($SITE['lib_path'].'function_image.php'); [205] => if($HEADER['useClassSendmail']) include_once($SITE['lib_path'].'class_sendmail.php'); [206] => if($HEADER['useClassMimemail']) include_once($SITE['lib_path'].'class_mimemail.php'); [207] => if($HEADER['useBoard']) include_once($SITE['lib_path'].'function_board.php'); [208] => if($HEADER['useBoard2']) include_once($SITE['lib_path'].'function_board2.php'); [209] => if($HEADER['usePoint']) include_once($SITE['lib_path'].'function_point.php'); [210] => if($HEADER['useHttpreq']) include_once($SITE['lib_path'].'class_httpreq.php'); [211] => if($HEADER['useJsonhttp']) include_once($SITE['lib_path'].'class_jsonhttp.php'); [212] => if($HEADER['useDbLogon']) include_once($SITE['lib_path'].'function_db_logon.php'); [213] => [214] => // html header부분 출력과 tail부분 $SITE['tail']에 할당 [215] => if($HEADER['html_echo']) { [216] => @include($SITE['html_path'].'skin.php'); // retrun $aBody[0],$aBody[1] [217] => if($HEADER['html_echo']==1) echo $aBody[0]; [218] => else $SITE['head'] = $aBody[0]; [219] => $SITE['tail'] = $aBody[1]; [220] => unset($aBody); [221] => } [222] => [223] => [224] => // 보안을 위해 환경파일 변수값 삭제 [225] => if(!$HEADER['usedbLong']) unset($SECURITY); [226] => unset($HEADER);unset($IPCONFIG); [227] => [228] => [229] => ?> ) [new] => [ovalue] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [oindex] => 16 [nkeys] => ) ) ) [1] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 142 [function] => doDiff [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [2] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 197 [function] => diffWrap [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => ) ) [3] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) ) [key] => 3 [value] => Array ( [file] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [line] => 92 [function] => inline [class] => diff [object] => diff Object ( [changes] => Array ( ) [diff] => Array ( ) [linepadding] => 2 ) [type] => -> [args] => Array ( [0] => /wecan/cc/cc.sdong.kr/spb3/sinc/header.php [1] => [2] => 2 ) ) )
sitePHPbasic 디버그 모드 : WARNING
[2] array_keys() expects parameter 1 to be array, boolean given
Line : 122 (file:/wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php)
- 디버그 추적(debug_backtrace)
#0 spb_error_handler() 함수사용, line(),
#1 array_keys() 함수사용, line(122), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#2 doDiff() 함수사용, line(142), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#3 diffWrap() 함수사용, line(197), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php
#4 inline() 함수사용, line(92), /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php




사용변수들 ...
$_GET = Array ( [md5_path] => /spb3/sinc/header.php ) $_POST = Array ( ) $_COOKIE = Array ( ) Array ( [errno] => 2 [errstr] => array_keys() expects parameter 1 to be array, boolean given [errfile] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [errline] => 122 [arr] => Array ( [0] => Array ( [function] => spb_error_handler [args] => Array ( [0] => 2 [1] => array_keys() expects parameter 1 to be array, boolean given [2] => /wecan/cc/cc.sdong.kr/spb3/sadmin/util/svn/spb3_diff.php [3] => 122 [4] => Array ( [old] => Array ( [0] => //======================================================= [2] => // $Id: header.php 18 2010-09-11 11:32:28Z sitehis $ [3] => // 설 명 : sitePHPbasic 해더 파일(header.php) [4] => // 책임자 : 박선민 (sponsor@new21.com), 검수: 09/05/08 [5] => // Project: sitePHPbasic [6] => // ChangeLog [7] => // DATE 수정인 수정 내용 [8] => // -------- ------ ------------------------------------ [9] => // 09/02/06 박선민 GET_DEBUG_2 기능 추가 [10] => // 09/04/13 박선민 46L $HOSTNAME 등 불필요한 전역변수 삭제 [11] => // 09/04/21 박선민 debug ip보안과 log기능 개선 [12] => // 09/05/08 박선민 debug 개선 [13] => // 09/09/27 박선민 bugfix - 57L [14] => //======================================================= [15] => // 해킹체크 [16] => if( 200 < strlen($_SERVER['QUERY_STRING']) ) { [17] => if( strpos($_SERVER['QUERY_STRING'],'INFORMATION_SCHEMA') ) exit('hacking attack'); [18] => } [19] => [20] => // 기본 환경 파일 불러드림 [21] => $configpass = "passCONFIGpass"; // 아래 config.php를 보안 설정 [22] => require(dirname(__FILE__).'/config.php'); [23] => $SITE['home_path'] = realpath($_SERVER['DOCUMENT_ROOT']) .'/'; // 홈 드렉토리 [24] => $SITE['spb3_path'] = $SITE['home_path'].'spb3/'; // site skin 드렉토리 [25] => $SITE['html_path'] = $SITE['home_path'].'spb3/sinc/skin/'; // site skin 드렉토리 [26] => $SITE['lib_path'] = $SITE['home_path'].'spb3/sinc/lib/'; // lib 드렉토리 [27] => [28] => // 기본 함수 읽기 [29] => require_once($SITE['lib_path'].'function_default.php'); //back(), go_url() 함수 등 [30] => //header_security(); //해더 해킹 차단 동작 [31] => [32] => // HTTP cache 여부 [33] => if ($HEADER['private']) { [34] => @session_cache_limiter('private'); [35] => //header('Cache-Control: private, must-revalidate'); [36] => [37] => // 페이지 캐쉬로 time값이 1분이상 차이나면 새로고침 [38] => if( 60 < abs((int)$_GET['time']-time()) ) {// and isset($_GET['mode']) [39] => //echo $_SERVER['PHP_SELF'].'?'.href_qs('time='.time());exit; [40] => go_url( $_SERVER['PHP_SELF'].'?'.href_qs('time='.time()) ); [41] => } [42] => } [43] => /* php 세팅 디폴트가 nocache(none/nocache/private/private_no_expire/public) [44] => else { [45] => //session_cache_limiter('nocache'); [46] => //header('Cache-Control: no-cache, must-revalidate'); [47] => } [48] => */ [49] => [50] => // 서버 session 변수를 언제나 사용(session.auto_start=1이면 빼기바람) [51] => // session_set_cookie_params ( 0,'/','.domain.com'); // 서브도메인동작 [52] => @session_start(); [53] => [54] => // gpc_order에 따른 불필요한 값 unset [55] => if(isset($SCRIPT_FILENAME)) { [56] => foreach($GLOBALS['_ENV'] as $k => &$v) unset($GLOBALS[$k]); [57] => foreach($GLOBALS['_SERVER'] as $k => &$v) unset($GLOBALS[$k]); [58] => foreach($GLOBALS['_SESSION'] as $k => &$v) unset($GLOBALS[$k]); [59] => [60] => if(isset($GLOBALS['_GET'])) foreach($GLOBALS['_GET'] as $k => &$v) unset($GLOBALS[$k]); [61] => if(isset($GLOBALS['_POST'])) foreach($GLOBALS['_POST'] as $k => &$v) unset($GLOBALS[$k]); [62] => if(isset($GLOBALS['_COOKIE'])) foreach($GLOBALS['_COOKIE'] as $k => &$v) unset($GLOBALS[$k]); [63] => unset($k);unset($v); [64] => } [65] => [66] => // header에서 디버그 모드 해제 [67] => if($HEADER['debug']===0) $SITE['debug']=0; [68] => // $_GET으로 debug=2 넘어오면 무조건 디버그모드로(오픈후에 숫자 변경바람) [69] => if($_GET['debug']==2) { [70] => $SITE['debug']=2; [71] => define('GET_DEBUG_2',true); // function_error.php 맨 마지막에서 사용 [72] => } [73] => // $SITE['debug']=2이면, 사용자 에러핸들링 [74] => if($SITE['debug']==2) { [75] => // debug 허용하는 ip인지 체크 [76] => require(dirname(__FILE__).'/ipconfig.php'); [77] => if(isset($IPCONFIG[$_SERVER['REMOTE_ADDR']])) { [78] => if($IPCONFIG[$_SERVER['REMOTE_ADDR']]) { [79] => define('SPB_DEBUG_2',true); [80] => include_once($SITE['lib_path'].'class_spb_checktime.php'); [81] => include_once($SITE['lib_path'].'function_error.php'); [82] => } [83] => else { $SITE['exit'] = 'IPCONFIG에서 허용하지 않는 IP접근'; $HEADER['usedb']=1; } [84] => } [85] => elseif(defined('GET_DEBUG_2')) { $SITE['exit'] = 'IPCONFIG에 없는 IP접근'; $HEADER['usedb']=1; } [86] => else { [87] => $SITE['debug']=0; // debug 강제 해제 [88] => define('GET_DEBUG_2',false); [89] => } [90] => } [91] => [92] => // MySQL DB를 사용 [93] => if( $HEADER['usedb'] and !is_resource($db_conn)) { [94] => include_once($SITE['lib_path'].'function_mysql3.php'); [95] => $db_conn = db_connect($SECURITY['db_server'], $SECURITY['db_user'], $SECURITY['db_pass']); [96] => db_select($SECURITY['db_name'], $db_conn); [97] => db_query("set names utf8"); // euckr [98] => } [99] => [100] => // 로그인 인증 [101] => if($HEADER['priv']) { [102] => // 세션변수를 가능하면 seVar로 이용하길 권함(cookie 변수는 ckVar 등으로) [103] => if( !privAuth($HEADER,'priv',1) ) [104] => back('페이지를 볼 수 있는 권한이 없습니다.',$HEADER['goto_nopriv']); [105] => [106] => // 해킹감지 1 - php 임시세션파일을 수정하여 root 권한 획득 [107] => if( isset($_SESSION['sePriv']['root']) ) { [108] => // 허용하는 ip인지 체크 [