"; echo "

$dbconfig_file 파일을 찾을 수 없습니다.
프로그램 설치 후 실행하시기 바랍니다.

"; echo '그누보드4S 설치하기'; exit; } //============================================================================== //============================================================================== // SESSION 설정 //------------------------------------------------------------------------------ ini_set("session.use_trans_sid", 0); // PHPSESSID를 자동으로 넘기지 않음 ini_set("url_rewriter.tags",""); // 링크에 PHPSESSID가 따라다니는것을 무력화함 (해뜰녘님께서 알려주셨습니다.) session_save_path(G4_DATA_PATH.'/session'); if (isset($SESSION_CACHE_LIMITER)) @session_cache_limiter($SESSION_CACHE_LIMITER); else @session_cache_limiter("no-cache, must-revalidate"); //============================================================================== //============================================================================== // 공용 변수 //------------------------------------------------------------------------------ // 기본환경설정 // 기본적으로 사용하는 필드만 얻은 후 상황에 따라 필드를 추가로 얻음 $config = sql_fetch(" select * from {$g4['config_table']} "); ini_set("session.cache_expire", 180); // 세션 캐쉬 보관시간 (분) ini_set("session.gc_maxlifetime", 10800); // session data의 garbage collection 존재 기간을 지정 (초) ini_set("session.gc_probability", 1); // session.gc_probability는 session.gc_divisor와 연계하여 gc(쓰레기 수거) 루틴의 시작 확률을 관리합니다. 기본값은 1입니다. 자세한 내용은 session.gc_divisor를 참고하십시오. ini_set("session.gc_divisor", 100); // session.gc_divisor는 session.gc_probability와 결합하여 각 세션 초기화 시에 gc(쓰레기 수거) 프로세스를 시작할 확률을 정의합니다. 확률은 gc_probability/gc_divisor를 사용하여 계산합니다. 즉, 1/100은 각 요청시에 GC 프로세스를 시작할 확률이 1%입니다. session.gc_divisor의 기본값은 100입니다. session_set_cookie_params(0, '/'); ini_set("session.cookie_domain", G4_COOKIE_DOMAIN); @session_start(); // 보안서버주소 설정 if (G4_HTTPS_DOMAIN) { define('G4_HTTPS_URL', G4_HTTPS_DOMAIN); define('G4_HTTPS_BBS_URL', G4_HTTPS_DOMAIN.'/'.G4_BBS_DIR); } else { define('G4_HTTPS_URL', G4_URL); define('G4_HTTPS_BBS_URL', G4_BBS_URL); } //============================================================================== // Mobile 모바일 설정 // 쿠키에 저장된 값이 모바일이라면 브라우저 상관없이 모바일로 실행 // 그렇지 않다면 브라우저의 HTTP_USER_AGENT 에 따라 모바일 결정 // G4_MOBILE_AGENT : config.php 에서 선언 //------------------------------------------------------------------------------ $is_mobile = false; if (isset($_REQUEST['pc'])) $is_mobile = false; else if (isset($_REQUEST['mobile'])) $is_mobile = true; else if (isset($_SESSION['ss_is_mobile'])) $is_mobile = $_SESSION['ss_is_mobile']; else if (is_mobile()) $is_mobile = true; $_SESSION['ss_is_mobile'] = $is_mobile; define('G4_IS_MOBILE', $is_mobile); if (G4_IS_MOBILE) { include_once(G4_LIB_PATH.'/mobile.lib.php'); // 모바일 전용 라이브러리 $g4['mobile_path'] = G4_PATH.'/'.$g4['mobile_dir']; } //============================================================================== // 4.00.03 : [보안관련] PHPSESSID 가 틀리면 로그아웃한다. if (isset($_REQUEST['PHPSESSID']) && $_REQUEST['PHPSESSID'] != session_id()) goto_url(G4_BBS_URL.'/logout.php'); // QUERY_STRING $qstr = ''; if (isset($_REQUEST['sca'])) { $sca = escape_trim($_REQUEST['sca']); $qstr .= '&sca=' . urlencode($sca); } else { $sca = ""; } if (isset($_REQUEST['sfl'])) { $sfl = escape_trim($_REQUEST['sfl']); $qstr .= '&sfl=' . urlencode($sfl); // search field (검색 필드) } else { $sfl = ""; } if (isset($_REQUEST['stx'])) { // search text (검색어) $stx = escape_trim($_REQUEST['stx']); $qstr .= '&stx=' . urlencode($stx); } else { $stx = ""; } if (isset($_REQUEST['sst'])) { $sst = escape_trim($_REQUEST['sst']); $qstr .= '&sst=' . urlencode($sst); // search sort (검색 정렬 필드) } else { $sst = ""; } if (isset($_REQUEST['sod'])) { // search order (검색 오름, 내림차순) $sod = preg_match("/^(asc|desc)$/i", $sod) ? $sod : ''; $qstr .= '&sod=' . urlencode($sod); } else { $sod = ""; } if (isset($_REQUEST['sop'])) { // search operator (검색 or, and 오퍼레이터) $sop = preg_match("/^(or|and)$/i", $sop) ? $sop : ''; $qstr .= '&sop=' . urlencode($sop); } else { $sop = ""; } if (isset($_REQUEST['spt'])) { // search part (검색 파트[구간]) $spt = (int)$spt; $qstr .= '&spt=' . urlencode($spt); } else { $spt = ""; } if (isset($_REQUEST['page'])) { // 리스트 페이지 $page = (int)$_REQUEST['page']; $qstr .= '&page=' . urlencode($page); } else { $page = ""; } if (isset($_REQUEST['w'])) { $w = substr($w, 0, 2); } else { $w = ""; } if (isset($_REQUEST['wr_id'])) { $wr_id = (int)$_REQUEST['wr_id']; } else { $wr_id = 0; } if (isset($_REQUEST['bo_table'])) { $bo_table = escape_trim($_REQUEST['bo_table']); $bo_table = substr($bo_table, 0, 20); } else { $bo_table = ""; } // URL ENCODING if (isset($_REQUEST['url'])) { $url = escape_trim($_REQUEST['url']); $urlencode = urlencode($url); } else { $url = ""; $urlencode = urlencode(escape_trim($_SERVER['REQUEST_URI'])); } if (isset($_REQUEST['gr_id'])) { $gr_id = escape_trim($_REQUEST['gr_id']); } else { $gr_id = ""; } //=================================== // 자동로그인 부분에서 첫로그인에 포인트 부여하던것을 로그인중일때로 변경하면서 코드도 대폭 수정하였습니다. if ($_SESSION['ss_mb_id']) { // 로그인중이라면 $member = get_member($_SESSION['ss_mb_id']); // 오늘 처음 로그인 이라면 if (substr($member['mb_today_login'], 0, 10) != G4_TIME_YMD) { // 첫 로그인 포인트 지급 insert_point($member['mb_id'], $config['cf_login_point'], G4_TIME_YMD.' 첫로그인', '@login', $member['mb_id'], G4_TIME_YMD); // 오늘의 로그인이 될 수도 있으며 마지막 로그인일 수도 있음 // 해당 회원의 접근일시와 IP 를 저장 $sql = " update {$g4['member_table']} set mb_today_login = '".G4_TIME_YMDHIS."', mb_login_ip = '{$_SERVER['REMOTE_ADDR']}' where mb_id = '{$member['mb_id']}' "; sql_query($sql); } } else { // 자동로그인 --------------------------------------- // 회원아이디가 쿠키에 저장되어 있다면 (3.27) if ($tmp_mb_id = get_cookie('ck_mb_id')) { $tmp_mb_id = substr(preg_replace("/[^a-zA-Z0-9_]*/", "", $tmp_mb_id), 0, 20); // 최고관리자는 자동로그인 금지 if ($tmp_mb_id != $config['cf_admin']) { $sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify from {$g4['member_table']} where mb_id = '{$tmp_mb_id}' "; $row = sql_fetch($sql); $key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $row['mb_password']); // 쿠키에 저장된 키와 같다면 $tmp_key = get_cookie('ck_auto'); if ($tmp_key == $key && $tmp_key) { // 차단, 탈퇴가 아니고 메일인증이 사용이면서 인증을 받았다면 if ($row['mb_intercept_date'] == '' && $row['mb_leave_date'] == '' && (!$config['cf_use_email_certify'] || preg_match('/[1-9]/', $row['mb_email_certify'])) ) { // 세션에 회원아이디를 저장하여 로그인으로 간주 set_session('ss_mb_id', $tmp_mb_id); // 페이지를 재실행 echo ""; exit; } } // $row 배열변수 해제 unset($row); } } // 자동로그인 end --------------------------------------- } // 회원, 비회원 구분 $is_member = $is_guest = false; $is_admin = ""; if ($member['mb_id']) { $is_member = true; $is_admin = is_admin($member['mb_id']); $member['mb_dir'] = substr($member['mb_id'],0,2); } else { $is_guest = true; $member['mb_id'] = ""; $member['mb_level'] = 1; // 비회원의 경우 회원레벨을 가장 낮게 설정 } $write = array(); $write_table = ""; if ($bo_table) { $board = sql_fetch(" select * from {$g4['board_table']} where bo_table = '$bo_table' "); if ($board['bo_table']) { set_cookie("ck_bo_table", $board['bo_table'], 86400 * 1); $gr_id = $board['gr_id']; $write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름 //$comment_table = $g4['write_prefix'] . $bo_table . $g4['comment_suffix']; // 코멘트 테이블 전체이름 if (isset($wr_id) && $wr_id) $write = sql_fetch(" select * from $write_table where wr_id = '$wr_id' "); } } if ($gr_id) { $group = sql_fetch(" select * from {$g4['group_table']} where gr_id = '$gr_id' "); } if ($is_admin != 'super') { // 접근가능 IP $cf_possible_ip = trim($config['cf_possible_ip']); if ($cf_possible_ip) { $is_possible_ip = false; $pattern = explode("\n", $cf_possible_ip); for ($i=0; $iread()) { // php 파일만 include 함 if (preg_match("/(\.php)$/i", $entry)) include_once(G4_EXTEND_PATH.'/'.$entry); } // 자바스크립트에서 go(-1) 함수를 쓰면 폼값이 사라질때 해당 폼의 상단에 사용하면 // 캐쉬의 내용을 가져옴. 완전한지는 검증되지 않음 header("Content-Type: text/html; charset=utf-8"); $gmnow = gmdate("D, d M Y H:i:s") . " GMT"; header("Expires: 0"); // rfc2616 - Section 14.21 header("Last-Modified: " . $gmnow); header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1 header("Cache-Control: pre-check=0, post-check=0, max-age=0"); // HTTP/1.1 header("Pragma: no-cache"); // HTTP/1.0 ?>