반응형
출처 https://chongmoa.com:45183/sql/514
1.문서저장형식(php) : UTF8
2.MYSQL 테이블형식 : UTF8
3.FLEX : UTF8
1.문서저장형식(php) : ANSI
2.MYSQL : UTF8
3.mysql_query("set names utf8"); 후 INSERT시 한글 안 깨짐.
4.mysql_query("set names utf8"); 이든 euc-kr이든 안하고 넣음 깨짐.
이상적인 형태 :
flex : utf8,
mysql:utf8,
php : utf8
현재 쓰고 있는 형태 :
flex : utf8
mysql:utf8
php:ansi
mysql_query("set names euckr");
한글 insert전
iconv('utf-8', 'euc-kr',$str) 해서 저장 하고
빼올 때도 iconv('euc-kr', 'utf-8', $str)로 flex로 던져줌
utf-8 일때 변경 및 새로 해야 할 것.
flex : utf8
mysql : utf8
php : ansi
mysql_query("set names utf8");
mysql : utf8
php : ansi
mysql_query("set names utf8");
utf-8 일때 DB 이전후 깨질때 함수의 경우(sql_query라 할때 상단 부분에 @mysql_query("set names utf8", $connect_db);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function sql_query( $sql , $error = '' ) { $connect_db = sql_connect(DB_HOST, DB_USER, DB_PASS) or die ( 'MySQL Connect Error!!!' ); $select_db = sql_select_db(DB_NAME, $connect_db ) or die ( 'MySQL DB Error!!!' ); @mysql_query( "set names utf8" , $connect_db ); // 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.*where.*`?information_schema`?.*#i" , "select 1" , $sql ); //@mysql_query("set names euckr"); if ( $error ) : $result = @mysql_query( $sql , $connect_db ) or die ( "<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : {$_SERVER['PHP_SELF']}" ); else : $result = @mysql_query( $sql , $connect_db ); endif ; return $result ; } |
euc-kr 일때 변경 및 새로 해야 할 것.
flex : euckr
mysql : euckr
php : ansi
mysql_query("set names euckr");
mysql : euckr
php : ansi
mysql_query("set names euckr");
euc-kr 일때 DB 이전후 깨질때 함수의 경우(sql_query라 할때 상단 부분에 @mysql_query("set names euckr", $connect_db);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function sql_query( $sql , $error = '' ) { $connect_db = sql_connect(DB_HOST, DB_USER, DB_PASS) or die ( 'MySQL Connect Error!!!' ); $select_db = sql_select_db(DB_NAME, $connect_db ) or die ( 'MySQL DB Error!!!' ); @mysql_query( "set names euckr" , $connect_db ); // 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.*where.*`?information_schema`?.*#i" , "select 1" , $sql ); //@mysql_query("set names euckr"); if ( $error ) : $result = @mysql_query( $sql , $connect_db ) or die ( "<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : {$_SERVER['PHP_SELF']}" ); else : $result = @mysql_query( $sql , $connect_db ); endif ; return $result ; } |
반응형