반응형
반응형
반응형



[펌] http://seongtak-yoon.tistory.com/19



MySQL 5.0과 같이 저버전을 사용하게되면, 요즘 스마트폰에 기본으로 적용된 Emoji 문자때문에 골치 아픈 경우가 많습니다.

MySQL은 기본적으로 UTF-8이 3Byte까지만 지원하기때문에 4Byte로 구성된 Emoji와 같은 문자가 저장되면 빈 값으로 저장되거나 ?? 등으로 저장됩니다.

이를 방지하기 위해서 (정확이는 utf8mb4 타입을 적용하기 전까지 임시방편으로 ..) 저장되지 않도록 애플리케이션단에서 제거할 필요가 있습니다.


# planes 1-3

# planes 4-15

# plane 16

preg_replace("/\xF0[\x90-\xBF][\x80-\xBF]{2} | [\xF1-\xF3][\x80-\xBF]{3} | \xF4[\x80-\x8F][\x80-\xBF]{2}/", "", $string);



참고된 테이블 구성 그대로 정규식으로 조합하여 4Byte UTF-8 문자를 찾아내어 ""(빈값)으로 replace합니다.


4Byte UTF-8의 first Byte는 F0~F4로 구성되어 있습니다.

 - http://docs.oracle.com/cd/E24693_01/server.11203/e10729/appunicode.htm#CACHBDGH   여기를 참고해보시면  

 - 이 정보는 1~3Byte와 중복되지 않는 값으로 일종의 Key값(?)으로 생각하면 될것 같네요.



💞💞허허허💞💞 -> 허허허가 됩니다.

⛄허허 -> ⛄허허가 됩니다. 

이 문자는 3Byte로 구성된 UTF-8로 없어지지 않는 것이 맞고, 저버전 MySQL도 문제없이 처리가능합니다.

- http://apps.timwhitlock.info/unicode/inspect?s=%E2%9B%84



참고 사이트


- 특정 문자 구성내용 보기 

http://apps.timwhitlock.info/unicode/inspect?s=%F0%9F%92%9E


- UTF-8 구성표

http://www.utf8-chartable.de/unicode-utf8-table.pl


- 도움되는 사이트.

http://stackoverflow.com/questions/16496554/can-php-detect-4-byte-encoded-utf8-chars


- getEmoji

http://getemoji.com/



반응형

'프로그래밍 > PHP' 카테고리의 다른 글

php 서버 바로 띄우기.  (0) 2020.06.03
세션 관리. session id 가 계속 갱신되는 문제.  (0) 2016.03.10
[error] date_default_timezone_set()  (0) 2012.12.11
short_open_tag 설정.  (0) 2012.08.07
파일 업로드.  (0) 2012.07.11
반응형


$host="localhost";

$user_name="";

$db_password="";

$db_name="";


$dbcon = mysql_connect($host,$user_name,$db_password) or message(mysql_error());

mysql_select_db($db_name,$dbcon) or message(mysql_error());


$result = mysql_query("SHOW TABLE STATUS", $dbcon);

$total_size = 0;


while($dbData=mysql_fetch_array($result)){

        $total_size += $dbData["Data_length"]+$dbData["Index_length"];

}

mysql_close($dbcon);


printf("%0.2f MB \n",$total_size / (1024*1024));




참조 : http://www.xpressengine.com/phpClass/20386043

반응형

'Database > Mysql' 카테고리의 다른 글

사용자 추가  (0) 2013.09.04
루트 비밀번호 설정, 변경.  (1) 2013.09.04
외래키 설정 방법.  (0) 2012.04.10
[jdbc] connection 연결시 캐릭터셋 설정.  (0) 2012.02.29
port 지정하여 접속하기.  (0) 2012.02.09
반응형

 

# 다운로드.

http://www.phpmyadmin.net/home_page/downloads.php

 

# wget 을 이용해서 다운로드 방법.
wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/3.5.4/phpMyAdmin-3.5.4-all-languages.tar.gz

 

# 압축 해제.
tar xvfz phpMyAdmin-3.5.4-all-languages.tar.gz

 

# 디렉토리 이름 변경.
mv phpMyAdmin-3.5.4-all-languages phpMyAdmin

 

# config 파일 수정.
cd phpMyAdmin

vi config.sample.inc.php
 - $cfg['blowfish_secret'] = '쿠키명'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

 

mv config.sample.inc.php config.inc.php

 

반응형

'OS > Linux' 카테고리의 다른 글

탭 자동완성 설정.  (1) 2013.11.14
[Cent OS] mysql 설치.  (0) 2013.08.16
32bit / 64bit 인지 확인.  (1) 2012.11.26
root 로 ssh 로그인 막기.  (0) 2012.02.13
[쉘프로그래밍] 파일명 또는 확장자 일괄 변경  (1) 2011.12.22
반응형


## php 설치

$ wget http://kr2.php.net/get/php-5.3.6.tar.gz/from/kr.php.net/mirror
$ cd php-5.3.6
$ ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --with-config-file-path=/usr/local/httpd/conf --with-mysql=/usr/local/mysql --enable-sockets --with-openssl=/usr --with-dbm --enable-mbstring


$ make && make install


# httpd 설정.
$ cp php.ini-production /usr/local/php/lib/php.ini
$ cp php.ini-production /usr/local/httpd/conf/php.ini


# apache 구동.
$ /usr/local/httpd/bin/apachectl start

반응형

'OS > Linux' 카테고리의 다른 글

grep 후 결과 파일을 vi 로 열기.  (0) 2011.12.02
설치형 웹하드 : ajaxplorer  (0) 2011.06.15
[APM] 2. apache 설치.  (2) 2011.06.15
[APM] 1. mysql 설치  (0) 2011.06.15
awk 기본  (0) 2011.05.20
반응형
$conn = OCILogon("", "");
    $lob = OCINewDescriptor($conn, OCI_D_LOB);
    $stmt=OCIParse($conn,"insert into UPLOAD_TEST (COLUMN1, COLUMN2) values (1, EMPTY_BLOB()) returning COLUMN2 into :BLOBDATA");

    OCIBindByName($stmt, ':BLOBDATA', $lob, -1, OCI_B_BLOB);
    OCIExecute($stmt, OCI_DEFAULT);

    if($lob->savefile($_FILES[lob_upload][tmp_name]))
    {
        OCICommit($conn);
        //echo "Blob successfully uploaded\n";
    }
    else
    {
        //echo "Couldn't upload Blob\n";
        OCIRollback($conn);
    }

    OCIFreeDesc($lob);
    OCIFreeStatement($stmt);
    OCILogoff($conn);


반응형

'프로그래밍 > PHP' 카테고리의 다른 글

short_open_tag 설정.  (0) 2012.08.07
파일 업로드.  (0) 2012.07.11
한글 사용할때 헤더  (0) 2009.02.11
한글 자르기  (0) 2009.02.11
페이지 구하기  (0) 2009.02.11
반응형
@header("Expires: 0");
@header("Cache-Control: no-cache, must-revalidate");
@header("Pragma: no-cache");
header("Content-type: text/html; charset=euc-kr");
반응형

'프로그래밍 > PHP' 카테고리의 다른 글

파일 업로드.  (0) 2012.07.11
[Oracle] BLOB insert 하기  (0) 2009.02.11
한글 자르기  (0) 2009.02.11
페이지 구하기  (0) 2009.02.11
파일 크기 구하기(단위별)  (0) 2009.02.11
반응형

// 한글 길이 자르기.
function han_substr($string, $limit_length)
{
    $string_length = strlen( $string );
    if( $limit_length > $string_length ) return $string;
    else
    {
        $string = substr( $string, 0, $limit_length );
        $han_char = 0;
        for($i = $limit_length - 1; $i >= 0; $i--)
        {
            $lastword = ord(substr($string, $i, 1)); //뒤에서 한글자씩 떼어서
            if(127 > $lastword) break; //정상적인 영문자,숫자라면..stop
            else $han_char++; //한글 or 특수문자라면..
        }
 
        //짝이 안맞으므로 한글자 더 작게 자른다.
        if($han_char%2 == 1) $string = substr( $string, 0, $limit_length-1 );
        return ($string."...");
    }
}
반응형

'프로그래밍 > PHP' 카테고리의 다른 글

[Oracle] BLOB insert 하기  (0) 2009.02.11
한글 사용할때 헤더  (0) 2009.02.11
페이지 구하기  (0) 2009.02.11
파일 크기 구하기(단위별)  (0) 2009.02.11
form 에서 method get 안될때..  (0) 2009.02.11
반응형
<style>
.pageNumStyleTB TD {padding-bottom:3px;}
.pageNumStyle_Sel , .pageNumStyle_Out , .pageNumStyle_Over {width:30px; font:bold 9pt Verdana; text-align:center;}
.pageNumStyle_Sel {color:#CC6600;}
.pageNumStyle_Out {cursor:pointer; background-color:#FFFFFF; color:#0A87D1;}
.pageNumStyle_Over {cursor:pointer; background-color:#F5F2E7; color:#0A87D1; text-decoration:underline;}
.pageInfo1 {text-align:left; background-color:#f2f2f2; font-size:12px; padding:5 5 5 40px}
</style>




// 현재 페이지.
        if(!$c_page) $c_page = 1;
 
        // 한번에 20개의 list 출력.
        $view_list = 20;
        $total_row = 총 row 의 수.
        $start_limit = ($c_page - 1) * $view_list;
        $limit_qry = "LIMIT $start_limit, $view_list";

<table border="0" cellpadding="0" cellspacing="0" class="pageNumStyleTB" align="center" style="margin:20px 2px 3px 2px;">
<tr>

<?
    // 총 페이지 번호 수 - 올림함수.
    $total_page = ceil($total_row / $view_list);
 
    // c_page, view_list(한페이지에 20개씩)
    // 한번에 5개의 페이지번호  출력.
    $view_page = 5;
 
    // 출력할 시작 페이지번호  ~ 끝 페이지번호 .
    $print_start_page = (ceil($c_page / $view_page) -1) * $view_page + 1;
    $print_end_page = ceil($c_page / $view_page) * $view_page;
    if($print_end_page > $total_page) $print_end_page = $total_page;
 
    // 페이지 링클 걸때 필요한 form 파라미터.
    $link_parameter = "search_mode=$search_mode&search_word=$search_word&id=$id";
 
    // 이전 5페이지 - 화살표.
    if($print_start_page > 1)
    {
        $pre_end_page = $print_start_page - 1;
        echo "<td width=\"20\" align=\"center\" style=\"font:8pt 돋움;padding-top:2px;color:#999999;\"><a href='$PHP_SELF?c_page=$pre_end_page&$link_parameter'>◀</a></td>";
    }
// 5페이지 출력.
    for($i = $print_start_page; $i <= $print_end_page; $i++)
    {
        if($i == $c_page) echo "<td class=\"pageNumStyle_Sel\">$i</td>";
        else echo "<td =\"location.href='$PHP_SELF?c_page=$i&$link_parameter'\" =\"this.className = 'pageNumStyle_Over'\" =\"this.className = 'pageNumStyle_Out'\" class=\"pageNumStyle_Out\">$i</td>";
 
        if($i != $print_end_page) echo "<td width=\"1\"><img src=\"http://icons.com.ne.kr/trandot.gif\" height=\"15\" width=\"1\" style=\"background-color:#CCCCCC;\"></td>";
    }
 
    // 이후 5페이지 - 화살표.
    if($total_page > $print_end_page) echo "<td width=\"20\" align=\"center\" style=\"font:8pt 돋움;padding-top:2px;color:#999999;\"><a href='$PHP_SELF?c_page=$i&$link_parameter'>▶</a></td>";

?>
</tr>
</table>

반응형

'프로그래밍 > PHP' 카테고리의 다른 글

한글 사용할때 헤더  (0) 2009.02.11
한글 자르기  (0) 2009.02.11
파일 크기 구하기(단위별)  (0) 2009.02.11
form 에서 method get 안될때..  (0) 2009.02.11
require 와 include 의 차이점  (0) 2009.02.06
반응형
// 파일 사이즈 구하는 함수.
function human_file_size($size)
{
    if($size == 0) return("0 MB");
    $filesizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
    return round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $filesizename[$i];
}
반응형

'프로그래밍 > PHP' 카테고리의 다른 글

한글 자르기  (0) 2009.02.11
페이지 구하기  (0) 2009.02.11
form 에서 method get 안될때..  (0) 2009.02.11
require 와 include 의 차이점  (0) 2009.02.06
정규표현식  (0) 2009.02.06
반응형

서버에서 세팅시 값을 받을수 있도록 해 주는것이 있습니다.

대부분 웹 세팅시 변수를 넘기게 두지는 않습니다.

보안때문이거든요

php설치시 요즘은 기본으로 변수를 넘길수 없도록 설정이 되어 있습니다.

 

php.ini파일에서 보면

 register_globals = off 로 설정 되어 있는것을 보실 수 있을겁니다.

이것을 on으로 변경하시고 아파치를 다시 실행 하시면 바로 해결은 됩니다.

하지만 호스팅이나 설정을 변경 하실 수 없다면 아래와 같이 한번 해보시기 바랍니다.

 

<?

phpinfo();
?>

 

저장 test.php 이렇게 저장을 하시고 웹페이지를 호출해 보시면

내용중에 register_globals 이 OFF 로 되어 있다면 기본적으로 form 으로 넘겼을때 그냥 받을수가 없습니다.

 

그래서 위의 함수를 이용해서 변수를 받아서 처리를 하는거죠

그냥 편하게 하시고 싶다면

form 에서 method를 post로 넘기면  $변수 = $_POST["변수명"]

url등 get으로 넘기면 $변수 = $_GET["변수명"] 으로 받으시면 됩니다.

 

다 귀찮다고 생각할땐

 

$변수 = $_REQUEST["변수명"];

echo $변수;

 

10개의 변수를 보내시면 10개를 모두 받으셔야 합니다.

 $변수 = $_REQUEST["변수명"];

 .

 .

 .

$변수 = $_REQUEST["변수명"];

 여기서 request["변수명"]에서 변수명은 이전페이지에서 보낸 변수 이름 입니다.

반응형

'프로그래밍 > PHP' 카테고리의 다른 글

페이지 구하기  (0) 2009.02.11
파일 크기 구하기(단위별)  (0) 2009.02.11
require 와 include 의 차이점  (0) 2009.02.06
정규표현식  (0) 2009.02.06
어제 날짜 구하기  (0) 2009.02.06

+ Recent posts