영카트4 주문번호 줄이는 방법

영카트4 주문번호 줄이는 방법

QA

영카트4 주문번호 줄이는 방법

답변 4

본문

안녕하세요

고수님들의 조언을 부탁드립니다

현재 영카트4이용중인데

주문번호가 너무 깁니다

15120700100006

상품의 특성상 하루 1000개가 절대 넘지 않는 데

판매시 생성하는 판매번호가 너무 길어서 조금 불편합니다.

어느부분을 수정하면 될런지 조언부탁드립니다

꾸벅

 

이 질문에 댓글 쓰기 :

답변 4

꼭 바꾸셔야 한다면

/lib/common.lib.php 2086 줄에서

 $key = date('YmdHis', time()) . str_pad((int)(microtime()*100), 2, "0", STR_PAD_LEFT); 

 

==>

 $key = date('YmdHis', time()), 2, "0", STR_PAD_LEFT); 

 

요렇게 하시면 줄겁니다.

근데 되도록이면 시스템은 안건디는게 좋긴하죠

죄송합니다. 영카트4 버전이 없습니다.

/lib/common.lib.php 

파일 있으시면 올려주세요

봐드릴께요~

주신거에는 없네요

죄송해요

 

lib 폴더를 압축해서 

*** 개인정보보호를 위한 이메일주소 노출방지 *** 으로 보내주세요

확인해드릴께요

<?

if (!defined('_GNUBOARD_')) exit;

 

/*************************************************************************

**

**  일반 함수 모음

**

*************************************************************************/

 

// 마이크로 타임을 얻어 계산 형식으로 만듦

function get_microtime()

{

    list($usec, $sec) = explode(" ",microtime());

    return ((float)$usec + (float)$sec);

}

 

 

// 현재페이지, 총페이지수, 한페이지에 보여줄 행, URL

function get_paging($write_pages, $cur_page, $total_page, $url, $add="")

{

    $str = "";

    if ($cur_page > 1) {

        $str .= "<a href='" . $url . "1{$add}'>처음</a>";

        //$str .= "[<a href='" . $url . ($cur_page-1) . "'>이전</a>]";

    }

 

    $start_page = ( ( (int)( ($cur_page - 1 ) / $write_pages ) ) * $write_pages ) + 1;

    $end_page = $start_page + $write_pages - 1;

 

    if ($end_page >= $total_page) $end_page = $total_page;

 

    if ($start_page > 1) $str .= "  <a href='" . $url . ($start_page-1) . "{$add}'>이전</a>";

 

    if ($total_page > 1) {

        for ($k=$start_page;$k<=$end_page;$k++) {

            if ($cur_page != $k)

                $str .= "  <a href='$url$k{$add}'><span>$k</span></a>";

            else

                $str .= "  <b>$k</b> ";

        }

    }

 

    if ($total_page > $end_page) $str .= "  <a href='" . $url . ($end_page+1) . "{$add}'>다음</a>";

 

    if ($cur_page < $total_page) {

        //$str .= "[<a href='$url" . ($cur_page+1) . "'>다음</a>]";

        $str .= "  <a href='$url$total_page{$add}'>맨끝</a>";

    }

    $str .= "";

 

    return $str;

}

 

 

// 변수 또는 배열의 이름과 값을 얻어냄. print_r() 함수의 변형

function print_r2($var)

{

    ob_start();

    print_r($var);

    $str = ob_get_contents();

    ob_end_clean();

    $str = preg_replace("/ /", " ", $str);

    echo nl2br("<span style='font-family:Tahoma, 굴림; font-size:9pt;'>$str</span>");

}

 

 

// 메타태그를 이용한 URL 이동

// header("location:URL") 을 대체

function goto_url($url)

{

    echo "<script type='text/javascript'> location.replace('$url'); </script>";

    exit;

}

 

 

// 세션변수 생성

function set_session($session_name, $value)

{

    if (PHP_VERSION < '5.3.0')

        session_register($session_name);

    // PHP 버전별 차이를 없애기 위한 방법

    $$session_name = $_SESSION["$session_name"] = $value;

}

 

 

// 세션변수값 얻음

function get_session($session_name)

{

    return $_SESSION[$session_name];

}

 

function sql_old_password($value)

{

    // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes

    // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes

    $row = sql_fetch(" select old_password('$value') as pass ");

    return $row[pass];

}

 

// 쿠키변수 생성

function set_cookie($cookie_name, $value, $expire)

{

    global $g4;

 

    setcookie(md5($cookie_name), base64_encode($value), $g4[server_time] + $expire, '/', $g4[cookie_domain]);

}

 

 

// 쿠키변수값 얻음

function get_cookie($cookie_name)

{

    return base64_decode($_COOKIE[md5($cookie_name)]);

}

 

 

// 경고메세지를 경고창으로

function alert($msg='', $url='')

{

global $g4;

 

    if (!$msg) $msg = '올바른 방법으로 이용해 주십시오.';

 

//header("Content-Type: text/html; charset=$g4[charset]");

echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=$g4[charset]\">";

echo "<script type='text/javascript'>alert('$msg');";

    if (!$url)

        echo "history.go(-1);";

    echo "</script>";

    if ($url)

        // 4.06.00 : 불여우의 경우 아래의 코드를 제대로 인식하지 못함

        //echo "<meta http-equiv='refresh' content='0;url=$url'>";

        goto_url($url);

    exit;

}

 

 

// 경고메세지 출력후 창을 닫음

function alert_close($msg)

{

global $g4;

 

echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=$g4[charset]\">";

    echo "<script type='text/javascript'> alert('$msg'); window.close(); </script>";

    exit;

}

 

 

// way.co.kr 의 wayboard 참고

function url_auto_link($str)

{

    global $g4;

    global $config;

 

    // 속도 향상 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<A HREF=\"http://\\2\" TARGET='$config[cf_link_target]'>\\2</A>", $str);

    //$str = preg_replace("/([^(HREF=\"?'?)|(SRC=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[\xA1-\xFEa-zA-Z0-9\.:=_\?\/~\+%@;\-\|\,]+)/i", "\\1<A HREF=\"\\2\" TARGET='$config[cf_link_target]'>\\2</A>", $str);

    // 100825 : () 추가

    // 120315 : CHARSET 에 따라 링크시 글자 잘림 현상이 있어 수정

    if (strtoupper($g4['charset']) == 'UTF-8') {

        $str = preg_replace("/([^(HREF=\"?'?)|(SRC=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[가-힣\xA1-\xFEa-zA-Z0-9\.:=_\?\/~\+%@;\-\|\,\(\)]+)/i", "\\1<A HREF=\"\\2\" TARGET='$config[cf_link_target]'>\\2</A>", $str);

    } else {

        $str = preg_replace("/([^(HREF=\"?'?)|(SRC=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[\xA1-\xFEa-zA-Z0-9\.:=_\?\/~\+%@;\-\|\,\(\)]+)/i", "\\1<A HREF=\"\\2\" TARGET='$config[cf_link_target]'>\\2</A>", $str);

    }

    // 이메일 정규표현식 수정 061004

    //$str = preg_replace("/(([a-z0-9_]|\-|\.)+@([^[:space:]]*)([[:alnum:]-]))/i", "<a href='mailto:\\1'>\\1</a>", $str);

    $str = preg_replace("/([0-9a-z]([-_\.]?[0-9a-z])*@[0-9a-z]([-_\.]?[0-9a-z])*\.[a-z]{2,4})/i", "<a href='mailto:\\1'>\\1</a>", $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;

}

 

 

// 게시글에 첨부된 파일을 얻는다. (배열로 반환)

function get_file($bo_table, $wr_id)

{

    global $g4, $qstr;

 

    $file["count"] = 0;

    $sql = " select * from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' order by bf_no ";

    $result = sql_query($sql);

    while ($row = sql_fetch_array($result))

    {

        $no = $row[bf_no];

        $file[$no][href] = "./download.php?bo_table=$bo_table&wr_id=$wr_id&no=$no" . $qstr;

        $file[$no][download] = $row[bf_download];

        // 4.00.11 - 파일 path 추가

        $file[$no][path] = "$g4[path]/data/file/$bo_table";

        //$file[$no][size] = get_filesize("{$file[$no][path]}/$row[bf_file]");

        $file[$no][size] = get_filesize($row[bf_filesize]);

        //$file[$no][datetime] = date("Y-m-d H:i:s", @filemtime("$g4[path]/data/file/$bo_table/$row[bf_file]"));

        $file[$no][datetime] = $row[bf_datetime];

        $file[$no][source] = addslashes($row[bf_source]);

        $file[$no][bf_content] = $row[bf_content];

        $file[$no][content] = get_text($row[bf_content]);

        //$file[$no][view] = view_file_link($row[bf_file], $file[$no][content]);

        $file[$no][view] = view_file_link($row[bf_file], $row[bf_width], $row[bf_height], $file[$no][content]);

        $file[$no][file] = $row[bf_file];

        // prosper 님 제안

        //$file[$no][imgsize] = @getimagesize("{$file[$no][path]}/$row[bf_file]");

        $file[$no][image_width] = $row[bf_width] ? $row[bf_width] : 640;

        $file[$no][image_height] = $row[bf_height] ? $row[bf_height] : 480;

        $file[$no][image_type] = $row[bf_type];

        $file["count"]++;

    }

 

    return $file;

}

 

 

// 폴더의 용량 ($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;

}

 

 

/*************************************************************************

**

**  그누보드 관련 함수 모음

**

*************************************************************************/

 

 

// 게시물 정보($write_row)를 출력하기 위하여 $list로 가공된 정보를 복사 및 가공

function get_list($write_row, $board, $skin_path, $subject_len=40)

{

    global $g4, $config;

    global $qstr, $page;

 

    //$t = get_microtime();

 

    // 배열전체를 복사

    $list = $write_row;

    unset($write_row);

 

    $list['is_notice'] = preg_match("/[^0-9]{0,1}{$list['wr_id']}[\r]{0,1}/",$board['bo_notice']);

 

    if ($subject_len)

        $list['subject'] = conv_subject($list['wr_subject'], $subject_len, "…");

    else

        $list['subject'] = conv_subject($list['wr_subject'], $board['bo_subject_len'], "…");

 

    // 목록에서 내용 미리보기 사용한 게시판만 내용을 변환함 (속도 향상) : kkal3(커피)님께서 알려주셨습니다.

    if ($board['bo_use_list_content'])

{

$html = 0;

if (strstr($list['wr_option'], "html1"))

$html = 1;

else if (strstr($list['wr_option'], "html2"))

$html = 2;

 

        $list['content'] = conv_content($list['wr_content'], $html);

}

 

    $list['comment_cnt'] = "";

    if ($list['wr_comment'])

        $list['comment_cnt'] = "($list[wr_comment])";

 

    // 당일인 경우 시간으로 표시함

    $list['datetime'] = substr($list['wr_datetime'],0,10);

    $list['datetime2'] = $list['wr_datetime'];

    if ($list['datetime'] == $g4['time_ymd'])

        $list['datetime2'] = substr($list['datetime2'],11,5);

    else

        $list['datetime2'] = substr($list['datetime2'],5,5);

    // 4.1

    $list['last'] = substr($list['wr_last'],0,10);

    $list['last2'] = $list['wr_last'];

    if ($list['last'] == $g4['time_ymd'])

        $list['last2'] = substr($list['last2'],11,5);

    else

        $list['last2'] = substr($list['last2'],5,5);

 

    $list['wr_homepage'] = get_text(addslashes($list['wr_homepage']));

 

    $tmp_name = get_text(cut_str($list['wr_name'], $config['cf_cut_name'])); // 설정된 자리수 만큼만 이름 출력

    if ($board['bo_use_sideview'])

        $list['name'] = get_sideview($list['mb_id'], $tmp_name, $list['wr_email'], $list['wr_homepage']);

    else

        $list['name'] = "<span class='".($list['mb_id']?'member':'guest')."'>$tmp_name</span>";

 

    $reply = $list['wr_reply'];

 

    $list['reply'] = "";

    if (strlen($reply) > 0)

    {

        for ($k=0; $k<strlen($reply); $k++)

            $list['reply'] .= '    ';

    }

 

    $list['icon_reply'] = "";

    if ($list['reply'])

        $list['icon_reply'] = "<img src='$skin_path/img/icon_reply.gif' align='absmiddle'>";

 

    $list['icon_link'] = "";

    if ($list['wr_link1'] || $list['wr_link2'])

        $list['icon_link'] = "<img src='$skin_path/img/icon_link.gif' align='absmiddle'>";

 

    // 분류명 링크

    $list['ca_name_href'] = "$g4[bbs_path]/board.php?bo_table=$board[bo_table]&sca=".urlencode($list['ca_name']);

 

    $list['href'] = "$g4[bbs_path]/board.php?bo_table=$board[bo_table]&wr_id=$list[wr_id]" . $qstr;

    //$list['href'] = "$g4[bbs_path]/board.php?bo_table=$board[bo_table]&wr_id=$list[wr_id]";

    if ($board['bo_use_comment'])

        $list['comment_href'] = "javascript:win_comment('$g4[bbs_path]/board.php?bo_table=$board[bo_table]&wr_id=$list[wr_id]&cwin=1');";

    else

        $list['comment_href'] = $list['href'];

 

    $list['icon_new'] = "";

    if ($list['wr_datetime'] >= date("Y-m-d H:i:s", $g4['server_time'] - ($board['bo_new'] * 3600)))

        $list['icon_new'] = "<img src='$skin_path/img/icon_new.gif' align='absmiddle'>";

 

    $list['icon_hot'] = "";

    if ($list['wr_hit'] >= $board['bo_hot'])

        $list['icon_hot'] = "<img src='$skin_path/img/icon_hot.gif' align='absmiddle'>";

 

    $list['icon_secret'] = "";

    if (strstr($list['wr_option'], "secret"))

        $list['icon_secret'] = "<img src='$skin_path/img/icon_secret.gif' align='absmiddle'>";

 

    // 링크

    for ($i=1; $i<=$g4['link_count']; $i++)

    {

        $list['link'][$i] = set_http(get_text($list["wr_link{$i}"]));

        $list['link_href'][$i] = "$g4[bbs_path]/link.php?bo_table=$board[bo_table]&wr_id=$list[wr_id]&no=$i" . $qstr;

        $list['link_hit'][$i] = (int)$list["wr_link{$i}_hit"];

    }

 

    // 가변 파일

    $list['file'] = get_file($board['bo_table'], $list['wr_id']);

 

    if ($list['file']['count'])

        $list['icon_file'] = "<img src='$skin_path/img/icon_file.gif' align='absmiddle'>";

 

    return $list;

}

 

// get_list 의 alias

function get_view($write_row, $board, $skin_path, $subject_len=125)

{

    return get_list($write_row, $board, $skin_path, $subject_len);

}

 

 

// set_search_font(), get_search_font() 함수를 search_font() 함수로 대체

function search_font($stx, $str)

{

    global $config;

 

    // 문자앞에 \ 를 붙입니다.

    $src = array("/", "|");

    $dst = array("\/", "\|");

 

    if (!trim($stx)) return $str;

 

    // 검색어 전체를 공란으로 나눈다

    $s = explode(" ", $stx);

 

    // "/(검색1|검색2)/i" 와 같은 패턴을 만듬

    $pattern = "";

    $bar = "";

    for ($m=0; $m<count($s); $m++) {

        if (trim($s[$m]) == "") continue;

        // 태그는 포함하지 않아야 하는데 잘 안되는군. ㅡㅡa

        //$pattern .= $bar . '([^<])(' . quotemeta($s[$m]) . ')';

        //$pattern .= $bar . quotemeta($s[$m]);

        //$pattern .= $bar . str_replace("/", "\/", quotemeta($s[$m]));

        $tmp_str = quotemeta($s[$m]);

        $tmp_str = str_replace($src, $dst, $tmp_str);

        $pattern .= $bar . $tmp_str . "(?![^<]*>)";

        $bar = "|";

    }

 

    // 지정된 검색 폰트의 색상, 배경색상으로 대체

    $replace = "<span style='background-color:$config[cf_search_bgcolor]; color:$config[cf_search_color];'>\\1</span>";

 

    return preg_replace("/($pattern)/i", $replace, $str);

}

 

 

// 제목을 변환

function conv_subject($subject, $len, $suffix="")

{

    return cut_str(get_text($subject), $len, $suffix);

}

 

// OBJECT 태그의 XSS 막기

function bad120422($matches)

{

    $tag  = $matches[1];

    $code = $matches[2];

    if (preg_match("#\bscript\b#i", $code)) {

        return "$tag 태그에 스크립트는 사용 불가합니다.";

    } else if (preg_match("#\bbase64\b#i", $code)) {

        return "$tag 태그에 BASE64는 사용 불가합니다.";

    }

    return $matches[0];

}

 

// 내용을 변환

function conv_content($content, $html)

{

    global $config, $board;

 

    if ($html)

    {

        $source = array();

        $target = array();

 

        $source[] = "//";

        $target[] = "";

 

        if ($html == 2) { // 자동 줄바꿈

            $source[] = "/\n/";

            $target[] = "<br/>";

        }

 

        // 테이블 태그의 갯수를 세어 테이블이 깨지지 않도록 한다.

        $table_begin_count = substr_count(strtolower($content), "<table");

        $table_end_count = substr_count(strtolower($content), "</table");

        for ($i=$table_end_count; $i<$table_begin_count; $i++)

        {

            $content .= "</table>";

        }

 

        $content = preg_replace($source, $target, $content);

        $content = bad_tag_convert($content);

 

        // XSS (Cross Site Script) 막기

        // 완벽한 XSS 방지는 없다.

        

        // 이런 경우를 방지함 <IMG STYLE="xss:expr/*XSS*/ession(alert('XSS'))">

        $content = preg_replace("#\/\*.*\*\/#iU", "", $content);

 

        // object, embed 태그에서 javascript 코드 막기

        $content = preg_replace_callback("#<(object|embed)([^>]+)>#i", "bad120422", $content);

 

        $content = preg_replace("/(on)([a-z]+)([^a-z]*)(\=)/i", "on$2$3$4", $content);

        $content = preg_replace("/(dy)(nsrc)/i", "dy$2", $content);

        $content = preg_replace("/(lo)(wsrc)/i", "lo$2", $content);

        $content = preg_replace("/(sc)(ript)/i", "sc$2", $content);

        $content = preg_replace_callback("#<([^>]+)#", create_function('$m', 'return "<".str_replace("<", "<", $m[1]);'), $content);

        $content = preg_replace("/\<(\w|\s|\?)*(xml)/i", "", $content);

 

        // 플래시의 액션스크립트와 자바스크립트의 연동을 차단하여 악의적인 사이트로의 이동을 막는다.

        // value="always" 를 value="never" 로, allowScriptaccess="always" 를 allowScriptaccess="never" 로 변환하는데 목적이 있다.

        $content = preg_replace("/((?<=\<param|\<embed)[^>]+)(\s*=\s*[\'\"]?)always([\'\"]?)([^>]+(?=\>))/i", "$1$2never$3$4", $content);

 

        // 이미지 태그의 src 속성에 삭제등의 링크가 있는 경우 게시물을 확인하는 것만으로도 데이터의 위변조가 가능하므로 이것을 막음

        $content = preg_replace("/<(img[^>]+delete\.php[^>]+bo_table[^>]+)/i", "*** CSRF 감지 : <$1", $content);

        $content = preg_replace("/<(img[^>]+delete_comment\.php[^>]+bo_table[^>]+)/i", "*** CSRF 감지 : <$1", $content);

        $content = preg_replace("/<(img[^>]+logout\.php[^>]+)/i", "*** CSRF 감지 : <$1", $content);

        $content = preg_replace("/<(img[^>]+download\.php[^>]+bo_table[^>]+)/i", "*** CSRF 감지 : <$1", $content);

 

        $pattern = "";

        $pattern .= "(e|(x65|101);?)";

        $pattern .= "(x|(x78|120);?)";

        $pattern .= "(p|(x70|112);?)";

        $pattern .= "(r|(x72|114);?)";

        $pattern .= "(e|(x65|101);?)";

        $pattern .= "(s|(x73|115);?)";

        $pattern .= "(s|(x73|115);?)";

        $pattern .= "(i|(x6a|105);?)";

        $pattern .= "(o|(x6f|111);?)";

        $pattern .= "(n|(x6e|110);?)";

        $content = preg_replace("/".$pattern."/i", "__EXPRESSION__", $content);

    }

    else // text 이면

    {

        // & 처리 : &   등의 코드를 정상 출력함

        $content = html_symbol($content);

 

        // 공백 처리

//$content = preg_replace("/  /", "  ", $content);

$content = str_replace("  ", "  ", $content);

$content = str_replace("\n ", "\n ", $content);

 

        $content = get_text($content, 1);

 

        $content = url_auto_link($content);

    }

 

    return $content;

}

 

 

// 검색 구문을 얻는다.

function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator='and')

{

    global $g4;

 

    $str = "";

    if ($search_ca_name)

        $str = " ca_name = '$search_ca_name' ";

 

    $search_text = strip_tags(($search_text));

    $search_text = trim(stripslashes($search_text));

 

    if (!$search_text) {

        if ($search_ca_name) {

            return $str;

        } else {

            return '0';

        }

    }

 

    if ($str)

        $str .= " and ";

 

    // 쿼리의 속도를 높이기 위하여 ( ) 는 최소화 한다.

    $op1 = "";

 

    // 검색어를 구분자로 나눈다. 여기서는 공백

    $s = array();

    $s = explode(" ", $search_text);

 

    // 검색필드를 구분자로 나눈다. 여기서는 +

    $tmp = array();

    $tmp = explode(",", trim($search_field));

    $field = explode("||", $tmp[0]);

    $not_comment = $tmp[1];

 

    $str .= "(";

    for ($i=0; $i<count($s); $i++) {

        // 검색어

        $search_str = trim($s[$i]);

        if ($search_str == "") continue;

 

        // 인기검색어

        $sql = " insert into $g4[popular_table] set pp_word = '$search_str', pp_date = '$g4[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]' ";

        sql_query($sql, FALSE);

 

        $str .= $op1;

        $str .= "(";

 

        $op2 = "";

        for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)

 

            // SQL Injection 방지

            // 필드값에 a-z A-Z 0-9 _ , | 이외의 값이 있다면 검색필드를 wr_subject 로 설정한다.

            $field[$k] = preg_match("/^[\w\,\|]+$/", $field[$k]) ? $field[$k] : "wr_subject";

 

            $str .= $op2;

            switch ($field[$k]) {

                case "mb_id" :

                case "wr_name" :

                    $str .= " $field[$k] = '$s[$i]' ";

                    break;

                case "wr_hit" :

                case "wr_good" :

                case "wr_nogood" :

                    $str .= " $field[$k] >= '$s[$i]' ";

                    break;

                // 번호는 해당 검색어에 -1 을 곱함

                case "wr_num" :

                    $str .= "$field[$k] = ".((-1)*$s[$i]);

                    break;

                case "wr_ip" :

                case "wr_password" :

                    $str .= "1=0"; // 항상 거짓

                    break;

                // LIKE 보다 INSTR 속도가 빠름

                default :

                    if (preg_match("/[a-zA-Z]/", $search_str))

                        $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";

                    else

                        $str .= "INSTR($field[$k], '$search_str')";

                    break;

            }

            $op2 = " or ";

        }

        $str .= ")";

 

        $op1 = " $search_operator ";

    }

    $str .= " ) ";

    if ($not_comment)

        $str .= " and wr_is_comment = '0' ";

 

    return $str;

}

 

 

// 게시판 테이블에서 하나의 행을 읽음

function get_write($write_table, $wr_id)

{

    return sql_fetch(" select * from $write_table where wr_id = '$wr_id' ");

}

 

 

// 게시판의 다음글 번호를 얻는다.

function get_next_num($table)

{

    // 가장 작은 번호를 얻어

    $sql = " select min(wr_num) as min_wr_num from $table ";

    $row = sql_fetch($sql);

    // 가장 작은 번호에 1을 빼서 넘겨줌

    return (int)($row[min_wr_num] - 1);

}

 

 

// 그룹 설정 테이블에서 하나의 행을 읽음

function get_group($gr_id)

{

    global $g4;

 

    return sql_fetch(" select * from $g4[group_table] where gr_id = '$gr_id' ");

}

 

 

// 회원 정보를 얻는다.

function get_member($mb_id, $fields='*')

{

    global $g4;

 

    return sql_fetch(" select $fields from $g4[member_table] where mb_id = TRIM('$mb_id') ");

}

 

 

// 날짜, 조회수의 경우 높은 순서대로 보여져야 하므로 $flag 를 추가

// $flag : asc 낮은 순서 , desc 높은 순서

// 제목별로 컬럼 정렬하는 QUERY STRING

function subject_sort_link($col, $query_string='', $flag='asc')

{

    global $sst, $sod, $sfl, $stx, $page;

 

    $q1 = "sst=$col";

    if ($flag == 'asc')

    {

        $q2 = 'sod=asc';

        if ($sst == $col)

        {

            if ($sod == 'asc')

            {

                $q2 = 'sod=desc';

            }

        }

    }

    else

    {

        $q2 = 'sod=desc';

        if ($sst == $col)

        {

            if ($sod == 'desc')

            {

                $q2 = 'sod=asc';

            }

        }

    }

 

    return "<a href='$_SERVER[PHP_SELF]?$query_string&$q1&$q2&sfl=$sfl&stx=$stx&page=$page'>";

}

 

 

// 관리자 정보를 얻음

function get_admin($admin='super')

{

    global $config, $group, $board;

    global $g4;

 

    $is = false;

    if ($admin == 'board') {

        $mb = sql_fetch("select * from $g4[member_table] where mb_id in ('$board[bo_admin]') limit 1 ");

        $is = true;

    }

 

    if (($is && !$mb[mb_id]) || $admin == 'group') {

        $mb = sql_fetch("select * from $g4[member_table] where mb_id in ('$group[gr_admin]') limit 1 ");

        $is = true;

    }

 

    if (($is && !$mb[mb_id]) || $admin == 'super') {

        $mb = sql_fetch("select * from $g4[member_table] where mb_id in ('$config[cf_admin]') limit 1 ");

    }

//echo "select * from $g4[member_table] where mb_id in ('$config[cf_admin]') limit 1";

    return $mb;

}

 

 

// 관리자인가?

function is_admin($mb_id)

{

    global $config, $group, $board;

 

    if (!$mb_id) return;

 

    if ($config['cf_admin'] == $mb_id) return 'super';

    if ($group['gr_admin'] == $mb_id) return 'group';

    if ($board['bo_admin'] == $mb_id) return 'board';

    return '';

}

 

 

// 분류 옵션을 얻음

// 4.00 에서는 카테고리 테이블을 없애고 보드테이블에 있는 내용으로 대체

function get_category_option($bo_table='')

{

    global $g4, $board;

 

    /*

    $sql = " select bo_category_list from $g4[board_table] where bo_table = '$bo_table' ";

    $row = sql_fetch($sql);

    $arr = explode("|", $row[bo_category_list]); // 구분자가 , 로 되어 있음

    */

    $arr = explode("|", $board[bo_category_list]); // 구분자가 , 로 되어 있음

    $str = "";

    for ($i=0; $i<count($arr); $i++)

        if (trim($arr[$i]))

            $str .= "<option value='$arr[$i]'>$arr[$i]</option>\n";

 

    return $str;

}

 

 

// 게시판 그룹을 SELECT 형식으로 얻음

function get_group_select($name, $selected='', $event='')

{

    global $g4, $is_admin, $member;

 

    $sql = " select gr_id, gr_subject from $g4[group_table] a ";

    if ($is_admin == "group") {

        $sql .= " left join $g4[member_table] b on (b.mb_id = a.gr_admin)

                  where b.mb_id = '$member[mb_id]' ";

    }

    $sql .= " order by a.gr_id ";

 

    $result = sql_query($sql);

    $str = "<select name='$name' $event>";

    for ($i=0; $row=sql_fetch_array($result); $i++)

    {

        $str .= "<option value='$row[gr_id]'";

        if ($row[gr_id] == $selected) $str .= " selected";

        $str .= ">$row[gr_subject]</option>";

    }

    $str .= "</select>";

    return $str;

}

 

 

// '예', '아니오'를 SELECT 형식으로 얻음

function get_yn_select($name, $selected='1', $event='')

{

    $str = "<select name='$name' $event>";

    if ($selected) {

        $str .= "<option value='1' selected>예</option>";

        $str .= "<option value='0'>아니오</option>";

    } else {

        $str .= "<option value='1'>예</option>";

        $str .= "<option value='0' selected>아니오</option>";

    }

    $str .= "</select>";

    return $str;

}

 

 

// 포인트 부여

function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='')

{

    global $config;

    global $g4;

    global $is_admin;

 

    // 포인트 사용을 하지 않는다면 return

    if (!$config[cf_use_point]) { return 0; }

 

    // 포인트가 없다면 업데이트 할 필요 없음

    if ($point == 0) { return 0; }

 

    // 회원아이디가 없다면 업데이트 할 필요 없음

    if ($mb_id == "") { return 0; }

    $mb = sql_fetch(" select mb_id from $g4[member_table] where mb_id = '$mb_id' ");

    if (!$mb[mb_id]) { return 0; }

 

    // 이미 등록된 내역이라면 건너뜀

    if ($rel_table || $rel_id || $rel_action)

    {

        $sql = " select count(*) as cnt from $g4[point_table]

                  where mb_id = '$mb_id'

                    and po_rel_table = '$rel_table'

                    and po_rel_id = '$rel_id'

                    and po_rel_action = '$rel_action' ";

        $row = sql_fetch($sql);

        if ($row[cnt])

            return -1;

    }

 

    // 포인트 건별 생성

    $sql = " insert into $g4[point_table]

                set mb_id = '$mb_id',

                    po_datetime = '$g4[time_ymdhis]',

                    po_content = '".addslashes($content)."',

                    po_point = '$point',

                    po_rel_table = '$rel_table',

                    po_rel_id = '$rel_id',

                    po_rel_action = '$rel_action' ";

    sql_query($sql);

 

    // 포인트 내역의 합을 구하고

    $sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$mb_id' ";

    $row = sql_fetch($sql);

    $sum_point = $row[sum_po_point];

 

    // 포인트 UPDATE

    $sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$mb_id' ";

    sql_query($sql);

 

    return 1;

}

 

// 포인트 삭제

function delete_point($mb_id, $rel_table, $rel_id, $rel_action)

{

    global $g4;

 

    $result = false;

    if ($rel_table || $rel_id || $rel_action)

    {

        $result = sql_query(" delete from $g4[point_table]

                     where mb_id = '$mb_id'

                       and po_rel_table = '$rel_table'

                       and po_rel_id = '$rel_id'

                       and po_rel_action = '$rel_action' ", false);

 

        // 포인트 내역의 합을 구하고

        $sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$mb_id' ";

        $row = sql_fetch($sql);

        $sum_point = $row[sum_po_point];

 

        // 포인트 UPDATE

        $sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$mb_id' ";

        $result = sql_query($sql);

    }

 

    return $result;

}

 

// 회원 레이어

function get_sideview($mb_id, $name="", $email="", $homepage="")

{

    global $config;

    global $g4;

 

    $email = base64_encode($email);

    $homepage = set_http($homepage);

 

    $name = preg_replace("/\'/", "", $name);

    $name = preg_repla

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 314
© SIRSOFT
현재 페이지 제일 처음으로