CodeIgniter User Guide Version 2.1.0


폼 검증

CodeIgniter는 포괄적인 폼 검증및 데이터 준비 클래스를 제공함으로써 작성하시는 코드의 양을 최소화 하도록 해 줍니다.

주의:  CodeIgniter 1.7.0 이후 에서는 ,이전 버전의 폼검증 클래스와 달라졌습니다. 이전 버전의 클래스도 남겨두었기때문에 작동하는데는 문제가 없으나 새 폼검증 클래스를 사용하실것을 권장합니다.

 

개요 Overview

CodeIgniter 의 폼 검증 설명으로 들어가기전에 먼저 이상적인 시나리오를 만들어봅시다:

  1. 폼이 표시된다.
  2. 내용을 채우고 전송(submit)한다.
  3. 뭔가 적합하지않은것을 전송한다든지, 필수인항목을 빠뜨린다든지 했을경우 , 폼이 다시 표시되면서 관련 에러메세지를 뿌려준다.
  4. 정확하게 전송할때까지 이 과정을 반복한다.

수신측에서의 스크립트는 반드시:

  1. 요구되는 데이터가 모두 들어왔는지 점검한다.
  2. 데이터의 형식이라든지 다른 요구되는 제한사항을 만족하는지 확인한다. 예를들어, 만약 사용자아이디(username)이 전송되었고 반드시 영문자만을 포함해야한다고 제한한다든지, 최소 최대길이를 지정한다든지, 이미 다른사람이 사용하고 있는아이디를 사용할수 없다든지,예약어를 사용할수 없다든지 등의경우가 있을수 있다.
  3. 보안을 위해서 데이터를 가공한다.
  4. 필요하다면 데이터를 전처리 한다(좌우공백제거나 html 인코딩 등)
  5. 데이터베이스 입력에 적합하도록 데이터를 준비한다.

위 프로세스가 그리 복잡하지는 않지만, 일반적으로 대단히많은 소스코드가 필요하고 ,에러코드를 표시하기위해서 다양한 컨트롤 구조를 html 안에 코딩해야한다. 폼검증코드는 쉬운작업인 반면에 통상 그 양이 방대하고 지루한 작업이다.

 

폼검증 튜토리얼 Form Validation Tutorial

아래는 CodeIgniter 의 폼검증을 구현하기 위한 "수작업" 튜토리얼 입니다.

폼검을 위해서는 아래 3가지 요소가 필요합니다:

  1. 폼을 포함한 파일.
  2. 전송이 성공했을때 "성공"메세지를 보여줄 파일.
  3. 전송된 데이터를 받아서 처리할 컨트롤러 함수.

회원가입폼 예제를 통해서 이 세가지를 만들어 봅시다!

폼 The Form

텍스트 편집기를 이용하여 myform.php파일을 만듭니다. 그런다음 아래 코드를 삽입하고 applications/views/ 폴더에 저장합니다:

성공 페이지 The Success Page

텍스트 편집기를 이용하여formsuccess.php파일을 만듭니다. 그런다음 아래 코드를 삽입하고applications/views/ 폴더에 저장합니다:

컨트롤러 The Controller

텍스트 편집기를 이용하여form.php파일을 만듭니다. 그런다음 아래 코드를 삽입하고applications/controllers/폴더에 저장합니다:

해봅세 ! Try it!

브라우저에서 아래와 같은 URL 로 접속합니다(여러분의 환경에 맞는 url 입니다. 아래 그대로가 아니라 ..):

example.com/index.php/form/

폼을 전송(submit) 하면 단순히 폼이 리로드(reload) 되는것을 보실수 있습니다. 왜나하면 아직 검사(validation) 루틴을 작성하지 않았기 때문입니다.

폼 검사 클래스에 어떤 검사코드도 넣지 않았기때문에 결과는 FALSE (boolean false) 를 기본값으로 리턴합니다.검사코드를 성공적으로 통과했을 경우에만 run() 함수는TRUE 를 리턴합니다.

설명 Explanation

위 페이지들로부터 여러가지를 아실수 있을거예요:

(myform.php) 은 몇가지 예외들을 포함한 표준 웹폼(standard web form) 입니다:

  1. 폼은 폼을 여는 태그 대신 폼헬퍼(form helper) 를 사용합니다. 엄밀히말하면, 폼 헬퍼 사용은 꼭 필요하지 않을수 있습니다. 표준 html 을 이용하여 폼을 열수 있으니까요. 그러나, 폼헬퍼를 사용하면 설정(config)파일에 따라서 액션url(action URL)을 자동으로 생성해줍니다. 그렇게 되면 URL 이 변하더라도 쉽게 처리할 수 있겠지요.
  2. 폼의 맨위에 아래와 같은 함수호출이 있는것을 주목하세요 : <?php echo validation_errors(); ?>

    이 함수는 검사(validator)루틴으로 부터 되돌아오는 모든 에러메세지를 리턴합니다. 아무런 메세지가 없다면 빈문자열(empty string)을 리턴합니다.

컨트롤러controller (form.php)는 index()라는 함수를 가지고 있습니다. 이함수는 뷰파일에서 사용할 검사클래스(validation class)를 초기화 하고 폼 헬퍼URL 헬퍼를 로드합니다. 또한 검사루틴을 실행(runs) 합니다. 검사루틴을 성공적으로 패스했는지 여부에 따라서 폼 자신이나 성공 페이지를 보여줍니다.

검사루틴(규칙) 설정 Setting Validation Rules

검사규칙은 원하는 만큼 제한없이 작성하실수 있으며 , 각 규칙들을 순서대로 처리하도록 할수 있습니다. 또한, 검사와 동시에 필드 데이터들을 전처리(pre-process)할수 있습니다. 검사규칙을 설정하기 위해서는set_rules() 함수를 사용합니다:

$this->form_validation->set_rules();

위 함수는 3가지 파라미터를 받습니다:

  1. 필드이름-폼에서 설정한 필드이름과 일치해야합니다.
  2. 위 필드이름에 대한 "사람이 알아보기 쉬운" 이름. 그 이름은 에러메세지에 삽입됩니다. 예를들어, 필드이름이"user" 라면 사람이 알아보기쉬운이름은 "Username" 정도로 하시면 됩니다. 부가설명: 필드이름을 랭귀지파일에 저장하고싶다면, 필드이름변환을 참조하세요.
  3. 폼에 필요한 검사규칙들.


예제를 봐주세요. 컨트롤러 (form.php) 파일에 아래와같이 검사루틴을 초기화 시켜주세요:

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]|is_unique[users.username]');
$this->form_validation->set_rules('password', 'Password', 'required|matches[passconf]');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]');

컨트롤러는 아래와 비슷할것입니다:

자 이제 필드를 공백으로둔 채 폼을 전송해봅시다. 에러메세지가 보여야 합니다. 만약 필드를 모두 채운상태에서 전송한다면 성공페이지가 보여야 합니다.

주의: 지금까지로는 에러가 발생했을경우, 폼에 이미 입력한데이터는 다시 복원되지않습니다. 곧 복원되도록 만들어 봅시다ㅎㅎ.

배열을 이용하여 검사규칙설정하기 Setting Rules Using an Array

여러 검사규칙을 한번에 처리하는걸 좋아한다면, 배열을 사용하세요. 이 방법을 사용할때는 반드시 배열의 키이름을 아래와같이 해야합니다:

$config = array(
               array(
                     'field'   => 'username',
                     'label'   => 'Username',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'password',
                     'label'   => 'Password',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'passconf',
                     'label'   => 'Password Confirmation',
                     'rules'   => 'required'
                  ),   
               array(
                     'field'   => 'email',
                     'label'   => 'Email',
                     'rules'   => 'required'
                  )
            );

$this->form_validation->set_rules($config);

규칙의 순차적 적용 Cascading Rules

규칙을 여러개의 파이프라인처럼 연결해서 같이 적용할수 있습니다. 해볼까요. 아래와같이, 규칙설정함수의 세번째 파라미터를 아래와 같이 바꾸세요:

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'required|matches[passconf]');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');

위코드는 다음의 규칙을 설정합니다:

  1. Username 필드는 5 글자에서 12 글자 사이라야 한다.
  2. Password 필드는 패스워드 확인 필드와 일치해야한다.
  3. Email 필드는 유효한 email 주소라야 한다.

해봅세! 적절하지 않은 데이터를 입력한후 폼을 전송하시면 여러분이 새로 설정한 규칙에 맞는 에러메시지를 뿌릴것입니다. 레퍼런스에는 사용가능한 다양한 규칙들이 있습니다.

데이터 준비 Prepping Data

위에서 사용해본 검사함수에 덧붙여, 여러분은 다양한 방법으로 데이터준비작업을 하실 수 있습니다.예를 들어, 아래와같이 규칙을 설정할 수 있습니다:

$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|matches[passconf]|md5');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

위 예제에서 , 필드의 좌우공백제거(trim), 암호를 MD5 로 변환, 부적합한 데이터를제거하기위해 username 에 "xss_clean" 함수적용시키기등을 수행했습니다.

일반 PHP 함수중에 하나의 파라미터를 받는 함수라면 어떤것이라도 규칙처럼 사용할수 있습니다. 예를들어 htmlspecialchars, trim, MD5, 등입니다.

참고: 일반적으로 검증규칙을 적용시킨후 데이터준비(prep)함수를 사용하게 됩니다. 이때 만약 에러가 발생한다면 원래데이터가 폼에 표시되게 됩니다.

폼 데이터 복원하기 Re-populating the form

지금까지는 에러관련부분 처리에 대해서 이야기해왔습니다.이제는 전송된 데이터를 다시 복원하는것에 대해서 이야기하겠습니다. CodeIgniter 에서는 그 작업을 위해서 여러가지 헬퍼함수를 제공합니다. 여러분이 가장 많이 사용할 함수는 아래함수입니다:

set_value('field name')

myform.php 뷰 파일을 연후 각 필드의value 부분을 set_value() 함수를 사용하여 업데이트합니다 :

set_value() 함수의 파라미터로 필드이름을 넘겨줘야한다는것 잊지마세요!

에러를 발생시키기 위해서 폼을 새로고침한후 전송하세요 . 이제 폼필드의 데이터들은 복원될것입니다.

주의:아래의 함수참조 부분에서 <select> menus, radio button, checkbox 의 데이터를 복원하는 부분을 확인하세요.

중요사항: 필드의 이름에 배열을 사용했다면 , 함수에도 배열형태 그대로를 넘겨줍니다.

예:

<input type="text" name="colors[]" value="<?php echo set_value('colors[]'); ?>" size="50" />

더많은 정보는 아래의 필드이름으로 배열사용하기 에 있습니다.

콜백(처리가 완료되면 자동으로 호출될함수지정)Callbacks: Your own Validation Functions

검증시스템은 콜백을지원합니다. 이를 통해 검증클래스를 어려분의 필요에 따라 확장하는것이 가능합니다. 예를들어, 만약 사용자가 유일한 아이디를 선택했는지를 확인하기위해 데이터베이스 쿼리가 필요하다면, 그 기능을 위한 콜백함수를 만들수 있습니다.예제를 만들어 봅시다.

컨트롤러에서, "username" 규칙을 아래와같이 바꿉니다:

$this->form_validation->set_rules('username', 'Username', 'callback_username_check');

그런후 컨트롤러에 username_check 라는 함수를 추가합니다. 그러면 컨트롤러는 아래예제와 비슷해질것입니다:

폼을 새로고침한후 사용자명에 "test" 라고 입력하고 전송합니다. 필드데이터가 콜백함수에 전달되는것을 확인하실수 있습니다. 콜백함수에서 필요에따라 그 데이터를 처리하시면 되겠죠 .

콜백을 호출하기위해서는 규칙에 있는 함수명을 "callback_" 라는 접두어와 함께 넣어주시면됩니다. 콜백함수에 추가 파라미터를 전달하고 싶다면, 콜백함수 뒤에 대괄호를 추가한후 그안에 넣어주시면 됩니다.예: "callback_foo[bar]" .

여러분은 콜백으로 전달되는 폼 데이터를 처리하거나 리턴할수 있습니다. 콜백함수가 불린(boolean TRUE/FALSE) 외의 어떤 값을 리턴하더라도 원본의 폼데이터가 아니라 새롭게 처리된 데이터라고 가정합니다.

에러메세지 설정 Setting Error Messages

모든 내장 에러메세지는 아래의 언어파일에 있습니다 : language/english/form_validation_lang.php

에러메세지를 설정하기위하여 위 파일을 수정하거나, 아래함수를 이용할 수 있습니다:

$this->form_validation->set_message('rule', 'Error Message');

규칙(rule)이름과 그 규칙과 관련하여 표시하고자하는 에러메세지(Error Message)를 넘겨주시면 됩니다.

에러문자열에서 %s 를 사용하시면, 규칙을 설정할때 썼던 "사람이 알아보기쉬운이름" 으로 대체될것입니다.

위 "callback" 예제에서 에러메세지는 함수이름을 넘겨주어 설정했습니다:

$this->form_validation->set_message('username_check')

언어파일(language file)에 있는 모든 에러메세지는 재정의될수 있습니다.예를들어 , "required" 규칙에 대한 메세지를 바꾸려면 아래와같이합니다 :

$this->form_validation->set_message('required', 'Your custom message here');

필드이름 변환 Translating Field Names

set_rules() 함수에서 사용하였던 "사람이 알아보기 쉬운이름"을 언어파일에 저장하여 필드이름 변환이 적용되도록 하고싶다면 아래와 같이 합니다.:

먼저, "사람이 알아보기쉬운이름(human) " 에 아래의 예제와 같이 lang:이라는 접두어를 붙입니다:

$this->form_validation->set_rules('first_name', 'lang:first_name', 'required');

그런다음, 그 이름을 언어파일의 배열에 저장합니다(접두어는 붙이지 않습니다):

$lang['first_name'] = 'First Name';

참고: 여러분의 언어파일에 저장된 배열 아이템은 CI 에서 자동으로 로드하지않습니다. 컨트롤러에서 아래와같이 로드하셔야 한다는것을 기억하세요:

$this->lang->load('file_name');

언어클래스(Language Class) 에 언어파일에 대해 더 자세한 정보가 있습니다.

에러 구분자 바꾸기 Changing the Error Delimiters

기본적으로 폼 검증 클래스는 에러메세지를 <p> 태그로 감쌉니다. 여러분은 이를 전역적으로 적용되도록 바꿀수도 있고 각각의 메세지에 적용되도록 바꿀수도 있습니다.

  1. 에러구분자를 전역적으로 바꾸기 Changing delimiters Globally

    컨트롤러에서 에러구분자를 전역적으로 바꾸는것은 폼검증 클래스를 로드 한후 아래와 같은 함수호출을 추가하시면 됩니다:

    $this->form_validation->set_error_delimiters('<div class="error">', '</div>');

    이 예제에서는 div 태그를 사용하도록 바꾸었습니다.

  2. 각각의 에러에 적용되도록 구분자 바꾸기 Changing delimiters Individually

    아래 두개의 에러생성함수를 통해서 각각의 에러에 적용되는 구분자를 설정할수 있습니다:

    <?php echo form_error('field name', '<div class="error">', '</div>'); ?>

    Or:

    <?php echo validation_errors('<div class="error">', '</div>'); ?>

에러를 각각 표시하기 Showing Errors Individually

에러메세지를 목록처럼 표시하지않고 각 필드 옆에 표시하려면 form_error() 함수를 사용합니다.

사용해보자구요! 폼을 아래와 같이 바꿉니다:

에러가 없다면 아무것도 표시되지 않습니다.에러가 있다면 메세지가 표시되겠죠 .

중요사항: 폼필드 이름으로 배열을 사용한다면, 함수 파라미터로 넘겨주는 이름도 배열 그대로라야 합니다. 예:

<?php echo form_error('options[size]'); ?>
<input type="text" name="options[size]" value="<?php echo set_value("options[size]"); ?>" size="50" />

폼필드 이름으로 배열 사용하기 섹션에 더 자세한 정보가 있습니다.

 

검사규칙셋을 설정파일에 저장하기 Saving Sets of Validation Rules to a Config File

폼 검증클래스의 장점중 하나는 프로그램에 사용되는 모든 검증규칙을 하나의 설정파일에 저장할수 있다는점 입니다. 이런 규칙들을 그룹으로 묶을 수 있습니다. 이 그룹들은 필요할때 여러분이 직접 로드 할수도 있고 ,일치하는 controller/function 가 호출되었을때 자동으로 로드되게 할수도 있습니다.

규칙들을 저장하는 방법 How to save your rules

먼저 application/config/ 폴더 안에 form_validation.php 파일을 만듧니다.그리고 파일안에 $config 라는 이름의 배열을 만들어 규칙들을 집어넣습니다. 앞서 보여드린것과 같이 , 검증 배열은 아래와 같은 형태를 가집니다:

$config = array(
               array(
                     'field'   => 'username',
                     'label'   => 'Username',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'password',
                     'label'   => 'Password',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'passconf',
                     'label'   => 'Password Confirmation',
                     'rules'   => 'required'
                  ),   
               array(
                     'field'   => 'email',
                     'label'   => 'Email',
                     'rules'   => 'required'
                  )
            );

검증규칙파일은 run() 함수를 호출하면 자동으로 로드되어 적용됩니다.

배열의 이름은 반드시 $config 라야 합니다.

검증규칙 셋 작성 Creating Sets of Rules

검증규칙을 모아서 하나의 셋으로 만들려면 그것들을 하나의 하위배열(sub arrays)로 만들어야합니다. 아래 예제는 두개의 규칙셋을 포함합니다. 하위배열이름인 "signup" 과 "email"은 임시로 대충붙인이름입니다. ㅎㅎ. 여러분은 여러분이 원하시는 다른 이름을 붙이시면되요 :

$config = array(
                 'signup' => array(
                                    array(
                                            'field' => 'username',
                                            'label' => 'Username',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'password',
                                            'label' => 'Password',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'passconf',
                                            'label' => 'PasswordConfirmation',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'email',
                                            'label' => 'Email',
                                            'rules' => 'required'
                                         )
                                    ),
                 'email' => array(
                                    array(
                                            'field' => 'emailaddress',
                                            'label' => 'EmailAddress',
                                            'rules' => 'required|valid_email'
                                         ),
                                    array(
                                            'field' => 'name',
                                            'label' => 'Name',
                                            'rules' => 'required|alpha'
                                         ),
                                    array(
                                            'field' => 'title',
                                            'label' => 'Title',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'message',
                                            'label' => 'MessageBody',
                                            'rules' => 'required'
                                         )
                                    )                          
               );

특정 규칙 그룹 호출하기 Calling a Specific Rule Group

특정규칙그룹을 호출하기위해서는 그룹이름을 run() 함수의 파라미터로 넘겨줍니다 . 예를 들어 ,signup 규칙그룹을 호출하려면 아래와같이 합니다:

if ($this->form_validation->run('signup') == FALSE)
{
   $this->load->view('myform');
}
else
{
   $this->load->view('formsuccess');
}

컨트롤러 함수와 규칙그룹을 연관시키기 Associating a Controller Function with a Rule Group

규칙그룹을 호출할때 좀더 자동화된 방법을 사용할수 있습니다. 컨트롤러의 class/function 이름 대로 규칙셋의 이름을 부여하시면 됩니다. 예를들어,컨트롤러 이름이 Member 이고 함수이름이 signup일때 컨트롤러 클래스는 아래와 같을것입니다:

<?php

class Member extends CI_Controller {

   function signup()
   {      
      $this->load->library('form_validation');
            
      if ($this->form_validation->run() == FALSE)
      {
         $this->load->view('myform');
      }
      else
      {
         $this->load->view('formsuccess');
      }
   }
}
?>

그러면 검사 설정파일에서는 , 규칙그룹을 member/signup라는 이름으로 만듭니다 :

$config = array(
           'member/signup' = array(
                                    array(
                                            'field' => 'username',
                                            'label' => 'Username',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'password',
                                            'label' => 'Password',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'passconf',
                                            'label' => 'PasswordConfirmation',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'email',
                                            'label' => 'Email',
                                            'rules' => 'required'
                                         )
                                    )
               );

규칙그룹이름이 클래스/함수 이름과 완전히 동일하다면 run() 함수만 호출해도 자동으로 적용됩니다.

 

필드이름으로 배열 사용하기 Using Arrays as Field Names

폼 검증 클래스는 필드명으로 배열을 사용할수 있도록 지원합니다. 다음예제를 보시죠:

<input type="text" name="options[]" value="" size="50" />

만약 필드이름으로 배열을 사용하신다면 , 필드명을 요구하는 헬퍼함수에 정확히 동일한 필드명을 전달해야합니다. 또한 검증규칙 필드명도 동일해야합니다.

예를들어, 위 필드에대한 규칙을 설정한다면 아래와 같이 합니다:

$this->form_validation->set_rules('options[]', 'Options', 'required');

혹은 위 필드에 대한 에러메세지를 보여주기위해서는 다음과 같이합니다:

<?php echo form_error('options[]'); ?>

또한 데이터복원에 있어서는 다음과 같이 합니다:

<input type="text" name="options[]" value="<?php echo set_value('options[]'); ?>" size="50" />

필드이름으로 다차원 배열을 사용할수도 있습니다. 예:

<input type="text" name="options[size]" value="" size="50" />

혹은:

<input type="text" name="sports[nba][basketball]" value="" size="50" />

첫번째 예제에서보듯이 여러분은 반드시 헬퍼함수의 파라미터를 배열명과 정확히 일치하도록 해야합니다.:

<?php echo form_error('sports[nba][basketball]'); ?>

여러개의 옵션을 가진 체크박스를 사용한다면 각 옵션뒤의 대괄호[] 는 속이 비어있는채로 두셔야한다는것을 잊지마세요 .그래야만 선택한것들이 모두 POST 배열에 추가되게 됩니다.:

<input type="checkbox" name="options[]" value="red" />
<input type="checkbox" name="options[]" value="blue" />
<input type="checkbox" name="options[]" value="green" />

아래와 같이 다차원배열을 사용하실수도 있습니다:

<input type="checkbox" name="options[color][]" value="red" />
<input type="checkbox" name="options[color][]" value="blue" />
<input type="checkbox" name="options[color][]" value="green" />

헬퍼함수에서도 또한 빈 대괄호를 포함해야겠지요:

<?php echo form_error('options[color][]'); ?>

 

규칙 참조 Rule Reference

다음은 CI에 내장된 규칙목록 입니다:

규칙 파라미터 설명(여기서 문자라는것은 숫자,문자,기호등 모두 포함합니다) 예제
required No 검사대상이 비어있으면 FALSE 를 리턴 합니다.  
matches Yes 검사대상이 파라미터의 값과 일치하지않을때 FALSE 를 리턴 합니다 matches[form_item]
is_unique Yes 파라미터에서 테이블 및 필드이름이 유일하지 않다면 FALSE 를 리턴합니다. is_unique[table.field]
min_length Yes 검사대상의 길이가 파라미터 값보다 작을때 FALSE를 리턴 합니다 min_length[6]
max_length Yes 검사대상의 길이가 파라미터 값보다 클때 FALSE를 리턴 합니다 . max_length[12]
exact_length Yes 검사대상의 길이가 파라미터값과 다를때 FALSE를 리턴 합니다 . exact_length[8]
greater_than Yes 검사대상이 지정된 값보다 작거나 숫자가 아닌 경우 FALSE를리턴 합니다. greater_than[8]
less_than Yes 검사대상이 지정된 값보다 크거나 숫자가 아닌 경우 FALSE를리턴 합니다. less_than[8]
alpha No 검사대상이 알파벳 이외의 문자를 포함할대 FALSE를 리턴 합니다.  
alpha_numeric No 검사대상이 알파벳이나 숫자가 아닌 문자를 포함할때 FALSE를 리턴 합니다.  
alpha_dash No 검사대상이 알파벳,숫자,밑줄(_),대쉬(-) 이외의 문자를 포함할때 FALSE를 리턴 합니다.  
numeric No 검사대상이 숫자이외의 문자를포함할때 FALSE를 리턴 합니다.  
integer No 검사대상이 정수이외의 문자를 포함할때 FALSE를 리턴 합니다.  
decimal Yes 검사대상이 파라미터값과 일치하지 않으면 FALSE를 리턴 합니다.t  
is_natural No 검사대상이 자연수 이외의 문자를 포함할때 FALSE를 리턴 합니다 ( 0, 1, 2, 3, 등 인지 검사).  
is_natural_no_zero No 검사대상이 1 이상의 자연수 이외의 문자를 포함할때 FALSE를 리턴 합니다 (1, 2, 3, 등 인지 검사).  
valid_email No 검사대상이 유효한 Email 주소가 아닐때 FALSE를 리턴 합니다 .  
valid_emails No 검사대상이 콤마(,)로 구분된 Email 주소일 경우에 사용하며 유효한 email 주소가 아닐때 FALSE를 리턴 합니다.  
valid_ip No 검사대상이 유효한 IP주소가 아닐때 FALSE를 리턴 합니다 .  
valid_base64 No 검사대상이 Base64 에 사용되는 문자 이외의 문자를 포함할때 FALSE를 리턴 합니다 .  

참고: 이 규칙들은 별도의 함수로서 호출할 수도 있습니다. 예제:

$this->form_validation->required($string);

참고: PHP 내장함수중 하나의 파라미터를 받는 함수라면 어떤 것도 여기서 사용할수 있습니다.

 

데이터 준비 레퍼런스 Prepping Reference

다음목록은 사용가능한 데이터준비함수들 입니다.:

이름 파라미터 설명
xss_clean No 입력클래스(Input Class) 페이지에 설명된 것처럼 데이터를 XSS 필터링 합니다.
prep_for_form No 폼필드에 표시될수 있도록 특수문자를 변환합니다.
prep_url No URL에 "http://"가 없으면 추가해 줍니다.
strip_image_tags No 이미지 태그를 제거하고 이미지 url 을 추출합니다.
encode_php_tags No PHP 태그를 HTML 엔터티로 변환합니다.

참고: 하나의 파라미터만 받는 PHP 내장함수도 사용하실 수 있습니다 . trim, htmlspecialchars, urldecode, 등.

 

함수 레퍼런스 Function Reference

다음함수들은 컨트롤러에서 사용할 수 있습니다.

$this->form_validation->set_rule();

위에서 설명한대로 검사규칙들을 설정할수 있도록 해줍니다:

$this->form_validation->run();

검사루틴을 실행합니다. 성공하면TRUE 를 실패하면 FALSE를 리턴합니다. 필요할때는 검사규칙 그룹이름을 파라미터로 넘겨줄수 있습니다. 자세한 설명은 검사규칙을 그룹화하여 설정파일에 저장하기 를 참조해주세요 .

$this->form_validation->set_message();

여러분만의 에러메세지를 설정할수 있습니다.위의 에러메세지 설정(Setting Error Messages) 을 참고해 주세요.

 

헬퍼 레퍼런스 Helper Reference

아래 헬퍼 함수들은 폼을 포함하고 있는 뷰 파일에서 사용하실 수 있습니다. 이 함수들은 절차적 함수(객체아님)들 이기 때문에 $this->form_validation를 붙일 필요가 없습니다.

form_error()

함수로 넘겨진 필드명과 관련된 개별 에러메세지를 출력합니다. 예:

<?php echo form_error('username'); ?>

필요하다면 에러 구분자를 설정할수 있습니다.위의 에러구분자 변경(Changing the Error Delimiters) 섹션을 참고하세요.

validation_errors()

모든 에러메세지를 문자열로 출력합니다: 예:

<?php echo validation_errors(); ?>

필요하다면 에러 구분자를 설정할수 있습니다.위의 에러구분자 변경(Changing the Error Delimiters) 섹션을 참고하세요.

set_value()

input 이나 textarea 에 값을 설정합니다.이때 반드시 필드이름을 함수 첫번째 파라미터로 넘겨주어야 합니다. 필요하다면 두번째 파라미터로 기본값을 설정할 수 있습니다. 예:

<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />

위 예제에서는 폼이 처음 로드될때 기본값이 "0" 이 설정되어 보여질 것입니다.

set_select()

<select> 를 사용할때 이 함수는 선택된 아이템을 표시하도록 해 줍니다.첫번째 파라미터는 반드시 select 의 name 을 포함해야 하며, 두번째 파라미터는 각 아이템의 값을 반드시 포함해야 합니다. 그리고 필요하다면 세번째 파라미터를 통해 특정 아이템을 기본값으로 지정할 수 있습니다(불린 TRUE/FALSE 를 사용합니다).

예:

<select name="myselect">
<option value="one" <?php echo set_select('myselect', 'one', TRUE); ?> >One</option>
<option value="two" <?php echo set_select('myselect', 'two'); ?> >Two</option>
<option value="three" <?php echo set_select('myselect', 'three'); ?> >Three</option>
</select>

set_checkbox()

체크박스를 전송될 당시의 상태로 보여지도록 합니다.첫번째 파라미터는 체크박스 이름을 포함해야하며, 두번째 파라미터는 그 값을 반드시 포함해야 합니다. 필요하다면 세번째 파라미터를 통해서 기본값을 설정할 수 있습니다.(불린 TRUE/FALSE 를 사용합니다)

예:

<input type="checkbox" name="mycheck[]" value="1" <?php echo set_checkbox('mycheck[]', '1'); ?> />
<input type="checkbox" name="mycheck[]" value="2" <?php echo set_checkbox('mycheck[]', '2'); ?> />

set_radio()

라디오 버튼을전송될 당시의 상태로 보여지도록 합니다. 이 함수는 위 set_checkbox() 함수와 동일합니다.

<input type="radio" name="myradio" value="1" <?php echo set_radio('myradio', '1', TRUE); ?> />
<input type="radio" name="myradio" value="2" <?php echo set_radio('myradio', '2'); ?> />