소스가 자동으로 바뀌는데요.
작성한 그래도 나오게 할 수 없을까요?
/lib/common.lib.php 이곳에서 수정을 하라고 하시는거 같은데.
까막눈이라.
조언 좀 부탁드립니다.
Copy
&nbs
<?if (!defined('_GNUBOARD_')) exit; /***************************************************************************** 일반 함수 모음***************************************************************************/ // 마이크로 타임을 얻어 계산 형식으로 만듦function get_microtime(){ list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec);} // 현재페이지, 총페이지수, 한페이지에 보여줄 행, URLfunction 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){ /* if (preg_match("/MSIE/", $_SERVER[HTTP_USER_AGENT])) echo "<meta http-equiv='Refresh' content='0;url=$url'>"; else echo "<script language='JavaScript'> document.location.href = '$url'; </script>"; */ //header("Location:$url"); //flush(); //if (!headers_sent()) // header("Location:$url"); //else //echo "<script language='JavaScript'> document.location.href = '$url'; </script>"; echo "<script language='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 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 language='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 language='javascript'> alert('$msg'); window.close(); </script>"; exit;} // way.co.kr 의 wayboard 참고function url_auto_link($str){ 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); // 이메일 정규표현식 수정 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'], 2);// } $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 의 aliasfunction 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);} // 내용을 변환function conv_content($content, $html){ global $config, $board; if ($html) { $source = array(); $target = array(); $source[] = "//"; $target[] = ""; if ($html == 2) { // 자동 줄바꿈 $source[] = "/\n/"; $target[] = "<br/>"; } /* if ($board[bo_disable_tags]) { //$source[] = "/(\<)([\/]?)($board[bo_disable_tags])/i"; // 태그에만 적용하던것을 속성(프로퍼티)에도 적용하도록 수정 $source[] = "/([\<]?)([\/]?)($board[bo_disable_tags])/i"; $target[] = "$1$2$3-x"; //$source[] = "/^/"; //$target[] = "<b>이 페이지는 사용금지 태그 사용으로 인하여 정상 출력되지 않을 수 있습니다.</b><p>"; } */ // 테이블 태그의 갯수를 세어 테이블이 깨지지 않도록 한다. $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 방지는 없다. // 081022 : CSRF 방지 //$content = preg_replace("/(on)(abort|blur|change|click|dblclick|dragdrop|error|focus|keydown|keypress|keyup|load|mousedown|mousemove|mouseout|mouseover|mouseup|mouseenter|mouseleave|move|reset|resize|select|submit|unload)/i", "$1<!-- XSS Filter -->$2", $content);// $content = preg_replace("/(on)([^\=]+)/i", "on$2", $content);// $content = preg_replace("/(^on)([a-z]+)([^a-z]*)(\=)/i", "on$2$3$4", $content); $content = preg_replace("/(\s+)(on)([a-z]+)(\s*)(\=)/i", "$1on$3$4$5", $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("/(ex)(pression)/i", "ex$2", $content); /* $content = preg_replace("/\#/", "#", $content); $content = preg_replace("/\</", "<", $content); $content = preg_replace("/\>/", ">", $content); $content = preg_replace("/\(/", "(", $content); $content = preg_replace("/\)/", ")", $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=false)function get_sql_search($search_ca_name, $search_field, $search_text, $search_operator='and', $bo_table=''){ global $g4; $str = ""; if ($search_ca_name) $str = " ca_name = '$search_ca_name' "; $search_text = trim($search_text); if (!$search_text) return $str; if ($str) $str .= " and "; // 쿼리의 속도를 높이기 위하여 ( ) 는 최소화 한다. $op1 = ""; // 검색어를 구분자로 나눈다. 여기서는 공백 $s = array(); $s = explode(" ", $search_text); // 검색필드를 구분자로 나눈다. 여기서는 + //$field = array(); //$field = explode("||", trim($search_field)); $tmp = array(); $tmp = explode(",", trim($search_field)); $field = explode("||", $tmp[0]); $not_comment = $tmp[1]; if(/*!empty($_GET['a']) &&*/ $bo_table=='B32' or $bo_table=='B33' or $bo_table=='tongil03_c' or $bo_table=='tongil03_c02' ){//2015-07-08 영문라이브러리 - 데이타가 안되는 그냥 비인덱스 검색처리 $_strs = array(); for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...) $_str = ''; $_search_text = mysql_real_escape_string(stripslashes($search_text)); switch ($field[$k]) { case "mb_id" : case "wr_name" : $_str = " $field[$k] = '$_search_text' "; break; case "wr_hit" : case "wr_good" : case "wr_nogood" : $_str = " $field[$k] >= '$_search_text' "; break; // 번호는 해당 검색어에 -1 을 곱함 case "wr_num" : $_str = "$field[$k] = ".((-1)*$_search_text); break; // LIKE 보다 INSTR 속도가 빠름 default : $_str = "$field[$k] LIKE '%$_search_text%'"; break; } if($_str){ $_strs[] = $_str; } } if($_strs){ $str .= join(' AND ',$_strs); } } if(!$_strs){ $str .= "("; for ($i=0; $i<count($s); $i++) { // 검색어 $search_str = trim($s[$i]); if ($search_str == "") continue; // 인기검색어 //$sql = " insert into $g4[popular_table] set bo_table='$bo_table', mb_id='$member[mb_id]', pp_word = '$search_str', pp_date = '$g4[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]' "; $sql = " insert into $g4[popular_table] set pp_word = '$search_str', pp_date = '$g4[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]', bo_table='$bo_table', mb_id = '$member[mb_id]', sfl = '$search_field' "; sql_query($sql, FALSE); $str .= $op1; $str .= "("; $op2 = ""; for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...) $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; // 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) ? ' and ' : ' or '; $op1 = " $search_operator "; } $str .= " ) "; } if ($not_comment) $str .= " and wr_is_comment = '0' "; if(!empty($_GET['a'])){ echo $str; } 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; $mb_id = trim($mb_id); $fields = trim($fields); if (empty($mb_id)) return Array(); if (empty($fields)) $fields = '*'; if ($fields == '*' && !empty($g4['member_info'][$mb_id]['mb_id'])) { $return = $g4['member_info'][$mb_id]; } else { $return = sql_fetch(" select $fields from $g4[member_table] where mb_id = '$mb_id' "); if ($fields == '*') $g4['member_info'][$mb_id] = $return; } if (isset($return['mb_point'])) $g4['member_info'][$mb_id]['mb_point'] = $return['mb_point']; return $return; } // 날짜, 조회수의 경우 높은 순서대로 보여져야 하므로 $flag 를 추가// $flag : asc 낮은 순서 , desc 높은 순서// 제목별로 컬럼 정렬하는 QUERY STRINGfunction 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 "); } 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_replace("/\'/", "", $name); $name = preg_replace("/\"/", """, $name); $title_name = $name; if ($mb_id) { $tmp_name = "<span class='member'>$name</span>"; if ($config['cf_use_member_icon']) { $mb_dir = substr($mb_id,0,2); $icon_file = "$g4[path]/data/member/$mb_dir/$mb_id.gif"; //if (file_exists($icon_file) && is_file($icon_file)) { if (file_exists($icon_file)) { //$size = getimagesize($icon_file); //$width = $size[0]; //$height = $size[1]; $width = $config['cf_member_icon_width']; $height = $config['cf_member_icon_height']; $tmp_name = "<img src='$icon_file' width='$width' height='$height' align='absmiddle' border='0'>"; if ($config['cf_use_member_icon'] == 2) // 회원아이콘+이름 $tmp_name = $tmp_name . " <span class='member'>$name</span>"; } } $title_mb_id = "[$mb_id]"; } else { $tmp_name = "<span class='guest'>$name</span>"; $title_mb_id = "[비회원]"; } return "<a href=\"javascript:;\" onClick=\"showSideView(this, '$mb_id', '$name', '$email', '$homepage');\" title=\"{$title_mb_id}{$title_name}\">$tmp_name</a>";} // 파일을 보이게 하는 링크 (이미지, 플래쉬, 동영상)function view_file_link($file, $width, $height, $content=""){ global $config, $board; global $g4; static $ids; if (!$file) return; $ids++; // 파일의 폭이 게시판설정의 이미지폭 보다 크다면 게시판설정 폭으로 맞추고 비율에 따라 높이를 계산 if ($width > $board[bo_image_width] && $board[bo_image_width]) { $rate = $board[bo_image_width] / $width; $width = $board[bo_image_width]; $height = (int)($height * $rate); } // 폭이 있는 경우 폭과 높이의 속성을 주고, 없으면 자동 계산되도록 코드를 만들지 않는다. if ($width) $attr = " width='$width' height='$height' "; else $attr = ""; if (preg_match("/\.($config[cf_image_extension])$/i", $file)) // 이미지에 속성을 주지 않는 이유는 이미지 클릭시 원본 이미지를 보여주기 위한것임 // 게시판설정 이미지보다 크다면 스킨의 자바스크립트에서 이미지를 줄여준다 return "<div style=\"overflow:hidden; width:{$width}px\"><img src='$g4[path]/data/file/$board[bo_table]/".urlencode($file)."' name='target_resize_image[]' onclick='image_window(this);' style='cursor:pointer;' title='$content'></div>"; else if (preg_match("/\.($config[cf_flash_extension])$/i", $file)) //return "<embed src='$g4[path]/data/file/$board[bo_table]/$file' $attr></embed>"; return "<script>doc_write(flash_movie('$g4[path]/data/file/$board[bo_table]/$file', '_g4_{$ids}', '$width', '$height', 'transparent'));</script>"; //============================================================================================= // 동영상 파일에 악성코드를 심는 경우를 방지하기 위해 경로를 노출하지 않음 //--------------------------------------------------------------------------------------------- /* else if (preg_match("/\.($config[cf_movie_extension])$/i", $file)) //return "<embed src='$g4[path]/data/file/$board[bo_table]/$file' $attr></embed>"; return "<script>doc_write(obj_movie('$g4[path]/data/file/$board[bo_table]/$file', '_g4_{$ids}', '$width', '$height'));</script>"; */ //=============================================================================================} // view_file_link() 함수에서 넘겨진 이미지를 보이게 합니다.// {img:0} ... {img:n} 과 같은 형식function view_image($view, $number, $attribute){ if ($view['file'][$number]['view']) return preg_replace("/>$/", " $attribute>", $view['file'][$number]['view']); else //return "{".$number."번 이미지 없음}"; return "";} /*// {link:0} ... {link:n} 과 같은 형식function view_link($view, $number, $attribute){ global $config; if ($view[link][$number][link]) { if (!preg_match("/target/i", $attribute)) $attribute .= " target='$config[cf_link_target]'"; return "<a href='{$view[link][$number][href]}' $attribute>{$view[link][$number][link]}</a>"; } else return "{".$number."번 링크 없음}";}*/ // 한글 한글자(2byte, 유니코드 3byte)는 길이 2, 공란.영숫자.특수문자는 길이 1// 유니코드는 http://g4uni.winnwe.net/bbs/board.php?bo_table=g4uni_faq&wr_id=7 의 Mr.Learn님의 글을 참고하였습니다.function cut_str($str, $len, $suffix="…"){ global $g4; $s = substr($str, 0, $len); $cnt = 0; for ($i=0; $i<strlen($s); $i++) if (ord($s[$i]) > 127) $cnt++; if (strtoupper($g4['charset']) == 'UTF-8') $s = substr($s, 0, $len - ($cnt % 3)); else $s = substr($s, 0, $len - ($cnt % 2)); if (strlen($s) >= strlen($str)) $suffix = ""; return $s . $suffix;} // TEXT 형식으로 변환function get_text($str, $html=0){ /* 3.22 막음 (HTML 체크 줄바꿈시 출력 오류때문) $source[] = "/ /"; $target[] = " "; */ // 3.31 // TEXT 출력일 경우 & 등의 코드를 정상으로 출력해 주기 위함 if ($html == 0) { $str = html_symbol($str); } $source[] = "/</"; $target[] = "<"; $source[] = "/>/"; $target[] = ">"; //$source[] = "/\"/"; //$target[] = """; $source[] = "/\'/"; $target[] = "'"; //$source[] = "/}/"; $target[] = "}"; if ($html) { $source[] = "/\n/"; $target[] = "<br/>"; } return preg_replace($source, $target, $str);} /*// HTML 특수문자 변환 htmlspecialcharsfunction hsc($str){ $trans = array("\"" => """, "'" => "'", "<"=>"<", ">"=>">"); $str = strtr($str, $trans); return $str;}*/ // 3.31// HTML SYMBOL 변환// & · 등을 정상으로 출력function html_symbol($str){ return preg_replace("/\&([a-z0-9]{1,20}|\#[0-9]{0,3});/i", "&\\1;", $str);} /***************************************************************************** SQL 관련 함수 모음***************************************************************************/ // DB 연결function sql_connect($host, $user, $pass){ global $g4; if (strtolower($g4['charset']) == 'utf-8') @mysql_query(" set names utf8 "); else if (strtolower($g4['charset']) == 'euc-kr') @mysql_query(" set names euckr "); return @mysql_connect($host, $user, $pass);} // DB 선택function sql_select_db($db, $connect){ global $g4; if (strtolower($g4['charset']) == 'utf-8') @mysql_query(" set names utf8 "); else if (strtolower($g4['charset']) == 'euc-kr') @mysql_query(" set names euckr "); return @mysql_select_db($db, $connect);} // mysql_query 와 mysql_error 를 한꺼번에 처리function sql_query($sql, $error=TRUE){ if ($error) $result = @mysql_query($sql) or die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : $_SERVER[PHP_SELF]"); else $result = @mysql_query($sql); return $result;} // 쿼리를 실행한 후 결과값에서 한행을 얻는다.function sql_fetch($sql, $error=TRUE){ $result = sql_query($sql, $error); //$row = @sql_fetch_array($result) or die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : $_SERVER[PHP_SELF]"); $row = sql_fetch_array($result); return $row;} // 결과값에서 한행 연관배열(이름으로)로 얻는다.function sql_fetch_array($result){ $row = @mysql_fetch_assoc($result); return $row;} // $result에 대한 메모리(memory)에 있는 내용을 모두 제거한다.// sql_free_result()는 결과로부터 얻은 질의 값이 커서 많은 메모리를 사용할 염려가 있을 때 사용된다.// 단, 결과 값은 스크립트(script) 실행부가 종료되면서 메모리에서 자동적으로 지워진다.function sql_free_result($result){ return mysql_free_result($result);} function sql_password($value){ // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes mysql_query( 'set old_passwords=1'); $row = sql_fetch(" select password('$value') as pass "); return $row[pass];} // PHPMyAdmin 참고function get_table_define($table, $crlf="\n"){ // For MySQL < 3.23.20 $schema_create .= 'CREATE TABLE ' . $table . ' (' . $crlf; $sql = 'SHOW FIELDS FROM ' . $table; $result = sql_query($sql); while ($row = sql_fetch_array($result)) { $schema_create .= ' ' . $row['Field'] . ' ' . $row['Type']; if (isset($row['Default']) && $row['Default'] != '') { $schema_create .= ' DEFAULT \'' . $row['Default'] . '\''; } if ($row['Null'] != 'YES') { $schema_create .= ' NOT NULL'; } if ($row['Extra'] != '') { $schema_create .= ' ' . $row['Extra']; } $schema_create .= ',' . $crlf; } // end while sql_free_result($result); $schema_create = preg_replace('/,' . $crlf . '$/', '', $schema_create); $sql = 'SHOW KEYS FROM ' . $table; $result = sql_query($sql); while ($row = sql_fetch_array($result)) { $kname = $row['Key_name']; $comment = (isset($row['Comment'])) ? $row['Comment'] : ''; $sub_part = (isset($row['Sub_part'])) ? $row['Sub_part'] : ''; if ($kname != 'PRIMARY' && $row['Non_unique'] == 0) { $kname = "UNIQUE|$kname"; } if ($comment == 'FULLTEXT') { $kname = 'FULLTEXT|$kname'; } if (!isset($index[$kname])) { $index[$kname] = array(); } if ($sub_part > 1) { $index[$kname][] = $row['Column_name'] . '(' . $sub_part . ')'; } else { $index[$kname][] = $row['Column_name']; } } // end while sql_free_result($result); while (list($x, $columns) = @each($index)) { $schema_create .= ',' . $crlf; if ($x == 'PRIMARY') {
답변 1개 / 댓글 1개
10년 전
소스가 자동으로 바뀐다.. 라는 것이 무슨 말씀이신가요?
답변에 대한 댓글 1개
10년 전
답변을 작성하려면 로그인이 필요합니다.
글을 작성하면요.태그들이 사라지거나 추가되거나 하더라구요.
홈페이지 게시판에 글작성시에
html 모드에서 작성할 경우 게시판의 에디터가 자동적으로 코드 오류를 잡아주는 것 처럼 설정이 되어있습니다.
그래서 의도한 코드가 다른 태그들(p, span 등)로 둘러싸여져서 정상적으로 작동이 되지 않습니다.
홈페이지 관리하는 업체에 문의하셔서 가능하면
게시판의 에디터가 자동적으로 코드 오류를 잡아주는 것 처럼 설정이 된 것을 없애주시면 좋겠습니다.