본문 바로가기

CSRF 보호 CSRF (Cross Site Request Forgery)CI에서는 크로스 사이트 요청 위조에 대한 보호가 가능합니다.CSRF 보호를 활성화하려면 application/config/config.php 를 열고 다음과 같이 설정합니다.//$config['csrf_protection'] = false; $config['csrf_protection'] = true; 활성화 한 후 view 페이지에서 form_helper 의 form_open() 함수를 사용하면, 폼의 CSRF 보호를위한 hidden 필드가 자동 삽입됩니다. pagination + segment pagination 클래스를 사용하여 간단한 페이징 구현을 하였습니다.$config['base_url']에 지정한 대로 /path/page/no 식으로 링크가 생성되었습니다.페이징을 사용하는, 예를 들어 게시판에 대한 페이징을 구현하고자 할 때 쿼리스트링은 아래와 유사합니다. list.php?page=10&sfl=name&stx=keyword&sort=code&sc=asc 페이지, 검색필드, 검색어, 정렬필드, 정렬방법... 이런것들이 uri 에 포함되게 되는데 세그먼트 방식으로 다시 작성해 보겠습니다. list/page/10/sfl/name/stx/keyword/sort/code/sc/asc 기존 pagination 클래스를 그대로 사용할 경우 페이지 링크에 page/no 뒤의 모든 세그먼트(/sfl~..
pagination 대부분의 게시판에는 < 1 2 3 4 5 6 7 8 9 > 같이 페이징 기능을 추가합니다.CI는 페이징을 간단하게 구현할 수 있는 pagination 클래스를 제공합니다.http://ellislab.com/codeigniter/user-guide/libraries/pagination.html(file : system/libraries/Pagination.php) Controller를 생성하여 다음의 코드를 입력하면 페이징 기능을 확인할 수 있습니다. $this->load->library('pagination'); $config['base_url'] = 'http://example.com/index.php/test/page/'; $config['total_rows'] = 200; $config['per_p..
CodeIgniter Style and Syntax (4/4) 1. 지역에 맞는 텍스트(국가별 언어) 제어 구문에서의 출력되는 모든 문자는 lang 파일에서 language 변수를 사용해야 합니다. INCORRECT: return "Invalid Selection"; CORRECT: return $this->lang->line('invalid_selection'); 2. Private 메소드와 변수 클래스로부터 내부적으로만 접근가능한 메소드와 변수는 밑줄로 시작해야 합니다. convert_text() // public method _convert_text() // private method 3. Short Open Tags 서버에 short_open_tag 가 enable 이 아닐 수도 있으므로 항상 짧은 시작태그(
CodeIgniter Style and Syntax (3/4) 1. 클래스나 파일 이름 클래스나 파일명이 너무 단순하다면 다른 PHP 스크립트와 충돌할 수 있으므로, 고유한 접두어를 붙이는 것이 좋습니다. 개발자의 이름이나 회사의 이름을 접두어로 쓰면 좋습니다. INCORRECT: class Email pi.email.php class Xml ext.xml.php class Import mod.import.php CORRECT: class Pre_email pi.pre_email.php class Pre_xml ext.pre_xml.php class Pre_import mod.pre_import.php 2. 데이터베이스 테이블 이름 추가적으로 작성하는 모든 테이블은 'exp_' 접두어를 사용하고, 그 뒤에 개발자나 회사 이름으로 식별 가능한 접두어를 넣고, 그 다음..
CodeIgniter Style and Syntax (2/4) 1. 주석 달기 일반적으로 코드는 많은 주석을 포함하는 것이 좋습니다. 클래스와 메소드 선언 전의 DocBlock 스타일의 주석은 통합개발환경(IDE)등에서 인식될 수 있습니다. /** * Super Class * * @package Package Name * @subpackage Subpackage * @category Category * @author Author Name * @link http://example.com */ class Super_class { /** * Encodes string for use in XML * * @access public * @param string * @return string */ function xml_encode($str) 코드에 한 줄 주석을 사용할 수 있..
CodeIgniter Style and Syntax (1/4) 다음은 CodeIgniter를 개발할 때 준수한 코딩 규칙의 사용을 설명합니다. 1. File Format 텍스트에디터 사용시 아래 사항에 유의 합니다. - 파일들은 유니코드(UTF-8, no BOM) 인코딩 저장. (UTF-16, UTF-32 와 달리 UTF-8에는 BOM을 사용하지 않습니다.) - 라인 끝은 LF(\n)를 사용해야 합니다. 2. PHP 닫는 태그 PHP 문서에서 닫는 태그(?>)를 사용했을 때 닫는 태그 뒤에 공백 있다면, 빈 페이지나 원치 않는 화면을 출력할 것입니다. 주석으로 파일의 끝을 표시하여, 파일의 경로를 표시하면 파일의 끝 임을 알 수 있으므로 파일의 마지막에 주석을 권장합니다. (PHP 여는 태그(
Environment / Security 1. ENVIRONMENT 상수 환경을 설정은 로깅 및 오류보고 등에 영향을 미칩니다. 기본적으로 CodeIgniter는 index.php 파일 상단에 development에 대한 환경 상수 설정이 제공됩니다. define('ENVIRONMENT', 'development'); // 1. development // 2. testing // 3. production 2. Security CodeIgniter는 악의적인 데이터가 어플리케이션에 전달될 수 가능성을 최소화하기 위하여, 허용하는 URI 문자열이 매우 제한적이며, URI는 다음만을 포함할 수 있습니다. Alpha-numeric text Tilde: ~ Period: . Colon: : Underscore: _ Dash: - Register_glob..