정보공간_1

[4기 부산 김솔] Codeigniter 1 본문

IT 놀이터/Elite Member Tech & Talk

[4기 부산 김솔] Codeigniter 1

알 수 없는 사용자 2013. 10. 28. 04:53

안녕하세요. 부산 멤버십 22-1기 김솔입니다.

저는 PHP 기반의 프레임워크인 Codeigniter에 대해 글을 써보려 합니다.

기존에 웹 개발과 PHP에 관심이 있으신 분께서는 글을 읽으시는데 도움이 될 것 같습니다.

 


Codeigniter ?

Codeigniter PHP를 기반으로 하는 프레임워크 입니다. MVC패턴에 기반하여 사용하게끔 설계되어 있으며, 가볍고 빠른 무료 프레임워크입니다.

Codeigniterhttp://ellislab.com/codeigniter 에서 배포 중이며,

Codeigniter의 한국 포럼은 http://codeigniter-kr.org/ 입니다.

보다 자세한 설명은 http://ellislab.com/codeigniter/user-guide/ 을 참고하시면 될 것 같습니다.

 


2.     Codeigniter 의 시작

(웹 서버 설치는 생략하고 시작하겠습니다. 간편하게 APMSETUP을 설치하셔도 됩니다.)

A.     Codeigniter 다운로드

http://ellislab.com/codeigniter 에 접속을 하셔서 우측 상단에 보시면 다운로드 버튼이 보이실 겁니다. 저 버튼을 클릭하시면 프레임워크가 다운로드 됩니다.


B.     Codeigniter 설치

PHP로 개발을 해보신 분께서는 경험을 해보셨겠지만, PHP 웹 서버의 특성상 Source를 지정된 경로에 압축을 잘 풀어놓기만 하면 설치가 됩니다. Codeigniter도 마찬가지로, 다운받은 압축파일을 웹 서버의 root 경로에 풀어놓으면 설치가 끝나게 됩니다.

 이제 설치가 끝났으니 브라우저를 통해 확인해보시면 아래와 같은 화면을 볼 수 있으실 겁니다.


C.   Codeigniter 폴더구조

 Codeigniter를 설치하게 되면 아래와 같은 내용물을 확인하실 수 있습니다.


/index.php 파일과 /system /application 폴더가 실제 프레임워크 사용에 필요합니다. 실제로 Codeigniter를 기반으로 작성된 웹 어플리케이션의 경우 /index.php를 통해 실행되게 됩니다.

-       /system : Codeignite의 프레임워크가 있는 폴더로 개발자가 소스를 수정할 필요가 없는 폴더입니다.(프레임워크 버그를 수정할 경우를 제외하고…) 이후에 버전이 업그레이드 되면 /system 폴더만 교체를 해주면 됩니다.

-   /application : 개발자가 개발하게 될 웹 어플리케이션 코드들이 작성될 폴더입니다.

-   /index.php : Codeigniter의 프레임워크 폴더 경로(/system)와 웹 어플리케이션 경로(/application)와 에러출력여부를 설정할 수 있고, 여러 상수들이 선언됩니다. Codeigniter 프레임워크로 작성된 웹 어플리케이션이 실행될 때 핵심이 되는 파일입니다.

D.      Codeigniter 환경설정 (/index.php)

/index.php 파일에서 설정할 부분은 세가지 입니다.

-       첫 번째로 웹 어플리케이션 상에 에러가 발생했을 때, 화면에 에러메시지를 출력할지, 빈 화면을 출력할지 설정하는 부분입니다. 실제로 개발할 때는 에러메시지를 확인해야 되겠지만, 실제로 서비스를 하게 될 경우 에러메시지를 출력하는 것이 시스템의 취약점이나 구조를 노출하게 되므로 설정을 변경해줄 필요가 있습니다.

위 코드에서 두 번째 인자가 에러출력여부를 설정하는 부분인데요, development, testing, production 이렇게 사용이 가능합니다. development가 에러를 출력하는 설정이고, 나머지가 에러를 출력하지 않는 설정입니다.

-       두 번째로 system 경로를 설정하는 부분입니다. 에러출력여부를 설정하는 부분 밑에 있습니다. ./index.php가 위치한 경로를 기준으로 설정해주시면 되겠습니다. system 폴더의 경로가 변경되었거나, system 폴더 명을 변경할 때, 이 부분의 설정을 변경해주시면 되겠습니다.

-       세 번째로 application 경로를 설정하는 부분입니다. system 과 마찬가지로 /index.php가 위치한 경로를 기준으로 설정해주시면 됩니다. 경로가 변경되었거나 폴더 명이 변경되었을 때, 이 부분의 설정을 변경해주시면 됩니다.

           $application_folder = 'application';


E.      Codeigniter 환경설정 (/application/config/config.php)

-       $config[“base_url”]

웹 서버의 도메인주소를 입력합니다. 이후에 여러 종류의 주소를 가지는 웹 페이지의 경우 이 변수에 설정한 주소로 변경하여 접속되게 해줍니다.

-       $config[“index_page”]

apache 서버에서 .htaccess를 통해 index.php 파일을 숨기거나 다른 이름으로 변경할 경우 이 변수의 값을 변경합니다.

이 변수의 값이 index.php라면 http://localhost/index.php/controller/method 와 같은 형태의 주소로 접속할 수 있고, 이 환경설정변수의 값을 공백으로 바꾸고 .htaccess에서 설정을 하게 되면 http://localhost/controller/method 로 접속 할 수 있게 됩니다.

-       $config['uri_protocol']

Codeigniter의 경우 get방식으로 값을 넘길 경우 /controller/method/name/val/name/val 이거나 /controller/method/val/val 과 같은 세그먼트 형태로 값을 전달하게 됩니다. 반드시 이 방식으로 해야 하는 것이 아니라 이 곳의 설정을 통해 유연하게 어플리케이션에 적용할 수 있습니다.

-       $config['encryption_key']

어플리케이션에서 Codeigniter에서 제공하는 암호화 라이브러리를 사용할 경우 암호화&복호화 과정에서 사용될 키를 설정하는 변수입니다. 이 암호화 키를 설정하지 않을 경우 암호화 라이브러리를 사용할 수 없습니다.

-       $config['global_xss_filtering']

XSS 공격에 대해 프레임워크가 값을 검증하게 됩니다. get, post 등 값들을 필터링 후 개발자의 코드에 넘겨줍니다.

-       $config['csrf_*']

CSRF 공격에 대해 프레임워크가 방어를 해줍니다. 프레임워크를 기반으로 동작하는 모든 post 타입의 동작에 대해 임의의 키값에 대한 검증을 실시 합니다. 이를 통해 사용자가 의도하지 않은 post 타입의 전송에 대해 필터링이 됩니다.

 


F.     Codeigniter 환경설정 (/application/config/database.php)

-       db host 정보와 계정정보를 입력하고, 사용할 드라이버를 지정하면 db를 사용할 수 있습니다.

 

이제 Codeigniter의 환경설정이 어느 정도 되었습니다.

다음 글을 통해 Codeigniter를 통한 개발방법에 대해 설명드리겠습니다.