127)
- $cnt++;
- $s = substr($s, 0, $len - ($cnt % 2));
- if (strlen($s) >= strlen($str))
- $suffix = "";
- return $s . $suffix;
- }
-}
-
-
-// TEXT 형식으로 변환
-function gb_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[] = "
";
- }
-
- return preg_replace($source, $target, $str);
-}
-
-
-/*
-// HTML 특수문자 변환 htmlspecialchars
-function gb_hsc($str)
-{
- $trans = array("\"" => """, "'" => "'", "<"=>"<", ">"=>">");
- $str = strtr($str, $trans);
- return $str;
-}
-*/
-
-// 3.31
-// HTML SYMBOL 변환
-// & · 등을 정상으로 출력
-function gb_html_symbol($str)
-{
- return preg_replace("/\&([a-z0-9]{1,20}|\#[0-9]{0,3});/i", "&\\1;", $str);
-}
-
-
-/*************************************************************************
-**
-** SQL 관련 함수 모음
-**
-*************************************************************************/
-
-// DB 연결
-function gb_sql_connect($host, $user, $pass)
-{
- global $g4;
-
- return @mysql_connect($host, $user, $pass);
-}
-
-
-// DB 선택
-function gb_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 gb_sql_query($sql, $error=TRUE)
-{
- // Blind SQL Injection 취약점 해결
- $sql = trim($sql);
- // union의 사용을 허락하지 않습니다.
- $sql = preg_replace("#^select.*from.*[^\'\"]union[^\'\"].*#i", "select 1", $sql);
- // `information_schema` DB로의 접근을 허락하지 않습니다.
- $sql = preg_replace("#^select.*from.*[^\'\"]`?information_schema`?[^\'\"].*#i", "select 1", $sql);
-
- if ($error)
- $result = @mysql_query($sql) or die("$sql
" . mysql_errno() . " : " . mysql_error() . "
error file : $_SERVER[PHP_SELF]");
- else
- $result = @mysql_query($sql);
- return $result;
-}
-
-
-// 쿼리를 실행한 후 결과값에서 한행을 얻는다.
-function gb_sql_fetch($sql, $error=TRUE)
-{
- $result = sql_query($sql, $error);
- //$row = @sql_fetch_array($result) or die("
$sql
" . mysql_errno() . " : " . mysql_error() . "
error file : $_SERVER[PHP_SELF]");
- $row = gb_sql_fetch_array($result);
- return $row;
-}
-
-
-// 결과값에서 한행 연관배열(이름으로)로 얻는다.
-function gb_sql_fetch_array($result)
-{
- $row = @mysql_fetch_assoc($result);
- return $row;
-}
-
-
-// $result에 대한 메모리(memory)에 있는 내용을 모두 제거한다.
-// sql_free_result()는 결과로부터 얻은 질의 값이 커서 많은 메모리를 사용할 염려가 있을 때 사용된다.
-// 단, 결과 값은 스크립트(script) 실행부가 종료되면서 메모리에서 자동적으로 지워진다.
-function gb_sql_free_result($result)
-{
- return mysql_free_result($result);
-}
-
-
-function gb_sql_password($value)
-{
- // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
- // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
- $row = gb_sql_fetch(" select password('$value') as pass ");
- return $row[pass];
-}
-
-
-// PHPMyAdmin 참고
-function gb_get_table_define($table, $crlf="\n")
-{
- global $g4;
-
- // For MySQL < 3.23.20
- $schema_create .= 'CREATE TABLE ' . $table . ' (' . $crlf;
-
- $sql = 'SHOW FIELDS FROM ' . $table;
- $result = sql_query($sql);
- while ($row = gb_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 = gb_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') {
- $schema_create .= ' PRIMARY KEY (';
- } else if (substr($x, 0, 6) == 'UNIQUE') {
- $schema_create .= ' UNIQUE ' . substr($x, 7) . ' (';
- } else if (substr($x, 0, 8) == 'FULLTEXT') {
- $schema_create .= ' FULLTEXT ' . substr($x, 9) . ' (';
- } else {
- $schema_create .= ' KEY ' . $x . ' (';
- }
- $schema_create .= implode($columns, ', ') . ')';
- } // end while
-
- if (strtolower($g4['charset']) == "utf-8")
- $schema_create .= $crlf . ') DEFAULT CHARSET=utf8';
- else
- $schema_create .= $crlf . ')';
-
- return $schema_create;
-} // end of the 'PMA_getTableDef()' function
-
-
-// 리퍼러 체크
-function gb_referer_check($url="")
-{
- /*
- // 제대로 체크를 하지 못하여 주석 처리함
- global $g4;
-
- if (!$url)
- $url = $g4[url];
-
- if (!preg_match("/^http[s]?:\/\/".$_SERVER[HTTP_HOST]."/", $_SERVER[HTTP_REFERER]))
- alert("제대로 된 접근이 아닌것 같습니다.", $url);
- */
-}
-
-
-// 한글 요일
-function gb_get_yoil($date, $full=0)
-{
- $arr_yoil = array ("일", "월", "화", "수", "목", "금", "토");
-
- $yoil = date("w", strtotime($date));
- $str = $arr_yoil[$yoil];
- if ($full) {
- $str .= "요일";
- }
- return $str;
-}
-
-
-// 날짜를 select 박스 형식으로 얻는다
-function gb_date_select($date, $name="")
-{
- global $g4;
-
- $s = "";
- if (substr($date, 0, 4) == "0000") {
- $date = $g4[time_ymdhis];
- }
- preg_match("/([0-9]{4})-([0-9]{2})-([0-9]{2})/", $date, $m);
-
- // 년
- $s .= "