그누보드5 $sql
본문
그누보드보면 다
$sql = "select * from ~~~~";
$result = sql_query($sql);
$row = sql_fetch($result);
막 이렇게 사용하던데
저렇게 사용하려면 따로 함수를 만들어서 사용해야할거같은데
저렇게 사용할때 그 함수들은 도대체 어디있나요?
초기폴더 common.php 에도 없고 config.php 에도 없고
lib/common.lib.php 에도 없고요
저 함수를 그대로 가져와서 사용하고싶은데 도대체 어디있는거죠?
답변 4
커다란 상자라고 생각 하세요
이해안가시나?흠,,
global $g5;
$g5=1;
echo $g5[0];
결과값 1
-----------------------------------------------------------
global $g5;
$g5[0]=1;
echo $g5[0];
결과값 1
-----------------------------------------------------------
이해 안되나요?
흠,,,,,
$sql = "select * from ~~~~";
질문할때 아까쓰신거죠?
여기보면 * from table이름이 들어가자나요
여기서 table 이름을
$g5['point_table'] 으로 넣어서 사용할수잇어요
그래서 아래에 global $g5 정의해서 sql_connect 박에 있는 $g5 정보를 가져올수있는거죠
이해 안가시면 어쩌나 ,,
function sql_connect($host, $user, $pass)
{
global $g5;
return @mysql_connect($host, $user, $pass);
}
common.lib.php
안에 서 SQL 관련 함수 모음 검색하세요
/*************************************************************************
**
** SQL 관련 함수 모음
**
*************************************************************************/
// DB 연결
function sql_connect($host, $user, $pass)
{
global $g5;
return @mysql_connect($host, $user, $pass);
}
// DB 선택
function sql_select_db($db, $connect)
{
global $g5;
return @mysql_select_db($db, $connect);
}
// mysql_query 와 mysql_error 를 한꺼번에 처리
// mysql connect resource 지정 - 명랑폐인님 제안
function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR)
{
global $g5;
// Blind SQL Injection 취약점 해결
$sql = trim($sql);
// union의 사용을 허락하지 않습니다.
//$sql = preg_replace("#^select.*from.*union.*#i", "select 1", $sql);
$sql = preg_replace("#^select.*from.*[\s\(]+union[\s\)]+.*#i ", "select 1", $sql);
// `information_schema` DB로의 접근을 허락하지 않습니다.
$sql = preg_replace("#^select.*from.*where.*`?information_schema`?.*#i", "select 1", $sql);
if ($error)
$result = @mysql_query($sql, $g5['connect_db']) or die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : {$_SERVER['SCRIPT_NAME']}");
else
$result = @mysql_query($sql, $g5['connect_db']);
return $result;
}
// 쿼리를 실행한 후 결과값에서 한행을 얻는다.
function sql_fetch($sql, $error=G5_DISPLAY_SQL_ERROR)
{
$result = sql_query($sql, $error);
//$row = @sql_fetch_array($result) or die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : $_SERVER['SCRIPT_NAME']");
$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
$row = sql_fetch(" select password('$value') as pass ");
return $row['pass'];
}
// PHPMyAdmin 참고
function get_table_define($table, $crlf="\n")
{
global $g5;
// 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') {
$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
$schema_create .= $crlf . ') ENGINE=MyISAM DEFAULT CHARSET=utf8';
return $schema_create;
} // end of the 'PMA_getTableDef()' function
// 리퍼러 체크
function referer_check($url='')
{
/*
// 제대로 체크를 하지 못하여 주석 처리함
global $g5;
if (!$url)
$url = G5_URL;
if (!preg_match("/^http['s']?:\/\/".$_SERVER['HTTP_HOST']."/", $_SERVER['HTTP_REFERER']))
alert("제대로 된 접근이 아닌것 같습니다.", $url);
*/
}
// 한글 요일
function get_yoil($date, $full=0)
{
$arr_yoil = array ('일', '월', '화', '수', '목', '금', '토');
$yoil = date("w", strtotime($date));
$str = $arr_yoil[$yoil];
if ($full) {
$str .= '요일';
}
return $str;
}
// 날짜를 select 박스 형식으로 얻는다
function date_select($date, $name='')
{
global $g5;
$s = '';
if (substr($date, 0, 4) == "0000") {
$date = G5_TIME_YMDHIS;
}
preg_match("/([0-9]{4})-([0-9]{2})-([0-9]{2})/", $date, $m);
// 년
$s .= "<select name='{$name}_y'>";
for ($i=$m['0']-3; $i<=$m['0']+3; $i++) {
$s .= "<option value='$i'";
if ($i == $m['0']) {
$s .= " selected";
}
$s .= ">$i";
}
$s .= "</select>년 \n";
// 월
$s .= "<select name='{$name}_m'>";
for ($i=1; $i<=12; $i++) {
$s .= "<option value='$i'";
if ($i == $m['2']) {
$s .= " selected";
}
$s .= ">$i";
}
$s .= "</select>월 \n";
// 일
$s .= "<select name='{$name}_d'>";
for ($i=1; $i<=31; $i++) {
$s .= "<option value='$i'";
if ($i == $m['3']) {
$s .= " selected";
}
$s .= ">$i";
}
$s .= "</select>일 \n";
return $s;
}
// 시간을 select 박스 형식으로 얻는다
// 1.04.00
// 경매에 시간 설정이 가능하게 되면서 추가함
function time_select($time, $name="")
{
preg_match("/([0-9]{2}):([0-9]{2}):([0-9]{2})/", $time, $m);
// 시
$s .= "<select name='{$name}_h'>";
for ($i=0; $i<=23; $i++) {
$s .= "<option value='$i'";
if ($i == $m['0']) {
$s .= " selected";
}
$s .= ">$i";
}
$s .= "</select>시 \n";
// 분
$s .= "<select name='{$name}_i'>";
for ($i=0; $i<=59; $i++) {
$s .= "<option value='$i'";
if ($i == $m['2']) {
$s .= " selected";
}
$s .= ">$i";
}
$s .= "</select>분 \n";
// 초
$s .= "<select name='{$name}_s'>";
for ($i=0; $i<=59; $i++) {
$s .= "<option value='$i'";
if ($i == $m['3']) {
$s .= " selected";
}
$s .= ">$i";
}
$s .= "</select>초 \n";
return $s;
}
// DEMO 라는 파일이 있으면 데모 화면으로 인식함
function check_demo()
{
global $is_admin;
if ($is_admin != 'super' && file_exists(G5_PATH.'/DEMO'))
alert('데모 화면에서는 하실(보실) 수 없는 작업입니다.');
}
// 문자열이 한글, 영문, 숫자, 특수문자로 구성되어 있는지 검사
function check_string($str, $options)
{
global $g5;
$s = '';
for($i=0;$i<strlen($str);$i++) {
$c = $str[$i];
$oc = ord($c);
// 한글
if ($oc >= 0xA0 && $oc <= 0xFF) {
if ($options & G5_HANGUL) {
$s .= $c . $str[$i+1] . $str[$i+2];
}
$i+=2;
}
// 숫자
else if ($oc >= 0x30 && $oc <= 0x39) {
if ($options & G5_NUMERIC) {
$s .= $c;
}
}
// 영대문자
else if ($oc >= 0x41 && $oc <= 0x5A) {
if (($options & G5_ALPHABETIC) || ($options & G5_ALPHAUPPER)) {
$s .= $c;
}
}
// 영소문자
else if ($oc >= 0x61 && $oc <= 0x7A) {
if (($options & G5_ALPHABETIC) || ($options & G5_ALPHALOWER)) {
$s .= $c;
}
}
// 공백
else if ($oc == 0x20) {
if ($options & G5_SPACE) {
$s .= $c;
}
}
else {
if ($options & G5_SPECIAL) {
$s .= $c;
}
}
}
// 넘어온 값과 비교하여 같으면 참, 틀리면 거짓
return ($str == $s);
}
// 한글(2bytes)에서 마지막 글자가 1byte로 끝나는 경우
// 출력시 깨지는 현상이 발생하므로 마지막 완전하지 않은 글자(1byte)를 하나 없앰
function cut_hangul_last($hangul)
{
global $g5;
// 한글이 반쪽나면 ?로 표시되는 현상을 막음
$cnt = 0;
for($i=0;$i<strlen($hangul);$i++) {
// 한글만 센다
if (ord($hangul[$i]) >= 0xA0) {
$cnt++;
}
}
return $hangul;
}
// 테이블에서 INDEX(키) 사용여부 검사
function explain($sql)
{
if (preg_match("/^(select)/i", trim($sql))) {
$q = "explain $sql";
echo $q;
$row = sql_fetch($q);
if (!$row['key']) $row['key'] = "NULL";
echo " <font color=blue>(type={$row['type']} , key={$row['key']})</font>";
}
}
// 악성태그 변환
function bad_tag_convert($code)
{
global $view;
global $member, $is_admin;
if ($is_admin && $member['mb_id'] != $view['mb_id']) {
//$code = preg_replace_callback("#(\<(embed|object)[^\>]*)\>(\<\/(embed|object)\>)?#i",
// embed 또는 object 태그를 막지 않는 경우 필터링이 되도록 수정
$code = preg_replace_callback("#(\<(embed|object)[^\>]*)\>?(\<\/(embed|object)\>)?#i",
create_function('$matches', 'return "<div class=\"embedx\">보안문제로 인하여 관리자 아이디로는 embed 또는 object 태그를 볼 수 없습니다. 확인하시려면 관리권한이 없는 다른 아이디로 접속하세요.</div>";'),
$code);
}
return preg_replace("/\<([\/]?)(script|iframe|form)([^\>]*)\>?/i", "<$1$2$3>", $code);
}
// 토큰 생성
function _token()
{
return md5(uniqid(rand(), true));
}
// 불법접근을 막도록 토큰을 생성하면서 토큰값을 리턴
function get_token()
{
$token = md5(uniqid(rand(), true));
set_session('ss_token', $token);
return $token;
}
// POST로 넘어온 토큰과 세션에 저장된 토큰 비교
function check_token()
{
set_session('ss_token', '');
return true;
}
// 문자열에 utf8 문자가 들어 있는지 검사하는 함수
// 코드 : http://in2.php.net/manual/en/function.mb-check-encoding.php#95289
function is_utf8($str)
{
$len = strlen($str);
for($i = 0; $i < $len; $i++) {
$c = ord($str[$i]);
if ($c > 128) {
if (($c > 247)) return false;
elseif ($c > 239) $bytes = 4;
elseif ($c > 223) $bytes = 3;
elseif ($c > 191) $bytes = 2;
else return false;
if (($i + $bytes) > $len) return false;
while ($bytes > 1) {
$i++;
$b = ord($str[$i]);
if ($b < 128 || $b > 191) return false;
$bytes--;
}
}
}
return true;
}
// UTF-8 문자열 자르기
// 출처 : https://www.google.co.kr/search?q=utf8_strcut&aq=f&oq=utf8_strcut&aqs=chrome.0.57j0l3.826j0&sourceid=chrome&ie=UTF-8
function utf8_strcut( $str, $size, $suffix='...' )
{
$substr = substr( $str, 0, $size * 2 );
$multi_size = preg_match_all( '/[\x80-\xff]/', $substr, $multi_chars );
if ( $multi_size > 0 )
$size = $size + intval( $multi_size / 3 ) - 1;
if ( strlen( $str ) > $size ) {
$str = substr( $str, 0, $size );
$str = preg_replace( '/(([\x80-\xff]{3})*?)([\x80-\xff]{0,2})$/', '$1', $str );
$str .= $suffix;
}
return $str;
}
이걸 가지고 여러가지 연동 프로그램이 개발 가능한거죠