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

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

QA

영카트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

답변을 작성하시기 전에 로그인 해주세요.
전체 314
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT