플록님의 글처럼 수정된 lib.inc.php 입니다.... > 그누3질답

그누3질답

플록님의 글처럼 수정된 lib.inc.php 입니다.... 정보

그누보드 플록님의 글처럼 수정된 lib.inc.php 입니다....

본문

<?
@extract($HTTP_POST_VARS);
@extract($HTTP_GET_VARS);

// 자주 사용하는 값
$today = date("Y-m-d", time());
$now = date("Y-m-d H:i:s", time());

@include_once "config.inc.php";
@include_once "dbconfig.inc.php";

if ($cfg[mysql_host] && $cfg[mysql_user] && $cfg[mysql_db]) {
    // 상대경로가 선언되지 않았다면
    if (!isset($reldir)) {
        $reldir = ".";
        if (!file_exists($cfg[dir_session])) {
            $reldir = "..";
        }
    }

    //-------------------------------------------
    // SESSION 설정
    //-------------------------------------------
    ini_set("session.cache_expire", "86400");
    session_save_path("$reldir/$cfg[dir_session]");
    if ($SESSION_CACHE_LIMITER) {
        @session_cache_limiter($SESSION_CACHE_LIMITER);
    } else {
        @session_cache_limiter('nocache, must-revalidate');
    }
    // 세션이 사라지지 않는 버그를 위하여
    if ($HTTP_COOKIE_VARS["ck_session"] == "") {
        setcookie("ck_session", "1", 0);
    }

    session_start() ;
    //-------------------------------------------

    include_once "dbconfig.inc.php";
    $connect = @mysql_connect($cfg[mysql_host], $cfg[mysql_user], $cfg[mysql_pass]);
    $select_db = @mysql_select_db($cfg[mysql_db], $connect);
    if (!$select_db) {
        echo "DB 접속 오류";
        exit;
    }
} else {
    echo "<span style='font-size:9pt;'>";
    echo "<p>DB의 설정이 올바르지 않거나 dbconfig.inc.php가 존재하지 않습니다.";
    echo "<p>설치방법 : http://도메인/그누보드디렉토리/_admin/install.php";
    echo "<p>[<a href='$cfg[dir_admin]/install.php'>지금 설치</a>]";
    echo "</font>";
    exit;
}

// 마이크로 타임을 얻어 계산 형식으로 만든다
function get_microtime()
{
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}

// 현재페이지, 총페이지수, 한페이지에 보여줄 행, URL
function get_paging($write_pages, $cur_page, $total_page, $n, $url)
{
    global $cfg;

    $str = "";
    if ($cur_page > 1)
    {
        $str .= "<a href='" . $url . "1' class=s_a>처음</a></a>";
        $str .= "&nbsp;<a href='" . $url . ($cur_page-1) . "' class=s_a>이전</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) . "' class=s_a>...</a>";

    if ($total_page > 1)
        for ($k=$start_page;$k<=$end_page;$k++)
            if ($cur_page != $k)
                $str .= "&nbsp;<a href='$url$k' class=s_a>$k</a>";
            else
                $str .= "&nbsp;<b>$k</b>";

    if ($total_page > $end_page)
        $str .= " <a href='" . $url . ($end_page+1) . "' class=s_a>...</a>";

    if ($cur_page < $total_page)
    {
        $str .= "&nbsp;<a href='$url" . ($cur_page+1) . "' class=s_a>다음</a>";
        // 속도를 위해 막음
        //$str .= "&nbsp;[<a href='$url$total_page'>맨끝</a>]";
    }
    $str .= "";

    return $str;
}

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

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

    echo "<script language='javascript'>alert('$msg');";
    if (!$url)
        echo "history.go(-1);";
    echo "</script>";
    if ($url)
        echo "<meta http-equiv='refresh' content='0;url=$url'>";
    exit;
}

function message($msg, $url='')
{
    if ($url) {
        $url = "location.href='$url'";
    } else {
        $url = "history.go(-1);";
    }

    include "message.php";
    exit;
}

function get_yn($val, $case='')
{
    switch ($case) {
        case '1' : $result = ($val > 0) ? 'Y' : 'N'; break;
        default :  $result = ($val > 0) ? '예' : '아니오';
    }
    return $result;
}

// mysql_query 와 mysql_error 를 한꺼번에 처리
function sql_query_error($sql)
{
    $result = mysql_query($sql) or die("<p>$sql<p>" . mysql_errno() . " : " .  mysql_error());
    return $result;
}

// 한행을 얻는다.
function sql_fetch_array($sql)
{
    $result = sql_query_error($sql);
    $row = @mysql_fetch_array($result);
    mysql_free_result($result);
    return $row;
}

// 한글 한글자(2byte)는 길이 2, 공란.영숫자.특수문자는 길이 1
function cut_str($str, $len, $suffix="")
{
    $s = substr($str, 0, $len);
    $cnt = 0;
    for ($i=0; $i<strlen($s); $i++)
        if (ord($s[$i]) > 127)
            $cnt++;
    $s = substr($s, 0, $len - ($cnt % 2));
    if (strlen($s) >= strlen($str))
        $suffix = "";
    return $s . $suffix;
}

function set_search_font($stext, $str)
{
    // / 검색시 오류나는 부분을 수정
    /*
    $source = array ("[", "]");
    $target = array ("&#091;", "&#093;");
    $stext = str_replace($source, $target, $stext);
    return ereg_replace("$stext", "__SEARCH_FONT_BEGIN__{$stext}__SEARCH_FONT_END__", $str);
    */

    return str_replace($stext, "__SEARCH_FONT_BEGIN__{$stext}__SEARCH_FONT_END__", $str);

    //return preg_replace("/$stext/i", "__SEARCH_FONT_BEGIN__{$stext}__SEARCH_FONT_END__", $str);
}

function get_search_font($str) {
    global $default;

    $source = array("/__SEARCH_FONT_BEGIN__/", "/__SEARCH_FONT_END__/");
    $target = array("<span style='background-color:$default[de_search_bgcolor]'><font color='$default[de_search_color]'>", "</font></span>");
    return preg_replace($source, $target, $str);
}

// TEXT 형식으로 변환
function get_text($str, $html=0)
{
    $source[] = "/  /";
    $target[] = " &nbsp;";
    $source[] = "/</";
    $target[] = "&lt;";
    $source[] = "/>/";
    $target[] = "&gt;";
    //$source[] = "/\"/";
    //$target[] = "&#034;";
    $source[] = "/\'/";
    $target[] = "&#039;";
    $source[] = "/}/";
    $target[] = "&#125;";
    if ($html) {
        $source[] = "/\n/";
        $target[] = "<br>";
    }

    return preg_replace($source, $target, $str);
}

// 검색 구문을 얻는다.
function get_sql_search($field, $stext)
{
    $str = " and ( ";
    switch ($field) {
        case "wr_subject|wr_content" :
            $str .= " (wr_subject like '%$stext%' or wr_content like '%$stext%') ";
            break;
        case "ca_id" :
            $str .= " ($field = '$stext') ";
            break;
        case "wr_hit" :
        case "wr_good" :
        case "wr_nogood" :
            $str .= " ($field >= '$stext') ";
            break;
        case "wr_num" :
            $str .= " ($field = ".((-1)*$stext).") ";
            break;
        default :
            $str .= " ($field like '%$stext%') ";
            break;
    }
    $str .= " ) ";

    return $str;
}

// 게시판 테이블에서 하나의 행을 읽음
function get_write($write, $wr_id)
{
    return sql_fetch_array(" select * from $write where wr_id = '$wr_id' ");
}

// 그룹 설정 테이블에서 하나의 행을 읽음
function get_group($gr_id)
{
    global $cfg;
    return sql_fetch_array(" select * from $cfg[table_group] where gr_id = '$gr_id' ");
}

// 존재하는 게시판인가?
function is_board($table)
{
    global $cfg;

    $is = false;
    $result = mysql_list_tables($cfg[mysql_db]);
    for ($i=0; $i<mysql_num_rows($result); $i++) {
        if ($table == mysql_tablename($result, $i)) {
            $resultfield = mysql_list_fields($cfg[mysql_db], $table);
            // 테이블의 첫번째 필드가 wr_id 이면 게시판 테이블이다.
            if (mysql_field_name($resultfield, 0) == "wr_id") {
                $is = true;
                break;
            }
        }
    }

    return $is;
}

// 회원 정보를 얻는다.
function get_member($mb_id)
{
    global $cfg;

    $sql = " select * from $cfg[table_member]
              where mb_id = TRIM('$mb_id') ";
    return sql_fetch_array($sql);
}

// SQL PASSWORD 를 얻는다.
function sql_password($passwd)
{
    $sql = " SELECT PASSWORD('$passwd') ";
    $row = sql_fetch_array($sql);
    return $row[0];
}

// way.co.kr 의 wayboard 참고
function urlautolink ($str)
{
    global $default;

    $str = ereg_replace("&lt;", "\t_lt_\t", $str);
    $str = ereg_replace("&gt;", "\t_gt_\t", $str);
    $str = ereg_replace("&amp;", "&", $str);
    $str = ereg_replace("&quot;", "\"", $str);
    $str = eregi_replace("([^(http://)]|\(|^)(www\.[a-zA-Z0-9\.-]+\.[\xA1-\xFEa-zA-Z0-9\.:&#=_\?/~\+%@;-]+)", "\\1<A HREF=\"http://\\2\" TARGET='$default[de_link_target]'>\\2</A>", $str);
    $str = eregi_replace("([^(HREF=\"?'?)|(SRC=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms)://[a-zA-Z0-9\.-]+\.[\xA1-\xFEa-zA-Z0-9\.:&#=_\?/~\+%@;-]+)", "\\1<A HREF=\"\\2\" TARGET='$default[de_link_target]'>\\2</A>", $str);
    $str = eregi_replace("([^(HREF=)]|\(|^)\"?'?([a-zA-Z0-9\._-]+@[a-zA-Z0-9\.-]+)", "\\1<A HREF=\"mailto:\\2\">\\2</A>", $str);
    $str = ereg_replace("\t_lt_\t", "&lt;", $str);
    $str = ereg_replace("\t_gt_\t", "&gt;", $str);

    return $str;
}

// 스킨경로를 얻는다
function get_skin_dir($val, $reldir=".")
{
    global $cfg;

    $result_array = array();

    $dirname = "$reldir/$cfg[dir_skin]/$val/";
    $handle = opendir($dirname);
    while ($file = readdir($handle)) {

        if($file == "."||$file == "..") {
            continue;
        }

        if (is_dir($dirname.$file)) {
            $result_array[] = $file;
        }
    }
    closedir($handle);
    sort($result_array);

    return $result_array;
}

// 리스트 제목에 정렬 넣기
function get_field_sort($subject, $field) {
    global $HTTP_SERVER_VARS, $qstr, $aorder;

    return  "<a href='$HTTP_SERVER_VARS[PHP_SELF]?$qstr&ssort=$field&sorder=$aorder[$field]'>$subject</a>";
}

// 메일 보내기 (파일 여러개 첨부 가능)
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $charset="EUC-KR", $cc="", $bcc="") {
    // type : text=0, html=1, text+html=2

    $fname  = "=?$charset?B?" . base64_encode($fname) . "?=";
    $subject = "=?$charset?B?" . base64_encode($subject) . "?=";
    $charset = ($charset != "") ? "charset=$charset" : "";

    $header  = "Return-Path: <$fmail>\n";
    $header .= "From: $fname <$fmail>\n";
    $header .= "Reply-To: <$fmail>\n";
    if ($cc)  $header .= "Cc: $cc\n";
    if ($bcc) $header .= "Bcc: $bcc\n";
    $header .= "MIME-Version: 1.0\n";
    $header .= "X-Mailer: sir mailer 0.9 (sir.co.kr)\n";

    if ($file != "") {
        $boundary = uniqid("http://sir.co.kr/");

        $header .= "Content-type: MULTIPART/MIXED; BOUNDARY=\"$boundary\"\n";
        $header .= "--$boundary\n";
    }

    if ($type) {
        $header .= "Content-Type: TEXT/HTML; $charset\n";
        if ($type == 2)
            $content = nl2br($content);
    } else {
        $header .= "Content-Type: TEXT/PLAIN; $charset\n";
        $content = stripslashes($content);
    }
    $header .= "Content-Transfer-Encoding: BASE64\n\n";
    $header .= chunk_split(base64_encode($content)) . "\n";

    if ($file != "") {
        foreach ($file as $f) {
            $header .= "\n--$boundary\n";
            $header .= "Content-Type: APPLICATION/OCTET-STREAM; name=\"$f[name]\"\n";
            $header .= "Content-Transfer-Encoding: BASE64\n";
            $header .= "Content-Disposition: inline; filename=\"$f[name]\"\n";

            $header .= "\n";
            $header .= chunk_split(base64_encode($f[data]));
            $header .= "\n";
        }
        $header .= "--$boundary--\n";
    }
    @mail($to, $subject, "", $header);
}

// 파일 첨부시
/*
$fp = fopen(__FILE__, "r");
$file[] = array(
    "name"=>basename(__FILE__),
    "data"=>fread($fp, filesize(__FILE__)));
fclose($fp);
*/

// 파일을 첨부함
function attach_file($filename, $file)
{
    $fp = fopen($file, "r");
    $tmpfile = array(
        "name" => $filename,
        "data" => fread($fp, filesize($file)));
    fclose($fp);
    return $tmpfile;
}

function get_admin($admin='default')
{
    global $cfg, $default, $group, $board;

    $is = false;
    if ($admin == 'board') {
        $mb = sql_fetch_array("select * from $cfg[table_member] where mb_id = '$board[bo_admin]'");
        $is = true;
    }

    if (($is && !$mb[0]) || $admin == 'group') {
        $mb = sql_fetch_array("select * from $cfg[table_member] where mb_id = '$group[gr_admin]'");
        $is = true;
    }

    if (($is && !$mb[0]) || $admin == 'default') {
        $mb = sql_fetch_array("select * from $cfg[table_member] where mb_id = '$default[de_admin]'");
    }

    return $mb;
}

function is_admin($mb_id)
{
    global $default, $cfg;

    $is = '';
    if ($mb_id) {
        if ($default[de_admin] == $mb_id) {
            $is = 'default';
        } else {
            $sql = " select count(*) from $cfg[table_group] where gr_admin = '$mb_id' ";
            $row = sql_fetch_array($sql);
            if ($row[0] > 0) {
                $is = 'group';
            } else {
                $sql = " select count(*) from $cfg[table_board] where bo_admin = '$mb_id' ";
                $row = sql_fetch_array($sql);
                if ($row[0] > 0) {
                    $is = 'board';
                }
            }
        }
    }

    return $is;
}

// 분류 옵션을 얻음
function get_category_option($table)
{
    global $cfg;

    $sql = " select * from {$table}_cat order by ca_id ";
    $result = sql_query_error($sql);
    $str = "";
    while ($row = mysql_fetch_array($result)) {
        $str .= "<option value='$row[ca_id]'>$row[ca_name]</option>\n";
    }
    mysql_free_result($result);

    return $str;
}

function get_category_name($table, $ca_id)
{
    global $cfg;

    $sql = " select ca_name from {$table}_cat where ca_id = '$ca_id' ";
    $row = sql_fetch_array($sql);
    return $row[0];
}

// 필터링
function check_filter($content)
{
    global $default;

    $filter = $default[de_filter];

    $is_bad = false;
    $pattern = explode(",", $filter);
    for ($i=0; $i<count($pattern); $i++) {
        $pattern[$i] = trim($pattern[$i]);
        if ($pattern[$i] == "") {
            continue;
        }
        $pat = "/{$pattern[$i]}/i";
        $is_bad = preg_match($pat, $content);
        if ($is_bad) {
            break;
        }
    }

    return $is_bad;
}


// IP 차단
function check_intercept_ip()
{
    global $cfg, $HTTP_SERVER_VARS;

    $is_bad = false;
    $pattern = explode(",", trim($default[de_intercept_ip]));
    for ($i=0; $i<count($pattern); $i++) {
        $pattern[$i] = trim($pattern[$i]);
        if ($pattern[$i] == "") {
            continue;
        }
        $pat = "/^({$pattern[$i]})/";
        $is_bad = preg_match($pat, $HTTP_SERVER_VARS[REMOTE_ADDR]);
        if ($is_bad)
            break;
    }

    return $is_bad;
}


function get_level_select($name, $selected='1', $event='')
{
    global $cfg;

    $str = "<select name='$name' $event>";
    for ($i=$cfg[level_guest]; $i<=$cfg[level_max]; $i++) {
        $str .= "<option value='$i'";
        if ($i == $selected) {
            $str .= " selected ";
        }
        $str .= ">$i</option>";
    }
    $str .= "</select>";
    return $str;
}


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)
{
    global $cfg, $default, $today;

    $sql = " select mb_today_point from $cfg[table_member]
              where mb_id = '$mb_id'
              and TO_DAYS('$today') - TO_DAYS(mb_today_login) = 0 ";
    $row = sql_fetch_array($sql);
    $today_point = $row[mb_today_point];

    // 하루 누적 포인트보다 작다면
    if ($today_point < $default[de_day_max_point]) {
        $sql = " update $cfg[table_member]
                    set mb_point = mb_point + '$point',
                        mb_today_point = mb_today_point + '$point'
                  where mb_id = '$mb_id' ";
        sql_query_error($sql);
    }
}

// 부여된 포인트를 삭제한다.
function delete_point($po_id)
{
    global $cfg;

    $sql = " select mb_id, po_point from $cfg[table_point] where po_id = '$po_id' ";
    $po = sql_fetch_array($sql);

    $sql = " delete from $cfg[table_point] where po_id = '$po_id' ";
    sql_query_error($sql);

    $sql = " update $cfg[table_member] set mb_point = mb_point - '$po[po_point]' where mb_id = '$po[mb_id]' ";
    sql_query_error($sql);
}

// 게시판의 다음글 번호를 얻는다.
function get_next_num($table, $notice=0)
{
    /*
    $sql = " select min(wr_num) from $table where wr_notice = '$notice' ";
    $row = sql_fetch_array($sql);
    return $row[0] - 1;
    */

    // 빠른 검색을 위하여 위의 코드를 아래의 코드로 대체함 (2003-03-04)

    // 공지사항일 경우 공지사항에서 가장 작은 번호를 얻고
    if ($notice == -1) {
        $sql1 = " select min(wr_num) from $table where wr_notice = '-1' ";
        $row1 = sql_fetch_array($sql1);
    }

    // 공지사항이 아닌글에서 가장 작은 번호를 얻어
    $sql2 = " select min(wr_num) from $table where wr_notice = '0' ";
    $row2 = sql_fetch_array($sql2);

    // 공지사항이 하나도 없다면 공지사항이 아닌글의 번호를 주고
    if (!$row1[0]) $row1[0] = $row2[0];

    // 공지사항이면서 공지사항이 공지사항이 아닌글보다 작거나 같다면 공지사항의 번호를 1 뺀 값을 반환
    if (($notice == -1) && ($row1[0] <= $row2[0])) {
        return $row1[0] - 1;
    } else { // 아니면 공지사항이 아닌글의 번호를 1 뺀 값을 반환
        return $row2[0] - 1;
    }
}

// 서명에 사용할 수 없는 태그를 다른 이름의 태그로 변환
function convert_signature($signature)
{
    $source[] = "<script";
    $source[] = "</script";
    $target[] = "<x-script";
    $target[] = "</x-script";

    return str_replace($source, $target, $signature);
}

// 제목별로 컬럼 정렬하는 QUERY STRING
function title_sort($col, $title)
{
    global $ssort, $sorder, $sselect, $stext, $page, $gr_id;
    global $HTTP_SERVER_VARS;

    $q1 = "ssort=$col";
    $q2 = "sorder=asc";
    if ($ssort == $col) {
        if ($sorder == "asc") {
            $q2 = "sorder=desc";
        }
    }
    return "<a href='$HTTP_SERVER_VARS[PHP_SELF]?$q1&$q2&sselect=$sselect&stext=$stext&gr_id=$gr_id&page=$page'><font color=#ffffff>$title</font></a>";
}

// 로그인 사용자 수
function get_login_count($kind='total')
{
    global $cfg;
    $fr_time = date("Y-m-d H:i:s", time() - (60 * $cfg[login_minutes]));
    $to_time = date("Y-m-d H:i:s", time());
    $sql = " select count(lo_ip) from $cfg[table_login]
              where lo_datetime between '$fr_time' and '$to_time' ";
    if ($kind == 'total')
        $sql .= "";
    else if ($kind == 'member')
        $sql .= " and mb_id != '' ";
    else if ($kind == 'guest')
        $sql .= " and mb_id = '' ";
    $row = sql_fetch_array($sql);
    return $row[0];
}

// 쪽지 레이어
function gblayer($mb_id, $name='', $email='', $homepage='', $icon=true)
{
    global $cfg, $reldir, $bbsdir;
    static $layerno = 0;

    $layerno++;
    $email = preg_replace("/@/", "&#064;", $email);
    $homepage = set_http($homepage);

    $str = "<span onclick=\"gblayeraction('gblayer{$layerno}')\" style='cursor:hand;'>";
    if ($mb_id) {
        $mb = get_member($mb_id);
        $icon_file = "$reldir/$cfg[dir_member]/$mb_id.gif";
        if (file_exists($icon_file) && is_file($icon_file)) {
            $size = getimagesize($icon_file);
            $width = $size[0];
            $height = $size[1];
            if ($width > 16) {
                $width = 16;
            }
            if ($height > 16) {
                $height = 16;
            }
            $str .= "<img src='$icon_file' width='$width' height='$height' align=absbottom> ";
        }
        $str .= "<b>$name</b>";
        // 정보 비공개
        if (!$mb[mb_open]) {
            $mb_id = "";
            $email = "";
            $homepage = "";
        }
    } else {
        $str .= $name;
    }
    $str .= "</span>";
    $dir = "$reldir/$bbsdir";
    $str .= "<script language='JavaScript'>gblayer('gblayer{$layerno}', '{$mb_id}', '{$name}', '{$email}', '{$homepage}', '{$dir}');</script>";
    return $str;
}

// url에 http:// 를 붙인다
function set_http($url)
{
    if (!trim($url))
        return;
    if (!eregi("^(http|https)://", $url))
        $url = "http://" . $url;
    return $url;
}

// 파일을 보이게 하는 링크 (이미지, 플래쉬, 동영상)
function view_file_link($file)
{
    global $cfg, $board, $reldir;

    if (!$file) return;

    $size = @getimagesize("$reldir/$cfg[dir_file]/$board[bo_table]/$file");
    $source_width  = $size[0];
    $source_height = $size[1];

    if ($board[bo_table_width] <= 100) {
        if ($size[0] > $cfg[large_image_size]) {
            $rate = $size[1] / $size[0];
            $size[0] = $cfg[large_image_size];
            $size[1] = (int)($size[0] * $rate);
        }
    } else {
        if ($size[0] > $board[bo_table_width]) {
            $rate = $size[1] / $size[0];
            $size[0] = $board[bo_table_width];
            $size[1] = (int)($size[0] * $rate);
        }
    }

    $width  = $size[0];
    $height = $size[1];

    if (preg_match($cfg[image_extension], $file))
        return "<img src='$reldir/$cfg[dir_file]/$board[bo_table]/$file' width='$width' height='$height' border=0><p>";
    else if (preg_match($cfg[flash_extension], $file))
        return "<embed src='$reldir/$cfg[dir_file]/$board[bo_table]/$file' width='$width' height='$height'></embed><p>";
    else if (preg_match($cfg[movie_extension], $file))
        return "<embed src='$reldir/$cfg[dir_file]/$board[bo_table]/$file'></embed><p>";
}

// 현재 스크립트의 URL 을 얻는다
function get_current_url($http="http")
{
    global $HTTP_SERVER_VARS;

    $url = $http . "://" . $HTTP_SERVER_VARS["HTTP_HOST"] . dirname($HTTP_SERVER_VARS["PHP_SELF"]);
    // 뒤에 / 로 끝나면 / 를 없애준다
    return preg_replace("/(\/)$/", "", $url);
}

// 파일의 용량을 구한다.
function get_filesize($file)
{
    $size = filesize(addslashes($file));
    if ($size >= 1024768) {
        $size = number_format($size/1024768, 1) . "M";
    } else if ($size >= 1024) {
        $size = number_format($size/1024, 1) . "K";
    } else {
        $size = number_format($size, 0) . "byte";
    }
    return $size;
}

function conv_subject($subject, $len, $suffix="")
{
    global $sselect, $stext;

    $subject = cut_str($subject, $len, $suffix);
    if ($stext && preg_match("/wr_subject/", $sselect)) {
        $subject = set_search_font($stext, $subject);
    }
    $subject = get_text($subject);
    if ($stext && preg_match("/wr_subject/", $sselect)) {
        $subject = get_search_font($subject);
    }

    return $subject;
}

// content 를 변환한다.
function conv_content($content, $html)
{
    global $sselect, $stext;

    if ($html) {    // html 이면
        $source = array ( "/<script/i", "/<\/script/i", "/javascript:/i", "/http-equiv/i" );
        $target = array ( "<x-script",  "</x-script",  "x-javascript:",  "x-http-equiv"  );

        if ($html == 2) { // 자동 줄바꿈
            $source[] = "/\n/";
            $target[] = "<br>";
        }

        $content = preg_replace($source, $target, $content);
    } else {    // text 이면
        if ($stext && preg_match("/wr_content/", $sselect)) {
            $content = set_search_font($stext, $content);
        }
        $content = get_text($content, 1);
        if ($stext && preg_match("/wr_content/", $sselect)) {
            $content = get_search_font($content);
        }
        $content = urlautolink($content);
    }

    return $content;
}

// 최신글을 추출한다.
function latest($skin_dir='', $bo_table, $rows=10, $len=40)
{
    global $latest_skin, $cfg, $reldir, $bbsdir;

    include_once "$reldir/$bbsdir/gblayer.php";

    // 스킨디렉토리값이 넘어왔다면
    if ($skin_dir) {
        $skin_dir = "$reldir/$bbsdir/$cfg[dir_skin]/latest/$skin_dir";
    } else {
        $skin_dir = $latest_skin;
    }

    $sql = " select * from $cfg[table_board] where bo_table = '{$cfg[write_table_prefix]}{$bo_table}' ";
    $bo = sql_fetch_array($sql);
    $bo_subject = $bo[bo_subject];
    include "$skin_dir/latest_head.skin.php";

    $sql = " select *
              from {$cfg[write_table_prefix]}{$bo_table}
              where wr_comment = 0
              order by wr_num limit 0, $rows ";
    $result = sql_query_error($sql);
    for ($i=0; $row = mysql_fetch_array($result); $i++) {
        $wr_subject = conv_subject($row[wr_subject], $len,"…");
        //$wr_name = cut_str($row[wr_name],10);
        $wr_name = gblayer($row[mb_id], cut_str($row[wr_name],10), $row[wr_email], $row[wr_homepage], "$reldir/$bbsdir");
        $wr_date = substr($row[wr_datetime],2,8);
        $a_list_link = "$reldir/$bbsdir/gnuboard.php?bo_table=$bo_table&wr_id=$row[wr_id]";
$file1_image = "$reldir/$cfg[dir_file]/$bo_table/$row[wr_file1]"; //이미지를 보이게추가함
        include "$skin_dir/latest_main.skin.php";
    }
    mysql_free_result($result);

    $show_nodata_begin = "";
    $show_nodata_end = "";
    if ($i>0) {
        $show_nodata_begin = "<!--";
        $show_nodata_end = "-->";
    }
    include "$skin_dir/latest_tail.skin.php";
}



// 화면 머리부분
function head($title="", $script="")
{
global $reldir, $bbsdir, $cfg, $board, $group, $default, $member;
global $board_skin, $outlogin_skin, $member_skin, $memo_skin, $latest_skin, $dir;
global $is_admin;
global $HTTP_SERVER_VARS;

$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

echo "<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=euc-kr'>
<title>{$title}</title>
<link rel='stylesheet' href='{$reldir}/style.css' type='text/css'>
</head>

<body leftmargin=5 topmargin=5 {$script}>

<!-- 상단 책갈피 -->
<a name='gnuboard_head'></a>

<table width=100% cellpadding=0 cellspacing=0 border=0><tr><td>
";

if ($board[bo_include_head]) { @include $board[bo_include_head]; }
if ($board[bo_content_head]) { echo stripslashes($board[bo_content_head]); }
}

// 화면 꼬리부분
function tail()
{
global $reldir, $bbsdir, $cfg, $board;

if ($board[bo_content_tail]) { echo stripslashes($board[bo_content_tail]); }
if ($board[bo_include_tail]) { @include $board[bo_include_tail]; }

echo "
</td></tr></table>

<script language='JavaScript' src='{$reldir}/wrest.js'></script>

</body>
</html>";
}



// 자바스크립트에서 go(-1) 또는 back() 함수를 쓰면 폼값이 사라질때 해당 폼의 상단에 사용하면
// 캐쉬의 내용을 가져옴. 완전한지는 검증되지 않음
function header_cache()
{
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");   
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("cache-contril: no-cache,must-revalidate");
    header("pragma: no-cache") ;
}



// 폴더의 용량 ($dir는 / 없이 넘기세요)
function dirsize($dir)
{
    $size = 0;
    $d = dir($dir);
    while ($entry = $d->read()) {
        if ($entry != "." && $entry != "..") {
            $size += filesize("$dir/$entry");
        }
    }
    $d->close();
    return $size;
}


// HTML 특수문자 변환 htmlspecialchars
function htmlspecialchars2($str)
{
    $trans = array("\"" => "&#034;", "'" => "&#039;", "<"=>"&#060;", ">"=>"&#062;");
    $str = strtr($str, $trans);
    return $str;
}


//------------------------------------------------------------
// 공통
//------------------------------------------------------------

if (!$select_db) {
    return;
}

// 로그인중이라면
if ($HTTP_SESSION_VARS[ss_mb_id]) {
    $member = get_member($HTTP_SESSION_VARS[ss_mb_id]);

    // 읽지 않은 쪽지가 있다면
    $sql = " select count(*) from $cfg[table_memo]
              where me_recv_mb_id = '$member[mb_id]'
                and me_read_datetime = '0000-00-00 00:00:00' ";
    $row = sql_fetch_array($sql);
    $memo_not_read = $row[0];
} else {
    unset($member);
}

// 회원자료가 없다면 (로그인이 아니라면 또는 회원이 아니라면)
if (!$member[mb_id]) {
    $member[mb_level] = $cfg[level_guest];
}


$sql = " insert into $cfg[table_login]
            set lo_ip = '$HTTP_SERVER_VARS[REMOTE_ADDR]',
                mb_id = '$member[mb_id]',
                lo_datetime = '$now' ";
$result = mysql_query($sql);
if (!$result) {
    $sql = " update $cfg[table_login]
                set mb_id = '$member[mb_id]',
                    lo_datetime = '$now'
              where lo_ip = '$HTTP_SERVER_VARS[REMOTE_ADDR]' ";
    mysql_query($sql);
}

// 시간이 지난 접속은 삭제한다
$deltime = date("Y-m-d H:i:s", time() - (60 * $cfg[login_minutes]));
$sql = " delete from $cfg[table_login] where lo_datetime < '$deltime' ";
mysql_query($sql);

if (isset($bo_table)) {
    $write_table = $cfg[write_table_prefix] . $bo_table; // 게시판 테이블 전체이름
    $board = sql_fetch_array(" select * from $cfg[table_board] where bo_table = '$bo_table' ");
    if ($board[0]) {
        $gr_id = $board[gr_id];
        if ($wr_id) {
            $write = sql_fetch_array(" select * from $write_table where wr_id = '$wr_id' ");
        }
    }
}

if ($gr_id) {
    $group = sql_fetch_array(" select * from $cfg[table_group] where gr_id = '$gr_id' ");
}

//===================================
// 공용 변수
//===================================
// 기본환경설정
$default = sql_fetch_array(" select * from $cfg[table_default] ");

// 스킨 디렉토리
$board_skin    = "$reldir/$bbsdir/$cfg[dir_skin]/board/$board[bo_skin]"; // 게시판 스킨경로
$outlogin_skin = "$reldir/$bbsdir/$cfg[dir_skin]/outlogin/$default[de_outlogin_skin]"; // 아웃로그인 스킨경로
$member_skin  = "$reldir/$bbsdir/$cfg[dir_skin]/member/$default[de_member_skin]"; // 회원가입, 로그인, 비밀번호 분실 스킨경로
$memo_skin    = "$reldir/$bbsdir/$cfg[dir_skin]/memo/$default[de_memo_skin]"; // 쪽지 스킨경로
$latest_skin  = "$reldir/$bbsdir/$cfg[dir_skin]/latest/$default[de_latest_skin]"; // 최신글 스킨경로
$dir          = $board_skin; // $board_skin 을 사용해야 하지만 기존 스킨과의 호환을 위하여 그냥 놔둠

// QUERY_STRING
$qstr = "";
if (isset($bo_table)) $qstr .= "bo_table=$bo_table";
if (isset($sselect)) $qstr .= "&sselect=$sselect";
if (isset($stext)) $qstr .= "&stext=$stext";
if (isset($section)) $qstr .= "§ion=$section";

// 관리자인가?
$is_admin = is_admin($member[mb_id]);
//===================================

// 개발자(사용자) 함수 및 변수 라이브러리
@include_once "libdev.inc.php";
?>

댓글 전체

쉽게 찾으실려면 키보드의 ctrl + f 키를 누르면 창이 하나 나옵니다 찾을 문자열에서
(  이미지를 보이게추가함  ) 을 찾으시면 됩니다.
bbking 님 저는 덮어쓰면 안되요..
왜냐면.. 저는 틀리거든요..
그래서..수정부분만..갈켜 주시면 되는데.. 미안해서 어쩌지요..

저는 덮어쓰면.. 다른게 안되거든요..
죄송하지만.. 수정부분이 어딘지만.. 갈켜 주실수는 없는지요?
전체 9,564
그누3질답 내용 검색

회원로그인

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