분류없음2010/01/29 14:05
자바스크립트 escape()를 PHP로 받기

Q&A 보다보니 가-끔 올라오는 주제인듯 싶어서 슬쩍 써둡니다.
알아두기

우 선 분명히 해야할 점은, 자바스크립트 자체에서 escape()와 unescape() 는 사용이 배제되는, 권장하지 않는 함수입니다. 자바스크립트 1.5부터는 encodeURI(), decodeURI() 함수의 사용을 권장하며, ECMA 스크립트(자바스크립트의 표준안입니다) 리비전 3부터 이쪽을 사용하게 되어있습니다. 브라우저에서는 넷스케이프 6, IE 5.5, 모질라(언제부터인지 조사 안함. 1.5에서는 잘 됩니다) 이상에서 잘 지원됩니다. encodeURI(), decodeURI()는 PHP의 rawurlencode(), rawurldecode()와 완벽하게 호환됩니다.


escape()의 작동 원리

escape() 는 영숫자 및 * @ - _ + . /를 제외한 모든 문자를 별도의 방법으로 처리합니다. ASCII 코드의 문자는 %xx 형태로 변경하며, 그 외의 문자는 %uxxxx로 나타나는 유니코드로 처리합니다. (반면 encodeURI()는 제외 문자 이외는 전부 %xx 형태로 변환합니다)


escape() 문자열 받기, PHP js_unescape() 함수

이 함수를 사용하려면, ctype 모듈(기본값으로 들어갑니다), 그리고 이후 변환을 위한 iconv 모듈이 필요합니다. 자바스크립트 escape()로 만들어진 문자열이 아닐 경우(% 변환 오류시) 반환값은 boolean FALSE입니다.


js_unescape() 소스

function js_unescape($src) {
    $len = strlen($src);
    $dst = array();

    for ($i = 0; $i < $len; $i++) {
        if ($src{$i} == '%') {
            if (isset($src{$i+5}) && $src{$i+1} == 'u' &&
                    ctype_xdigit($src{$i+2} . $src{$i+3} . $src{$i+4} .  $src{$i+5})) {
                $dst[] = chr(hexdec($src{$i+2} . $src{$i+3}));
                $dst[] = chr(hexdec($src{$i+4} . $src{$i+5}));
                $i += 5;
            } elseif (isset($src{$i+2}) && ctype_xdigit($src{$i+1} . $src{$i+2})) {
                $dst[] = chr(0);
                $dst[] = chr(hexdec($src{$i+1} . $src{$i+2}));
                $i += 2;
            } else {
                return FALSE;
            }
        } elseif ($src{$i} >= 0x20 && $src{$i} <= 0x7E) {
            $dst[] = chr(0);
            $dst[] = $src{$i};
        } else {
            return FALSE;
        }
    }

    return implode('', $dst);
}


js_unescape() 함수 사용법

이 함수가 반환하는 문자열은 유니코드이므로, 문자열을 받으려면 다음과 같은식으로 사용을 해야합니다. UTF-8 부분을 원하는 인코딩으로 바꾸면 됩니다. (예: EUC-KR)

$unescaped_string = js_unescape($escaped_string);
$original_string  = iconv('ISO-10646-UCS-2', 'UTF-8', $unescaped_string);


소스 이해하기

전체를 설명하진 않습니다. 이해를 돕기 위한 간단한 설명일 뿐입니다. 어려운 소스도 아니니 나머지 부분은 자력으로 연구하십시오.

$src{$i}

이 는 문자열에서 한 문자를 가져오는 방법입니다. C에서는 문자열을 문자의 집합을 나타내는 포인터로 다루기 때문에 자주 쓰이지만, PHP로 시작한 분은 처음볼지도 모르겠습니다. $src = "ABCDEFG"라고 할 경우, $src{0}는 'A'를, $src{5}는 'F'를 나타내는 방식입니다.

$dst[] = chr(0);

이는 유니코드(UCS-2)의 인코딩 방식으로 인해 들어가는 부분입니다. UCS-2인코딩은 다른 인코딩과는 달리, 영숫자 등도 2바이트를 차지하게 되어있습니다. 즉, 'A'의 코드값이 0x41이 아닌, 0x0041입니다. 이를 채워넣기 위함입니다.


끝맺음

마 지막으로 강조하지만, 자바스크립트에서 인코드할때는 encodeURI(), decodeURI()를 우선적으로 고려해보시기 바랍니다. 여담으로, 문자열을 포인터로 다룰 수 없었던게 매우 귀찮았다는게 만들면서 든 생각이였습니다 -ㅅ- 혹시 오류라던지가 발생하면 알아서 고치십시오. 이 소스에 대한 모든 권리와 의무는 포기합니다.

[출처] 자바스크립트 escape()를 PHP로 받기|작성자 훌박


원글) http://www.bluegate.kr/?document_srl=117493

저작자 표시 비영리 변경 금지
Posted by Tommy Lymm
분류없음2010/01/29 13:32
- 용도 : codeigniter에서 oracle과 mysql을 동시에 사용하는 방법입니다.

- 환경 : apmsetup 6, oracle 10g

###### 오라클 설치 ############
http://codeigniter-kr.org/tip/view/341/page/1

###### apmsetup 에 오라클 연동 #######
php.ini에서 다음 2개 주석해제후 apm 재시작
extension=php_oci8.dll
extension=php_oracle.dll

##### codeigniter > database.php 설정 ########
 
01.$active_group = "mysql";
02.$active_record = TRUE;
03. 
04.$db['mysql']['hostname'] = "localhost";
05.$db['mysql']['username'] = "root";
06.$db['mysql']['password'] = "apmsetup";
07.$db['mysql']['database'] = "cidb";
08.$db['mysql']['dbdriver'] = "mysql";
09.$db['mysql']['dbprefix'] = "";
10.$db['mysql']['pconnect'] = TRUE;
11.$db['mysql']['db_debug'] = TRUE;
12.$db['mysql']['cache_on'] = FALSE;
13.$db['mysql']['cachedir'] = "";
14.$db['mysql']['char_set'] = "utf8";
15.$db['mysql']['dbcollat'] = "utf8_general_ci";
16. 
17. 
18.$dbhost = "localhost";    //IP of my host database
19.$dbport = "1521";    //Oracle port
20.$dbname= "ORCL";    //My database Name
21. 
22.$dbConnString = "
23. (DESCRIPTION =
24. (ADDRESS_LIST =
25.   (ADDRESS = (PROTOCOL = TCP)(HOST = ".$dbhost.")(PORT = ".$dbport."))
26. 
27. (CONNECT_DATA =
28.     (SID = ORCL)
29.  (SERVICE_NAME = ".$dbname.")
30. ))";
31. 
32.$db['oracle']['hostname'] = $dbConnString;
33.$db['oracle']['username'] = "combort";   
34.$db['oracle']['password'] = "1234";  
35.$db['oracle']['database'] = "";
36.$db['oracle']['dbdriver'] = "oci8";  
37.$db['oracle']['dbprefix'] = "";
38.$db['oracle']['pconnect'] = TRUE;
39.$db['oracle']['db_debug'] = TRUE;
40.$db['oracle']['cache_on'] = FALSE;
41.$db['oracle']['cachedir'] = "";
42.$db['oracle']['char_set'] = "utf8";
43.$db['oracle']['dbcollat'] = "utf8_general_ci";

##### codeigniter > 컨트롤 사용예제 ########

 

01.<?php
02. 
03.class Welcome extends Controller {
04. 
05.    function Welcome()
06.    {
07.        parent::Controller();  
08.        $this->load->dbforge();
09. 
10.        $this->DB1 = $this->load->database('mysql', TRUE);
11.        $this->DB2 = $this->load->database('oracle', TRUE);
12.    }
13.     
14.    function index()
15.    {
16.          echo "mysql or oracle Test";
17.    }
18. 
19.    function mysql_select()
20.    {
21.        $query = $this->DB1->query("select * from board");
22.        foreach ($query->result_array() as $row) {
23. 
24.            echo $row['title'];
25. 
26.        }
27. 
28.        echo "출력";
29.    }
30. 
31. 
32.    function mysql_insert()
33.    {
34.          $this->DB1->query("insert into board(title, memo) values('3','test')");
35.    }
36. 
37. 
38.    function oracle_select()
39.    {
40.        $query = $this->DB2->query("select C_NAME from customer");
41.        foreach ($query->result_array() as $row) {
42. 
43.            echo $row['C_NAME'];
44. 
45.        }
46. 
47.        echo "출력";
48.    }
49. 
50. 
51.    function oracle_insert()
52.    {
53.          $this->DB2->query("insert into customer(C_NO, C_NAME, C_ADDR, C_PHONE, C_DIST) values('3','test','test','1234','11')");
54.    }
55. 
56.}

※ 참고 : ci에서 제공하는 데이터베이스 forge, util은 100% 구현테스트를 못해보았습니다.


첨부파일에 : 1.7.2 기준으로 테스트한 전체 소스 예제 참조하시면 됩니다.

위내용은 Codeigniter 한국사요자포럼의 내용입니다.
원글) http://codeigniter-kr.org/source/view/332/page/1/q/oracle%20+%20mysql


저작자 표시 비영리 변경 금지
Posted by Tommy Lymm
우분투2010/01/27 00:04
로컬호스트 접속 연결
GRANT ALL PRIVILEGES ON * .* TO '아이디'@'localhost' IDENTIFIED BY '패스워드' WITH GRANT OPTION;

원격접속
GRANT ALL PRIVILEGES ON * .* TO '아이디'@'%' IDENTIFIED BY '패스워드' WITH GRANT OPTION;


저작자 표시 비영리 변경 금지

'우분투' 카테고리의 다른 글

MySQL 계정추가  (0) 2010/01/27
우분투 NFS 설치  (0) 2010/01/26
우분투 삼바 설치 & 설정  (0) 2010/01/19
우분투 + Lighttpd + PHP5(FastCGI) + Mysql + Sqlite 설치  (0) 2010/01/19
우분투  (0) 2010/01/19
Posted by Tommy Lymm
우분투2010/01/26 16:59
서버설치
apt-get install nfs-kernel-server nfs-common

공유위치 설정
vi /etc/export

/var/www        ***.***.***.***(rw,no_root_squash,async)


클라이언트
apt-get install nfs-common

vi /etc/fstab

xxx.xxx.xxx.xxx:/var/www  /var/www        nfs     bg,soft,rw      0       0


저작자 표시 비영리 변경 금지

'우분투' 카테고리의 다른 글

MySQL 계정추가  (0) 2010/01/27
우분투 NFS 설치  (0) 2010/01/26
우분투 삼바 설치 & 설정  (0) 2010/01/19
우분투 + Lighttpd + PHP5(FastCGI) + Mysql + Sqlite 설치  (0) 2010/01/19
우분투  (0) 2010/01/19
Posted by Tommy Lymm
분류없음2010/01/26 10:43
TCP/IP (Transmission Control Protocol/Internet Protocol)는 컴퓨터간에 통신을 할 수 있도록 만든 하나의 규약이다.


protocol   [próutəkɔːl, -kɑ̀l, -kòul] [US]   [-kɔl] [UK]
  • n.
    • U (외교상의) 의전, 의례, 의식;C [the P~] (프랑스 외무부의) 의전국
    • 원안;조약안(條約案);의정서(議定書);조서(調書)
    • (국가 간의) 협안;(협정·조약의) 첨부서
    • (로마 교황의 교칙(敎勅) 등의) 정식문(定式文)
    • 프로토콜 《컴퓨터 상호간의 대화에 필요한 통신 규약》
    • 【의학】 프로토콜 《과학적 연구·환자 치료를 실행하기 위한 계획》;《주로 미》 실험 계획안[기록]
    • 【철학】 프로토콜 명제(=Ṡ stàtement[sèntence])
  • vt.vi.
    • (~ed;~·ing~led;~·ling) 의정서[조서, 초안]를 작성하다



우리가 사용하는 인터넷은 이러한 TCP/IP에 기반하고 있다. TCP/IP가 인터넷의 기반 프로토콜로 자리잡은 이유는 하드웨어, 운영체제, 접속 매체와 관계없이 동작할 수 있는 개방형 구조때문이다.

TCP/IP 계층

응용계층       : WWW,FTP,텔넷,SMTP와 같은 네트워크 프로그램으로 구성
전송계층       : 각 시스템을 연결하고 TCP 프로토콜을 이용하여 데이터 전송
인터넷계층    : IP 프로토콜을 이용하여 데이터 정의 및 경로 배정
물리계층       : 실제 네트워크를 접근할 수 있도록 하는 물리적인 부분



저작자 표시 비영리 변경 금지
Posted by Tommy Lymm
TAG TCP/IP
우분투2010/01/19 17:24

apt-get install samba smbfs

vi /etc/samba/smb.conf

[global]
server string = xxxx-dev
map to guest = Bad User
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 100
dns proxy = no
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
# valid users = aaaa, bbbb, cccc

workgroup = XXXX
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
hosts allow = 000.000.000.
dos charset = CP949
display charset = UTF8
unix charset = UTF8
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBF=8192
guest ok = no

[homes]
comment = %S Directories
writable = yes
browseable = no
valid users = %S

[XXXX]
comment = XXXX Directories
path = /home/xxxx
writable = yes
valid users = aaaa, bbbb, cccc

'우분투' 카테고리의 다른 글

MySQL 계정추가  (0) 2010/01/27
우분투 NFS 설치  (0) 2010/01/26
우분투 삼바 설치 & 설정  (0) 2010/01/19
우분투 + Lighttpd + PHP5(FastCGI) + Mysql + Sqlite 설치  (0) 2010/01/19
우분투  (0) 2010/01/19
Posted by Tommy Lymm
우분투2010/01/19 17:03

Ubuntu 9.10 기준

[ Lighttpd]

apt-get install lighttpd lighttpd-doc

[Mysql5]

apt-get install mysql-common mysql-server mysql-client

[PHP5 FastCGI]

apt-get install php5-common php5-cgi php5-mysql php5-sqlite libsqlite0

[SQLite]

apt-get install sqlite

[설정변경 및 확인사항]

vi /etc/php5/cli/php.ini

[sqlite]
sqlite.assoc_case = 0

vi /etc/lighttpd/lighttpd.conf

server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_compress",
"mod_fastcgi", #추가
# "mod_rewrite",

#마지막 라인에 추가.

fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php.socket",
"max-procs" => 5,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "1000"
),
)))

sqlite3를 테스트 해보고 싶었으나, php5-sqlite3 가 install 되지 않고, 다른방법으로는 설정하는법을 잘 몰라서..

성공하신분 계시면 알려주세요 ^^;

sqlite 로 만든 파일에서

attempt to write a readonly database 오류 또는

unable to open database file 의 오류를 발생하면...

파일 쓰기 권한 또는 웹계정으로 권한을 바꿔주면 사용가능함.

'우분투' 카테고리의 다른 글

MySQL 계정추가  (0) 2010/01/27
우분투 NFS 설치  (0) 2010/01/26
우분투 삼바 설치 & 설정  (0) 2010/01/19
우분투 + Lighttpd + PHP5(FastCGI) + Mysql + Sqlite 설치  (0) 2010/01/19
우분투  (0) 2010/01/19
Posted by Tommy Lymm
우분투2010/01/19 15:02

sdf

btn_go.gif

이미지 파일 업로드.

'우분투' 카테고리의 다른 글

MySQL 계정추가  (0) 2010/01/27
우분투 NFS 설치  (0) 2010/01/26
우분투 삼바 설치 & 설정  (0) 2010/01/19
우분투 + Lighttpd + PHP5(FastCGI) + Mysql + Sqlite 설치  (0) 2010/01/19
우분투  (0) 2010/01/19
Posted by Tommy Lymm
분류없음2010/01/19 14:49

또다시.. 오랜만에...

Zoundry Raven을 설치하고..

Posted by Tommy Lymm
분류없음2010/01/19 14:40
테스트

Posted by Tommy Lymm
분류없음2010/01/19 14:29
bar_02

입력테스트

Posted by Tommy Lymm