//에러 출력
error_reporting(E_ALL ^ E_NOTICE);
//기본 상수
define('_FLAG_', true); //# 플래그.
define('_ESC_', "\r\n"); //# 이스케이프.
define('_COOKIE_EXPIRE_', 0); //# 쿠키유효 시간을 설정. (단위 : 초) - 0이면 브라우저와 함께 종료.
//############ 기본 변수 설정 ############
//# 사이트 루트 디렉토리, 사이트 URL 설정
$SITE_DIR = preg_replace('/\/classes.*/i', '', __FILE__);
$SITE_URL = "http://{$_SERVER['HTTP_HOST']}" . $_SERVER['REQUEST_URI'];
preg_match('`' . $SITE_DIR . '(/.*)/`Ui', realpath('./'), $site_tmp);
$SITE_BASE_DIR = $SITE_DIR . $site_tmp[1];
# 도메인 명 앞에 www 로 시작하지 않으면 붙인 후 리다이렉트. - 크로스 도메인 규약에 제한이 되므로 서브 도메인 없으면 www 로 다시 접속.
// if(strpos("http://$_SERVER[HTTP_HOST]", "www")<1 && !eregi('([0-9]{1,3}\.?){4}', $_SERVER['HTTP_HOST']))
// { header('Location: '. str_replace('//', '//www.', $SITE_URL)); exit();}
//# 사이트 도메인 이름.
$SITE_NAME = strtoupper(preg_replace('/[0-9a-z]{1,}\.(.*).(.*)/i', '\\1.\\2', $_SERVER['HTTP_HOST']));
//# 클래스 디렉토리
$CLASS_DIR = $SITE_DIR . '/classes';
//# 인클루드 디렉토리 - 사이트 변경시 필히 변경
$INC_DIR = $SITE_BASE_DIR . '/include';
//# 쿠키 관련 변수 설정.
$COOKIE_DOMAIN = str_replace('www.', '.', $_SERVER['HTTP_HOST']);
$COOKIE_EXPIRE_TIME = (_COOKIE_EXPIRE_!=0?(time()+_COOKIE_EXPIRE_):0);
//# 다른 서버에서 해당 파일 HTML 코드의 접근을 막는 설정.
ini_set("allow_url_fopen", 0);
//# 변수의 전역화 - 기본 ON, 보안을 위해서 OFF 설정 권장.
ini_set("register_globals", 0);
//# 필수 클래스 파일
require_once $CLASS_DIR . '/DB.Class.php';
require_once $CLASS_DIR . '/Paging.Class.php';
require_once $CLASS_DIR . '/Library.Class.php';
require_once $CLASS_DIR . '/ConfigureVars.Class.php';
//# 페이지 타입 및 인코딩 언어 설정
header('Content-Type: text/html; charset=utf-8');
//# 브라우저가 강제로 쿠키를 저장, IE6.0의 개인 보호 정책 전달
header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
//# 보안상 필요한 헤더 설정.
header('Expires: Mon, 26 Jul 2008 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
//# HTTP1.1에서 캐시 제어 - 캐싱 하지 않음.
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
//# HTTP1.0에서 캐시 제어 - 캐싱 하지 않음.
header('Pragma: no-cache');
/* //# GET/POST/SERVER 배열내의 변수를 각이름과 같은 변수 생성.
@extract($_GET, EXTR_OVERWRITE);
@extract($_POST, EXTR_OVERWRITE);
@extract($_SERVER, EXTR_OVERWRITE);
*/
/*
//# 페이지 압축 전송
if(substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start('ob_gzhandler');
else ob_start();
*/
//# 페이지 최하단에 추가.
// ob_end_flush();
function json_encode2($data) {
switch (gettype($data)) {
case 'boolean':
return $data?'true':'false';
case 'integer':
case 'double':
return $data;
case 'string':
return '"'.strtr($data, array('\\'=>'\\\\','"'=>'\\"')).'"';
case 'array':
$rel = false; // relative array?
$key = array_keys($data);
foreach ($key as $v) {
if (!is_int($v)) {
$rel = true;
break;
}
}
$arr = array();
foreach ($data as $k=>$v) {
$arr[] = ($rel?'"'.strtr($k, array('\\'=>'\\\\','"'=>'\\"')).'":':'').json_encode2($v);
}
return $rel?'{'.join(',', $arr).'}':'['.join(',', $arr).']';
default:
return '""';
}
}
?>
Deprecated: Optional parameter $delete declared before required parameter $AND is implicitly treated as a required parameter in /var/www/lottomate.co.kr/public_html/classes/custom/Lotto.Class.php on line 575
### 추가로 필요해서 만듬
include_once dirname(dirname(__FILE__)) . '/init.php';
include_once DIR_ROOT . '/lib/sms.php';//문자
include_once DIR_ROOT . '/classes/Snoopy.class.php';//스누피
function show_msg($msg){
echo $msg . "
\n";
flush();
}
/*
//디비 연결 정보 가져오기, 크론에서 사용됨
function ge_db_info(){
$db_set_file = DIR_ROOT . '/classes/Configure.refer';
if(file_exists($db_set_file)){
$tmp = file($db_set_file);
preg_match_all('/\[(.+?)\]/', $tmp[0], $db_info);
return $db_info;
}
else {
$msg = '디비 연결 정보를 찾을수 없습니다. 빨리 조치 바랍니다.';
send_cron_error_sms($msg);
exit;
}
}
//디비 연결, 크론에서 사용됨
function db_connect(){
global $conn;
$db_info = ge_db_info();
@mysql_close($conn);
$conn = @mysql_connect($db_info[1][0], $db_info[1][1], $db_info[1][2]);
if (!is_resource($conn)) {
$msg = '디비에 연결 할수 없습니다. 빨리 조치 바랍니다.';
send_cron_error_sms($msg);
exit;
}
$select_db = @mysql_select_db($db_info[1][3], $conn);
if (empty($select_db)) {
$msg = '디비를 선택 할수 없습니다. 빨리 조치 바랍니다.';
send_cron_error_sms($msg);
exit;
}
return $conn;
}
//크론 에러시 문자 보내기
function send_cron_error_sms($msg){
sendSMS_(S_MOBILE, R_MOBILE, $msg);
sendSMS_(S_MOBILE, R_MOBILE2, $msg);
sendSMS_(S_MOBILE, R_MOBILE3, $msg);
echo $msg . "
\n";
flush();
}
*/
//크론 에러시 문자 보내기
function send_cron_error_mms($msg){
//sendMMS_(S_MOBILE, R_MOBILE, $msg);
//sendMMS_(S_MOBILE, R_MOBILE2, $msg);
//sendMMS_(S_MOBILE, R_MOBILE3, $msg);
sendMMS_(S_MOBILE, ' ', $msg);
echo $msg . "
\n";
flush();
}
//외부 페이지 간단히 읽어오기
function read_simple($url, $referer=''){
$sp = new Snoopy;
$sp->agent = $_SERVER['HTTP_USER_AGENT'];
if (!empty($referer)) $sp->referer = $referer;
$sp->fetch($url);
return $sp->results;
}
//숫자의 왼쪽에 자리수가 부족하면 0을 채움
function zero_pad($num, $cnt=2){
return str_pad($num, $cnt, '0', STR_PAD_LEFT);
}
//숫자에 1 더해서 반환
function add1($num){
return ++$num;
}
//쉼표 제거
function delete_colon($str){
return trim(str_replace(',', '', $str));
}
//랜덤 문자 만들기
function get_random_string($len){
$str = '1234567890abcdefghijklmnopqrstuvwxyz';
$strlen = strlen($str) -1;
$return = '';
for ($i = 0; $i < $len; $i++){
$rand = rand(0, $strlen);
$return .= $str[$rand];
}
return $return;
}
//로그인 체크 및 이동
function no_login_check($popup=0, $vip=0){
global $member_data;
if ($popup != 1){//팝업 페이지가 아닌경우
if(empty($_COOKIE['no'])) alert('로그인이 필요한 메뉴입니다.', '/member/login.html?current_page=' . urlencode($_SERVER['REQUEST_URI']));//로그인 체크
if ($vip == '1') {
if($member_data['type'] != 'vip') alert('유료 회원만 사용가능한 메뉴입니다.', '/footer/vip.html');
}
}
else {//팝업페이지 인 경우
if(empty($_COOKIE['no'])) {//로그인 체크
echo '';
alert_close('로그인이 필요한 메뉴입니다.');
}
if($member_data['type'] != 'vip') {
echo '';
alert_close('유료 회원만 사용가능한 메뉴입니다.');
}
}
}
//서비스 안되는 시간에 뛰울 메시지, 토요일 저녁 8시부터 일요일 오전 8시 59분까지
function no_service($url=''){
$w = date('w');
$H = date('H');
if (($w == 6 && $H >= 20) || ($w == 0 && $H <= 8)) {
if (!empty($url)) alert('죄송합니다. 토요일 저녁 8시부터 일요일 오전 8시 59분 까지는 해당 기능을 사용하실수가 없습니다.', $url);
else alert('죄송합니다. 토요일 저녁 8시부터 일요일 오전 8시 59분 까지는 해당 기능을 사용하실수가 없습니다.');
}
}
//서비스 안되는 시간에 뛰울 메시지, 토요일 저녁 8시부터 일요일 오전 8시 59분까지
function no_service_pop(){
$w = date('w');
$H = date('H');
if (($w == 6 && $H >= 20) || ($w == 0 && $H <= 8)) {
alert_close('죄송합니다. 토요일 저녁 8시부터 일요일 오전 8시 59분 까지는 해당 기능을 사용하실수가 없습니다.');
}
}
//로그인 체크 및 이동
function login_check($popup=0){
if ($popup != 1){//팝업 페이지가 아닌경우
if(!empty($_COOKIE['no'])) alert('이미 로그인이 되어있습니다.', '/');//로그인 체크, 메인으로 보냄
}
else {//팝업페이지 인 경우
if(!empty($_COOKIE['no'])) alert_close('이미 로그인이 되어있습니다.');//로그인 체크, 창닫음
}
}
//게시판의 마지막 게시물
function get_board_latest($board_seq, $category_id='', $get_line=3){
$query = "select a.table_name, b.board_seq, b.category_name, b.seq as category_seq from _HDH_BOARD_MANAGE a left join _HDH_BOARD_CATEGORY b on (a.seq = b.board_seq) where b.category_id='$category_id' ";
$result = mysql_query($query);
if ($board_seq == 1) $path = '/customer';
else if (($board_seq == 2 && $category_id == "win_after") || ($board_seq == 2 && $category_id == "win_after")) $path = '/community';
else $path = '/board';
$path = '/community';
$data = Array();
$data['board_setting'] = @mysql_fetch_assoc($result);
$data['board_setting']['list_link'] = $path . '/list.html?board_seq=' . $data['board_setting']['board_seq'] . '&category_seq=' . $data['board_setting']['category_seq'];
//게시판에서 데이타 가져옴
$query = "select seq as article_seq, title as article_title, content, name from _HDH_BOARD_" . $data['board_setting']['table_name'] . "_ARTICLE where is_notice ='Y' and category_seq=" . $data['board_setting']['category_seq'] . " order by seq desc limit $get_line";
$result = @mysql_query($query);
$notice_count = @mysql_num_rows($result);
$data['list'] = Array();
while($temp = @mysql_fetch_assoc($result)){
if (!empty($temp['article_seq'])) $temp['article_link'] = $path . '/view.html?board_seq=' . $data['board_setting']['board_seq'] . '&category_seq=' . $data['board_setting']['category_seq'] . '&article_seq=' . $temp['article_seq'];
$data['list'][] = $temp;
}
@mysql_free_result($result);
$left_count = $get_line - $notice_count;
//게시판에서 데이타 가져옴
$query = "select seq as article_seq, title as article_title, content, name from _HDH_BOARD_" . $data['board_setting']['table_name'] . "_ARTICLE where is_notice ='N' and category_seq=" . $data['board_setting']['category_seq'] . " order by seq desc limit $left_count";
$result = @mysql_query($query);
// $data['list'] = Array();
while($temp = @mysql_fetch_assoc($result)){
if (!empty($temp['article_seq'])) $temp['article_link'] = $path . '/view.html?board_seq=' . $data['board_setting']['board_seq'] . '&category_seq=' . $data['board_setting']['category_seq'] . '&article_seq=' . $temp['article_seq'];
$data['list'][] = $temp;
}
@mysql_free_result($result);
return $data;
}
### 그누보드 기본 함수에서 발췌
// 변수 또는 배열의 이름과 값을 얻어냄. print_r() 함수의 변형
function print_r2($var){
ob_start();
print_r($var);
$str = ob_get_contents();
ob_end_clean();
$str = preg_replace("/ /", " ", $str);
echo nl2br("$str");
}
// 메타태그를 이용한 URL 이동
// header("location:URL") 을 대체
function goto_url($url){
echo "";
exit;
}
// 경고메세지를 경고창으로
function alert($msg='', $url=''){
if (!$msg) $msg = '올바른 방법으로 이용해 주십시오.';
echo "";
echo "";
if ($url)
goto_url($url);
exit;
}
// 경고메세지 출력후 창을 닫음
function alert_close($msg){
echo "";
echo "";
exit;
}
// way.co.kr 의 wayboard 참고
function url_auto_link($str){
// 속도 향상 031011
$str = preg_replace("/</", "\t_lt_\t", $str);
$str = preg_replace("/>/", "\t_gt_\t", $str);
$str = preg_replace("/&/", "&", $str);
$str = preg_replace("/"/", "\"", $str);
$str = preg_replace("/ /", "\t_nbsp_\t", $str);
$str = preg_replace("/([^(http:\/\/)]|\(|^)(www\.[^[:space:]]+)/i", "\\1\\2", $str);
$str = preg_replace("/([^(HREF=\"?'?)|(SRC=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[\xA1-\xFEa-zA-Z0-9\.:=_\?\/~\+%@;\-\|\,]+)/i", "\\1\\2", $str);
// 이메일 정규표현식 수정 061004
//$str = preg_replace("/(([a-z0-9_]|\-|\.)+@([^[:space:]]*)([[:alnum:]-]))/i", "\\1", $str);
$str = preg_replace("/([0-9a-z]([-_\.]?[0-9a-z])*@[0-9a-z]([-_\.]?[0-9a-z])*\.[a-z]{2,4})/i", "\\1", $str);
$str = preg_replace("/\t_nbsp_\t/", " " , $str);
$str = preg_replace("/\t_lt_\t/", "<", $str);
$str = preg_replace("/\t_gt_\t/", ">", $str);
return $str;
}
// url에 http:// 를 붙인다
function set_http($url){
if (!trim($url)) return;
if (!preg_match("/^(http|https|ftp|telnet|news|mms)\:\/\//i", $url))
$url = "http://" . $url;
return $url;
}
// 파일의 용량을 구한다.
//function get_filesize($file)
function get_filesize($size){
//$size = @filesize(addslashes($file));
if ($size >= 1048576) {
$size = number_format($size/1048576, 1) . "M";
}
else if ($size >= 1024) {
$size = number_format($size/1024, 1) . "K";
}
else {
$size = number_format($size, 0) . "byte";
}
return $size;
}
// 폴더의 용량 ($dir는 / 없이 넘기세요)
function get_dirsize($dir){
$size = 0;
$d = dir($dir);
while ($entry = $d->read()) {
if ($entry != "." && $entry != "..") {
$size += filesize("$dir/$entry");
}
}
$d->close();
return $size;
}
// 제목을 변환
/*function conv_subject($subject, $len, $suffix=""){
return cut_str(get_text($subject), $len, $suffix);
}*/
// 제목을 변환
function conv_subject($str, $len, $tail="", $checkmb=false) {
preg_match_all("/[\xEA-\xED][\x80-\xFF]{2}|./", $str, $match);
$m = $match[0];
$slen = strlen($str); // length of source string
$tlen = strlen($tail); // length of tail string
$mlen = count($m); // length of matched characters
if ($slen <= $len) return $str;
if (!$checkmb && $mlen <= $len) return $str;
$ret = array();
$count = 0;
for ($i=0; $i < $len; $i++) {
$count += ($checkmb && strlen($m[$i]) > 1) ? 2:1;
if ($count + $tlen > $len) break;
$ret[] = $m[$i];
}
return join("", $ret).$tail;
}
// 내용을 변환
function conv_content($content, $html){
if ($html){
$source = array();
$target = array();
$source[] = "//";
$target[] = "";
if ($html == 2) { // 자동 줄바꿈
$source[] = "/\n/";
$target[] = "
";
}
// 테이블 태그의 갯수를 세어 테이블이 깨지지 않도록 한다.
$table_begin_count = substr_count(strtolower($content), "