[CodeIgniter] 폼 검증하기[CodeIgniter] 폼 검증하기

Posted at 2019. 12. 17. 18:36 | Posted in PHP/CodeIgniter




■ 형식 검토



http://www.ciboard.co.kr/user_guide/kr/libraries/form_validation.html


규칙

파라미터

설명

required

NO

 · 검사 대상이 비어있으면 FALSE를 리턴한다.

matches

YES

 · 검사 대상이 파라미터의 값과 일치하지 않을 때 FALSE를 리턴한다.

is_unique

YES

 · 파라미터에서 테이블 및 필드 이름이 유일하지 않다면 FALSE를 리턴한다.

alpha

NO

 · 검사 대상이 알파벳 이외의 문자를 포함할 때 FALSE를 리턴한다.

alpha_numeric

NO

 · 검사 대상이 알파벳이나 숫자가 아닌 문자를 포함할 때 FALSE를 리턴한다.

alpha_dash

NO

 · 검사 대상이 알파벳, 숫자, 밑줄(...), 대시(...) 이외의 문자를 포함할 때 FALSE를 리턴한다.

numeric

NO

 · 검사 대상이 숫자 이외의 문자를 포함할 때 FALSE를 리턴한다.

integer

NO

 · 검사 대상이 정수 이외의 문자를 포함할 때 FALSE를 리턴한다.

decimal

YES

 · 검사 대상이 소수 이외의 문자를 포함할 때 FALSE를 리턴한다.

is_natural

NO

 · 검사 대상이 자연수 이외의 문자를 포함할 때 FALSE를 리턴한다.

   ( 0, 1, 2, 3, ... 등인지 검사 )

is_natural_no_zero

NO

 · 검사 대상이 1 이상의 자연수 이외의 문자를 포함할 때 FALSE를 리턴한다.

   ( 1, 2, 3 ... 등인지 검사 )

valid_email

NO

 · 검사 대상이 유효한 이메일 주소가 아닐 때 FALSE를 리턴한다.

valid_emails

NO

 · 검사 대상이 콤마( , )로 구분된 이메일 주소일 경우에 사용

 · 유효한 이메일 주소가 아닐 때 FALSE를 리턴한다.

   ( 여러개의 이메일을 한꺼번에 검사 )

valid_ip

NO

 · 검사 대상이 유효한 IP 주소가 아닐 때 FALSE를 리턴한다.

 · IP포맷을 검증하기 위해 "ipv4" 또는 "ipv6"를 구별하는 파라미터를 받을 수 있다.



 codeIgniter/system/language/english/form_validation_lang.php

defined('BASEPATH') OR exit('No direct script access allowed');


$lang['form_validation_required'] = "The {field} field is required.";

$lang['form_validation_isset'] = "The {field} field must have a value.";

$lang['form_validation_valid_email'] = "The {field} field must contain a valid email address.";

$lang['form_validation_valid_emails'] = "The {field} field must contain all valid email addresses.";

$lang['form_validation_valid_url'] = "The {field} field must contain a valid URL.";

$lang['form_validation_valid_ip'] = "The {field} field must contain a valid IP.";

$lang['form_validation_valid_base64'] = "The {field} field must contain a valid Base64 string.";

$lang['form_validation_min_length'] = "The {field} field must be at least {param} characters in length.";

$lang['form_validation_max_length'] = "The {field} field cannot exceed {param} characters in length.";

$lang['form_validation_exact_length'] = "The {field} field must be exactly {param} characters in length.";

$lang['form_validation_alpha'] = "The {field} field may only contain alphabetical characters.";

$lang['form_validation_alpha_numeric'] = "The {field} field may only contain alpha-numeric characters.";

$lang['form_validation_alpha_numeric_spaces'] = "The {field} field may only contain alpha-numeric characters and spaces.";

$lang['form_validation_alpha_dash'] = "The {field} field may only contain alpha-numeric characters, underscores, and dashes.";

$lang['form_validation_numeric'] = "The {field} field must contain only numbers.";

$lang['form_validation_is_numeric'] = "The {field} field must contain only numeric characters.";

$lang['form_validation_integer'] = "The {field} field must contain an integer.";

$lang['form_validation_regex_match'] = "The {field} field is not in the correct format.";

$lang['form_validation_matches'] = "The {field} field does not match the {param} field.";

$lang['form_validation_differs'] = "The {field} field must differ from the {param} field.";

$lang['form_validation_is_unique'] = "The {field} field must contain a unique value.";

$lang['form_validation_is_natural'] = "The {field} field must only contain digits.";

$lang['form_validation_is_natural_no_zero'] = "The {field} field must only contain digits and must be greater than zero.";

$lang['form_validation_decimal'] = "The {field} field must contain a decimal number.";

$lang['form_validation_less_than'] = "The {field} field must contain a number less than {param}.";

$lang['form_validation_less_than_equal_to'] = "The {field} field must contain a number less than or equal to {param}.";

$lang['form_validation_greater_than'] = "The {field} field must contain a number greater than {param}.";

$lang['form_validation_greater_than_equal_to'] = "The {field} field must contain a number greater than or equal to {param}.";

$lang['form_validation_error_message_not_set'] = "Unable to access an error message corresponding to your field name {field}.";

$lang['form_validation_in_list'] = "The {field} field must be one of: {param}.";




■ 입력 길이



규칙 

파라미터

설명

min_length

YES

 · 검사 대상의 길이가 파라미터 값보다 작을 때 FALSE를 리턴한다.

max_length

YES

 · 검사 대상의 길이가 파라미터 값보다 클 때 FALSE를 리턴한다.

exact_length

YES

 · 검사 대상의 길이가 파라미터 값과 다를 때 FALSE를 리턴한다.

greater_than

YES

 · 검사 대상이 지정된 값보다 작거나 숫자가 아닌경우 FALSE를 리턴한다.

less_than

YES

 · 검사 대상이 지정된 값보다 크거나 숫자가 아닌 경우 FALSE를 리턴한다.





■ 폼 검증 예


<?php


      // @details 필드의 앞뒤 공백제거 | 필수 필드 | 5자 이상 | 12자 이하 | 필드에서 XSS 공격에 해당하는 내용 제거

      $this->form_validation->set_rules( "username", "Username", "trim | required | min_length[5] | max_length[12] | xss_clean" ); 


      // @details 필드의 앞뒤 공백 제거 | 필수 필드 | passconf 필드와 매칭되는지 체크 | MD5로 변환

      $this->form_validation->set_rules( "password", "Password", "trim | required | matches[passconf] | md5" );


      // @details 필드의 앞뒤 공백 제거 | 필수 필드 | 이메일 형식이 맞는지 체크

      $this->form_validation->set_rules( "email", "Email", "trim | required | valid_email" );


?>











■ 폼 검증 에러메시지를 한글로 표시하기


 codeIgniter/application/config/config.php

<?php

defined('BASEPATH') OR exit('No direct script access allowed');


      // ~~ 이 하 생 략 ~~


/*

|--------------------------------------------------------------------------

| Default Language

|--------------------------------------------------------------------------

|

| This determines which set of language files should be used. Make sure

| there is an available translation if you intend to use something other

| than english.

|

*/

// $config['language'] = "english";

$config['language'] = "korea";


      // ~~ 이 하 생 략 ~~





 codeIgniter/system/language/korean/form_validation_lang.php

defined('BASEPATH') OR exit('No direct script access allowed');


$lang['form_validation_required'] = "{field} 필드가 필요합니다.";

$lang['form_validation_isset'] = "{field} 필드는 반드시 필요한 값입니다.";

$lang['form_validation_valid_email'] = "{field} 필드는 유효한 이메일 주소를 반드시 포함해야 합니다.";

$lang['form_validation_valid_emails'] = "{field} 필드는 모든 유효한 이메일 주소를 반드시 포함해야 합니다.";

$lang['form_validation_valid_url'] = "{field} 필드는 유효한 URL을 포함해야 합니다.";

$lang['form_validation_valid_ip'] = "{field} 필드는 유효한 IP를 포함해야 합니다.";

$lang['form_validation_valid_base64'] = "{field} field must contain a valid Base64 string.";

$lang['form_validation_min_length'] = "{field} 필드의 길이는 최소한 {param} 개의 문자를 넘어야 합니다.";

$lang['form_validation_max_length'] = "{field} 필드의 길이는 최대 {param} 개의 문자를 넘어서는 안됩니다.";

$lang['form_validation_exact_length'] = "{field} 필드의 길이는 정확히 {param} 개의 문자여야 합니다.";

$lang['form_validation_alpha'] = "{field} 필드는 알파벳 문자만 포함할 수 있습니다.";

$lang['form_validation_alpha_numeric'] = "{field} 필드는 알파벳 문자와 숫자만 포함할 수 있습니다.";

$lang['form_validation_alpha_numeric_spaces'] = "{field} 필드는 알파벳 문자와 숫자, 그리고 공백만 포함할 수 있습니다.";

$lang['form_validation_alpha_dash'] = "{field} 필드는 알파벳 문자와 숫자, 밑줄, 대시만 포함할 수 있습니다.";

$lang['form_validation_numeric'] = "{field} 필드는 반드시 숫자만 포함할 수 있습니다.";

$lang['form_validation_is_numeric'] = "{field} 필드는 반드시 숫자만 포함할 수 있습니다.";

$lang['form_validation_integer'] = "{field} 필드는 반드시 정수만 포함할 수 있습니다.";

$lang['form_validation_regex_match'] = "{field} 필드는 형식이 맞지 않습니다.";

$lang['form_validation_matches'] = "{field} 필드가 {param} 필드와 일치하지 않습니다.";

$lang['form_validation_differs'] = '{field} 필드는 {param} 필드와 값이 달라야만 합니다.';

$lang['form_validation_is_unique'] = "{field} 필드는 고유값을 포함해야 합니다.";

$lang['form_validation_is_natural'] = "{field} 필드는 자연수만 포함할 수 있습니다.";

$lang['form_validation_is_natural_no_zero'] = "{field} 필드는 0을 초과하는 자연수만 포함할 수 있습니다.";

$lang['form_validation_decimal'] = "{field} 필드는 10진수여야 합니다.";

$lang['form_validation_less_than'] = "{field} 필드는 {param} 필드보다 작은 값이어야 합니다.";

$lang['form_validation_less_than_equal_to'] = "{field} 필드는 {param} 필드보다 작거나 같은 값이어야 합니다.";

$lang['form_validation_greater_than'] = "{field} 필드는 {param} 필드보다 큰 숫자여야 합니다.";

$lang['form_validation_greater_than_equal_to'] = "{field} 필드는 {param} 필드보다 크거나 같은 숫자여야 합니다.";

$lang['form_validation_error_message_not_set'] = "{field} 필드는 오류 메세지와 일치하여 사용할 수 없습니다.";

$lang['form_validation_in_list'] = "{field} 필드는 다음중 하나여야 합니다. : {param}";







Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기