Merge branch 'master' of github.com:gnuboard/g4s

This commit is contained in:
whitedot
2013-02-07 10:11:40 +09:00
6 changed files with 120 additions and 110 deletions

View File

@ -3,30 +3,19 @@
** 공통 변수, 상수, 코드
*******************************************************************************/
//error_reporting(E_ALL ^ E_NOTICE);
//error_reporting(E_ALL & ~E_NOTICE);
//error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT);
error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
// 보안설정이나 프레임이 달라도 쿠키가 통하도록 설정
header('P3P: CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"');
if (!isset($set_time_limit)) $set_time_limit = 0;
@set_time_limit($set_time_limit);
// 짧은 환경변수를 지원하지 않는다면
if (isset($HTTP_POST_VARS) && !isset($_POST)) {
$_POST = &$HTTP_POST_VARS;
$_GET = &$HTTP_GET_VARS;
$_SERVER = &$HTTP_SERVER_VARS;
$_COOKIE = &$HTTP_COOKIE_VARS;
$_ENV = &$HTTP_ENV_VARS;
$_FILES = &$HTTP_POST_FILES;
if (!isset($_SESSION))
$_SESSION = &$HTTP_SESSION_VARS;
}
if (!defined('G4_SET_TIME_LIMIT')) define('G4_SET_TIME_LIMIT', 0);
@set_time_limit(G4_SET_TIME_LIMIT);
//==============================================================================
// php.ini 의 magic_quotes_gpc 값이 FALSE 인 경우 addslashes() 적용
// php.ini 의 magic_quotes_gpc 값이 Off 인 경우 addslashes() 적용
// SQL Injection 등으로 부터 보호
// http://kr.php.net/manual/en/function.get-magic-quotes-gpc.php#97783
//------------------------------------------------------------------------------
@ -78,21 +67,45 @@ $group = array();
$g4 = array();
function g4_path()
{
$path = dirname(__FILE__); // 예) /home/sir/www/g4s
$linux_dir = str_replace("\\", "/", $path); // 예) /home/sir/www/g4s
$document_root = str_replace("\\", "/", $_SERVER['DOCUMENT_ROOT']); // 예) /home/sir/www
$base_dir = preg_replace('#^'.$document_root.'#i', '', $linux_dir); // 예) /g4s
$port = $_SERVER['SERVER_PORT'] != 80 ? ':'.$_SERVER['SERVER_PORT'] : '';
$http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 's' : '') . '://';
$result = array();
$result['path'] = $path;
$result['url'] = $http.$_SERVER['SERVER_NAME'].$port.$base_dir;
$result['curr_url'] = $http.$_SERVER['SERVER_NAME'].$port.$_SERVER['PHP_SELF'];
$result['curr_uri'] = $result['curr_url'] . ($_SERVER['QUERY_STRING'] ? '?'.$_SERVER['QUERY_STRING'] : '');
return $result;
}
$g4_path = g4_path();
include_once($g4_path['path'].'/config.php'); // 설정 파일
unset($g4_path);
//==============================================================================
// 공통
//------------------------------------------------------------------------------
$config_user_file = dirname(__FILE__).'/config.user.php';
if (file_exists($config_user_file)) {
include_once($config_user_file);
include_once(dirname(__FILE__).'/config.php'); // 설정 파일
$dbconfig_file = G4_DATA_PATH.'/dbconfig.php';
if (file_exists($dbconfig_file)) {
include_once($dbconfig_file);
include_once(G4_LIB_PATH.'/common.lib.php'); // 공통 라이브러리
$connect_db = sql_connect(G4_MYSQL_HOST, G4_MYSQL_USER, G4_MYSQL_PASSWORD) or die('MySQL Connect Error!!!');
$select_db = sql_select_db(G4_MYSQL_DB, $connect_db) or die('MySQL DB Error!!!');
} else {
echo "<meta http-equiv='content-type' content='text/html; charset=utf-8'>";
echo "<h3>$config_user_file 파일을 찾을 수 없습니다.<br>프로그램 설치 후 실행하시기 바랍니다.</h3>";
echo '<a href="'.G4_PATH.'/install/">설치하기</a>';
echo "<h3>$dbconfig_file 파일을 찾을 수 없습니다.<br>프로그램 설치 후 실행하시기 바랍니다.</h3>";
echo '<a href="'.G4_URL.'/install/">설치하기</a>';
exit;
}
//==============================================================================

View File

@ -2,39 +2,54 @@
// 절실함
if (function_exists("date_default_timezone_set"))
date_default_timezone_set("Asia/Seoul");
function g4_path()
{
$path = dirname(__FILE__); // 예) /home/sir/www/g4s
$linux_dir = str_replace("\\", "/", $path); // 예) /home/sir/www/g4s
$document_root = str_replace("\\", "/", $_SERVER['DOCUMENT_ROOT']); // 예) /home/sir/www
$base_dir = preg_replace('#^'.$document_root.'#i', '', $linux_dir); // 예) /g4s
$port = $_SERVER['SERVER_PORT'] != 80 ? ':'.$_SERVER['SERVER_PORT'] : '';
$http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 's' : '') . '://';
$result = array();
$result['path'] = $path;
$result['url'] = $http.$_SERVER['SERVER_NAME'].$port.$base_dir;
$result['curr_url'] = $http.$_SERVER['SERVER_NAME'].$port.$_SERVER['PHP_SELF'];
$result['curr_uri'] = $result['curr_url'] . ($_SERVER['QUERY_STRING'] ? '?'.$_SERVER['QUERY_STRING'] : '');
return $result;
}
//==============================================================================
// 상수 선언
//------------------------------------------------------------------------------
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
define('_GNUBOARD_', true);
$g4_path = g4_path();
if (PHP_VERSION >= '5.3.0') {
//if (function_exists("date_default_timezone_set")) date_default_timezone_set("Asia/Seoul");
date_default_timezone_set("Asia/Seoul");
}
//==============================================================================
// 경로 상수
//------------------------------------------------------------------------------
/*
보안서버 도메인
회원가입, 글쓰기에 사용되는 https 로 시작되는 주소를 말합니다.
포트가 있다면 도메인 뒤에 :443 과 같이 입력하세요.
보안서버주소가 없다면 공란으로 두시면 되며 보안서버주소 뒤에 / 는 붙이지 않습니다.
입력예) https://www.domain.com:443/gnuboard4s
*/
define('G4_DOMAIN', 'http://tmp.sir.co.kr/g4s');
define('G4_HTTPS_DOMAIN', 'http://https-gnuboard4s-tmp.sir.co.kr/g4s'); // http://https-gnuboard4s-tmp.sir.co.kr
/*
www.sir.co.kr 과 sir.co.kr 도메인은 서로 다른 도메인으로 인식합니다. 쿠키를 공유하려면 .sir.co.kr 과 같이 입력하세요.
이곳에 입력이 없다면 www 붙은 도메인과 그렇지 않은 도메인은 쿠키를 공유하지 않으므로 로그인이 풀릴 수 있습니다.
*/
define('G4_COOKIE_DOMAIN', '.sir.co.kr');
// URL 은 브라우저상에서의 경로 (도메인으로 부터의)
define('G4_ADMIN_DIR', 'adm');
define('G4_BBS_DIR', 'bbs');
define('G4_CSS_DIR', 'css');
define('G4_DATA_DIR', 'data');
define('G4_EXTEND_DIR', 'extend');
define('G4_IMG_DIR', 'img');
define('G4_JS_DIR', 'js');
define('G4_LIB_DIR', 'lib');
define('G4_SKIN_DIR', 'skin');
define('G4_GCAPTCHA_DIR', 'gcaptcha');
define('G4_CKEDITOR_DIR', 'ckeditor');
define('G4_EDITOR_DIR', 'editor');
define('G4_CACHE_DIR', 'cache');
define('G4_FILE_DIR', 'file');
// URL 은 브라우저상에서의 경로 (도메인으로 부터의)
if (G4_DOMAIN) {
define('G4_URL', G4_DOMAIN);
} else {
@ -42,30 +57,38 @@ if (G4_DOMAIN) {
}
define('G4_ADMIN_URL', G4_URL.'/'.G4_ADMIN_DIR);
define('G4_BBS_URL', G4_URL.'/'.G4_BBS_DIR);
define('G4_CSS_URL', G4_URL.'/css');
define('G4_DATA_URL', G4_URL.'/data');
define('G4_IMG_URL', G4_URL.'/img');
define('G4_JS_URL', G4_URL.'/js');
define('G4_SKIN_URL', G4_URL.'/skin');
define('G4_GCAPTCHA_URL', G4_BBS_URL.'/gcaptcha');
define('G4_CKEDITOR_URL', G4_BBS_URL.'/ckeditor'); // CKEDITOR 의 라이브러리 경로
define('G4_EDITOR_URL', G4_DATA_URL.'/editor'); // CKEDITOR 에서 업로드한 파일이 저장되는 경로
define('G4_CACHE_URL', G4_DATA_URL.'/cache');
define('G4_CSS_URL', G4_URL.'/'.G4_CSS_DIR);
define('G4_DATA_URL', G4_URL.'/'.G4_DATA_DIR);
define('G4_IMG_URL', G4_URL.'/'.G4_IMG_DIR);
define('G4_JS_URL', G4_URL.'/'.G4_JS_DIR);
define('G4_SKIN_URL', G4_URL.'/'.G4_SKIN_DIR);
define('G4_GCAPTCHA_URL', G4_BBS_URL.'/'.G4_GCAPTCHA_DIR);
define('G4_CKEDITOR_URL', G4_BBS_URL.'/'.G4_CKEDITOR_DIR); // CKEDITOR 의 라이브러리 경로
define('G4_EDITOR_URL', G4_DATA_URL.'/'.G4_EDITOR_DIR); // CKEDITOR 에서 업로드한 파일이 저장되는 경로
define('G4_CACHE_URL', G4_DATA_URL.'/'.G4_CACHE_DIR);
define('G4_FILE_URL', G4_DATA_URL.'/'.G4_FILE_DIR);
// PATH 는 서버상에서의 절대경로
define('G4_PATH', $g4_path['path']);
define('G4_ADMIN_PATH', G4_PATH.'/'.G4_ADMIN_DIR);
define('G4_BBS_PATH', G4_PATH.'/'.G4_BBS_DIR);
define('G4_DATA_PATH', G4_PATH.'/data');
define('G4_EXTEND_PATH', G4_PATH.'/extend');
define('G4_LIB_PATH', G4_PATH.'/lib');
define('G4_SKIN_PATH', G4_PATH.'/skin');
define('G4_GCAPTCHA_PATH', G4_BBS_PATH.'/gcaptcha');
define('G4_CKEDITOR_PATH', G4_BBS_PATH.'/ckeditor');
define('G4_CACHE_PATH', G4_DATA_PATH.'/cache');
define('G4_EDITOR_PATH', G4_DATA_PATH.'/editor');
define('G4_DATA_PATH', G4_PATH.'/'.G4_DATA_DIR);
define('G4_EXTEND_PATH', G4_PATH.'/'.G4_EXTEND_DIR);
define('G4_LIB_PATH', G4_PATH.'/'.G4_LIB_DIR);
define('G4_SKIN_PATH', G4_PATH.'/'.G4_SKIN_DIR);
define('G4_GCAPTCHA_PATH', G4_BBS_PATH.'/'.G4_GCAPTCHA_DIR);
define('G4_CKEDITOR_PATH', G4_BBS_PATH.'/'.G4_CKEDITOR_DIR);
define('G4_CACHE_PATH', G4_DATA_PATH.'/'.G4_CACHE_DIR);
define('G4_EDITOR_PATH', G4_DATA_PATH.'/'.G4_EDITOR_DIR);
define('G4_FILE_PATH', G4_DATA_PATH.'/'.G4_FILE_DIR);
//==============================================================================
unset($g4_path);
// 시간 상수
define('G4_SERVER_TIME', time());
define('G4_TIME_YMDHIS', date("Y-m-d H:i:s", G4_SERVER_TIME));
define('G4_TIME_YMD', substr(G4_TIME_YMDHIS, 0, 10));
define('G4_TIME_HIS', substr(G4_TIME_YMDHIS, 11, 8));
// 입력값 검사 상수 (숫자를 변경하시면 안됩니다.)
@ -77,52 +100,22 @@ define('G4_HANGUL', 16); // 한글
define('G4_SPACE', 32); // 공백
define('G4_SPECIAL', 64); // 특수문자
// 모바일 인지 결정 $_SERVER['HTTP_USER_AGENT']
define('G4_MOBILE_AGENT', 'phone|samsung|lgtel|mobile|skt|nokia|blackberry|android|sony');
//==============================================================================
// 자주 사용하는 값
// 서버의 시간과 실제 사용하는 시간이 틀린 경우 수정하세요.
// 하루는 86400 초입니다. 1시간은 3600초
// 6시간이 빠른 경우 time() + (3600 * 6);
// 6시간이 느린 경우 time() - (3600 * 6);
/*
$g4['server_time'] = time();
$g4['time_ymd'] = date("Y-m-d", $g4['server_time']);
$g4['time_his'] = date("H:i:s", $g4['server_time']);
$g4['time_ymdhis'] = date("Y-m-d H:i:s", $g4['server_time']);
define('G4_SERVER_TIME', time());
define('G4_TIME_YMDHIS', date("Y-m-d H:i:s", G4_SERVER_TIME));
define('G4_TIME_YMD', substr(G4_TIME_YMDHIS, 0, 10));
define('G4_TIME_HIS', substr(G4_TIME_YMDHIS, 11, 8));
//
// 테이블 명
// (상수로 선언한것은 함수에서 global 선언을 하지 않아도 바로 사용할 수 있기 때문)
//
$g4['table_prefix'] = G4_TABLE_PREFIX; // 테이블명 접두사
$g4['write_prefix'] = $g4['table_prefix'] . 'write_'; // 게시판 테이블명 접두사
$g4['auth_table'] = $g4['table_prefix'] . 'auth'; // 관리권한 설정 테이블
$g4['config_table'] = $g4['table_prefix'] . 'config'; // 기본환경 설정 테이블
$g4['group_table'] = $g4['table_prefix'] . 'group'; // 게시판 그룹 테이블
$g4['group_member_table'] = $g4['table_prefix'] . 'group_member'; // 게시판 그룹+회원 테이블
$g4['board_table'] = $g4['table_prefix'] . 'board'; // 게시판 설정 테이블
$g4['board_file_table'] = $g4['table_prefix'] . 'board_file'; // 게시판 첨부파일 테이블
$g4['board_good_table'] = $g4['table_prefix'] . 'board_good'; // 게시물 추천,비추천 테이블
$g4['board_new_table'] = $g4['table_prefix'] . 'board_new'; // 게시판 새글 테이블
$g4['login_table'] = $g4['table_prefix'] . 'login'; // 로그인 테이블 (접속자수)
$g4['mail_table'] = $g4['table_prefix'] . 'mail'; // 회원메일 테이블
$g4['member_table'] = $g4['table_prefix'] . 'member'; // 회원 테이블
$g4['memo_table'] = $g4['table_prefix'] . 'memo'; // 메모 테이블
$g4['poll_table'] = $g4['table_prefix'] . 'poll'; // 투표 테이블
$g4['poll_etc_table'] = $g4['table_prefix'] . 'poll_etc'; // 투표 기타의견 테이블
$g4['point_table'] = $g4['table_prefix'] . 'point'; // 포인트 테이블
$g4['popular_table'] = $g4['table_prefix'] . 'popular'; // 인기검색어 테이블
$g4['scrap_table'] = $g4['table_prefix'] . 'scrap'; // 게시글 스크랩 테이블
$g4['visit_table'] = $g4['table_prefix'] . 'visit'; // 방문자 테이블
$g4['visit_sum_table'] = $g4['table_prefix'] . 'visit_sum'; // 방문자 합계 테이블
$g4['token_table'] = $g4['table_prefix'] . 'token'; // 토큰 테이블
*/
//
// 기타

View File

@ -1,5 +1,8 @@
<?
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
define('G4_USE_SHOP', false);
if (!defined('G4_USE_SHOP') || !G4_USE_SHOP) return;
include_once(G4_LIB_PATH.'/shop.lib.php');
@ -10,21 +13,22 @@ include_once(G4_LIB_PATH.'/shop.lib.php');
// 미수금에 대한 QUERY 문
// 테이블 a 는 장바구니 ($g4[yc4_cart_table])
// 테이블 b 는 주문서 ($g4[yc4_order_table])
/*
define(_MISU_QUERY_, "
count(distinct b.od_id) as ordercount, /* 주문서건수 */
count(a.ct_id) as itemcount, /* 상품건수 */
(SUM((a.ct_amount + a.it_amount - a.cp_amount) * a.ct_qty) + b.od_send_cost + b.od_send_cost_area - b.od_coupon_amount - b.od_send_coupon) as orderamount , /* 주문합계 */
(SUM(IF(a.ct_status = '취소' OR a.ct_status = '반품' OR a.ct_status = '품절', (a.ct_amount + a.it_amount) * a.ct_qty, 0))) as ordercancel, /* 주문취소 */
(b.od_receipt_amount + b.od_receipt_point) as receiptamount, /* 입금합계 */
(b.od_refund_amount) as receiptcancel, /* 입금취소 */
count(distinct b.od_id) as ordercount, -- 주문서건수
count(a.ct_id) as itemcount, -- 상품건수
(SUM((a.ct_amount + a.it_amount - a.cp_amount) * a.ct_qty) + b.od_send_cost + b.od_send_cost_area - b.od_coupon_amount - b.od_send_coupon) as orderamount , -- 주문합계
(SUM(IF(a.ct_status = '취소' OR a.ct_status = '반품' OR a.ct_status = '품절', (a.ct_amount + a.it_amount) * a.ct_qty, 0))) as ordercancel, -- 주문취소
(b.od_receipt_amount + b.od_receipt_point) as receiptamount, -- 입금합계
(b.od_refund_amount) as receiptcancel, -- 입금취소
(
(SUM((a.ct_amount + a.it_amount - a.cp_amount) * a.ct_qty) + b.od_send_cost + b.od_send_cost_area - b.od_coupon_amount - b.od_send_coupon) -
(SUM(IF(a.ct_status = '취소' OR a.ct_status = '반품' OR a.ct_status = '품절', (a.ct_amount + a.it_amount) * a.ct_qty, 0))) -
b.od_dc_amount -
(b.od_receipt_amount + b.od_receipt_point) +
(b.od_refund_amount)
) as misu /* 미수금 = 주문합계 - 주문취소 - DC - 입금합계 + 입금취소 */");
) as misu -- 미수금 = 주문합계 - 주문취소 - DC - 입금합계 + 입금취소");
*/
// 쇼핑몰 디렉토리
define('G4_SHOP_DIR', 'shop');

View File

@ -4,13 +4,14 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$begin_time = get_microtime();
$g4_head_title = $g4['title']; // 상태바에 표시될 제목
if (!isset($g4['title'])) {
$g4['title'] = $config['cf_title'];
$g4_head_title = $g4['title'];
}
else
else {
$g4_head_title = $g4['title']; // 상태바에 표시될 제목
$g4_head_title .= " : ".$config['cf_title'];
}
// 현재 접속자
// 게시판 제목에 ' 포함되면 오류 발생

View File

@ -1191,8 +1191,7 @@ function sql_select_db($db, $connect)
{
global $g4;
if (strtolower($g4['charset']) == 'utf-8') @mysql_query(" set names utf8 ");
else if (strtolower($g4['charset']) == 'euc-kr') @mysql_query(" set names euckr ");
@mysql_query(" set names utf8 ");
return @mysql_select_db($db, $connect);
}

View File

@ -1,4 +1,4 @@
<?
<?php
if (!defined('_GNUBOARD_')) exit;
// 최신글 추출