CodeIgniter 4 폼 유효성 검사 및 폼 제출 예시
⚡ 스마트 요약
CodeIgniter 4 폼 유효성 검사는 사용자 입력이 처리되기 전에 유효성을 검사합니다. 폼은 폼 헬퍼를 사용하여 생성되며, 내장된 유효성 검사 라이브러리는 필수, 숫자, 고유성 등의 규칙을 설정하고 유효성 검사에 실패할 경우 오류를 표시하고 고정 필드를 다시 채웁니다.

에서 형성 Code점화기 4
폼은 사용자가 애플리케이션과 상호 작용하고 데이터를 제출할 수 있는 방법을 제공합니다. 예를 들어 웹사이트 방문자가 작성하여 정보를 보낼 수 있는 문의 양식을 사용할 수 있습니다. 수집된 정보는 일반적으로 데이터베이스에 저장되거나 이메일로 전송됩니다.
HTML 양식 구조
다음 코드는 일반적인 HTML 양식의 구조를 보여줍니다.
<form id="frmUsers" name="frmUsers" method="POST" action="create_user.php"> <input type="text" id="user_id" name="user_id"> <input type="password" id="password" name="password"> <input type="submit" value="Submit"> </form>
이리:
- … `<form>`과 `<form>`은 폼의 시작 및 종료 태그입니다. `id`와 `name` 속성은 폼의 이름과 ID를 지정합니다. `method` 속성은 사용할 HTTP 동사(일반적으로 `POST`)를 지정합니다.
- 폼 요소를 지정합니다. name 속성은 백엔드 서버로 전송되어 처리되는 변수 이름입니다.
Code이그나이터 폼 헬퍼
HTML은 이해하고 작성하기 쉽지만, Code이그나이터 훨씬 더 간단하게 만들어줍니다. CodeIgniter에는 HTML 폼을 생성하는 내장 함수가 있습니다. 다음을 살펴보겠습니다. Code폼 헬퍼를 사용하여 폼을 생성하는 Igniter 폼 코드:
<?php echo form_open('create_user.php', ['id' => 'frmUsers']); echo form_label('User Id', 'user_id'); echo form_input(['name' => 'user_id']); echo form_label('Password', 'password'); echo form_input(['type' => 'password', 'name' => 'password']); echo form_submit('btnSubmit', 'Create User'); echo form_close(); ?>
이리:
- `echo form_open('create_user.php', ['id' => 'frmUsers']);`는 폼의 시작 태그를 생성하고, 메서드를 POST로 설정하고, 액션을 설정합니다. URL create_user.php로 이동합니다.
- `echo form_label('User Id', 'user_id');`는 `user_id`라는 이름의 입력 필드에 'User Id'라는 레이블을 생성합니다.
- `echo form_input(['name' => 'user_id']);`는 `user_id`라는 이름의 텍스트 입력 필드를 생성합니다.
- `echo form_submit('btnSubmit', '사용자 생성');`는 '사용자 생성'이라는 레이블이 있는 제출 버튼을 생성합니다.
- echo form_close();는 폼을 닫습니다.
보시다시피, 폼 헬퍼를 사용하면 순수 PHP 코드로 폼을 쉽게 만들 수 있습니다. 폼 헬퍼 메서드에 속성을 전달함으로써 폼에 생성되는 HTML을 사용자 지정할 수 있습니다. 위 코드는 다음과 같은 HTML 폼 코드를 생성합니다.
<form action="http://localhost:3000/index.php/create_user.php" id="frmUsers" method="post" accept-charset="utf-8"> <label for="user_id">User Id</label> <input type="text" name="user_id" value=""/> <label for="password">Password</label> <input type="password" name="password" value=""/> <input type="submit" name="btnSubmit" value="Create User"/> </form>
폼 헬퍼를 사용하는 가장 큰 장점은 HTML 표준을 준수하는 의미론적으로 올바른 코드를 생성한다는 것입니다. 자세한 내용은 공식 문서를 참조하십시오. Code자세한 내용은 Igniter 설명서를 참조하십시오. https://codeigniter.com/user_guide/helpers/form_helper.html.
Code점화기 형태 예시
기본 사항을 다룬 후 Code이그나이터, 이제 우리가 지금까지 진행해 온 튜토리얼 프로젝트로 돌아가 봅시다. CodeIgniter 튜토리얼 시리즈요약하자면, 이 튜토리얼 프로젝트는 연락처 정보를 데이터베이스에 저장하는 연락처 관리 앱을 구축하는 것입니다.
연락처 만들기
이전 튜토리얼에서는 애플리케이션의 라우트와 간단한 뷰를 생성했습니다. application/views/contacts/create.php 파일을 열고 create.php 코드 부분을 다음과 같이 수정하세요.
<div class="column">
<h2 class="title">Create Contact</h2>
<form action="<?= base_url('contacts/store') ?>" method="POST">
<div class="field">
<label class="label">Contact Name</label>
<div class="control">
<input id="name" name="name" class="input" type="text" placeholder="Type the contact name">
</div>
</div>
<div class="field">
<label class="label">Contact Number</label>
<div class="control">
<input id="name" name="name" class="input" type="text" placeholder="Type the contact number">
</div>
</div>
<div class="field">
<label class="label">Email Address</label>
<div class="control">
<input id="email" name="email" class="input" type="email" placeholder="Type the email address">
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button class="button is-link">Save Contact</button>
</div>
</div>
</form>
</div>
참고 : 위 코드는 일반 HTML을 사용하여 폼을 생성합니다. 이제 웹 브라우저에서 폼이 어떻게 보이는지 살펴보겠습니다. 다음 페이지를 로드하세요. URL 웹 브라우저에 입력하세요: http://localhost:3000/contacts/create튜토리얼 프로젝트를 빌드해 오셨다면 다음과 같은 화면이 나타날 것입니다.
폼 유효성 검사 Code이그나이터
폼에서 입력받은 데이터를 처리할 때 유효성 검사는 매우 중요한 역할을 합니다. 예를 들어 사용자가 웹사이트에 가입할 때, 필수 입력 정보와 유효한 이메일 주소를 입력했는지 확인해야 합니다. 날짜 값을 다룰 때는 날짜 범위가 유효한지 확인해야 하므로, 한 달에 32일이 포함된 날짜는 허용하지 않습니다.
검증을 통해 이러한 문제들을 해결할 수 있습니다. Code웹 애플리케이션 작업 시 Igniter 검증은 두 가지 측면에서 이루어집니다.
클라이언트 측 유효성 검사는 일반적으로 HTML을 사용하여 웹 브라우저에서 수행됩니다. Java스크립트 방식입니다. 모든 작업이 클라이언트 측에서 이루어지기 때문에 서버에 데이터를 전송할 필요가 없어 성능이 향상됩니다. 단점은 사용자가 이를 제어할 수 있다는 점입니다. 만약 클라이언트 측에서 처리한다면, 서버 제어에 의존하게 될 것입니다. Java검증 스크립트 및 사용자 비활성화 Java스크립트 유효성 검사에 실패할 것입니다.
서버 측 유효성 검사는 서버에서 수행됩니다. 단점은 사용자가 서버에 데이터를 제출하고 응답을 기다려야 하므로 네트워크 리소스를 사용하고 성능이 저하될 수 있다는 것입니다. 주요 장점은 더 큰 제어 권한과 사용자가 유효성 검사를 비활성화하더라도 유효성 검사 규칙이 제대로 작동한다는 보장입니다. Java스크립트.
더 나은 전략은 클라이언트 측 유효성 검사를 주요 전략으로 사용하고 서버 측 유효성 검사를 대체 수단으로 사용하는 것입니다.
양식 유효성 검사 규칙 추가
CodeIgniter에는 내장 유효성 검사 라이브러리가 있습니다. 이 라이브러리는 다음 줄을 사용하여 로드됩니다.
$this->load->library('form_validation');
The CodeIgniter 폼 유효성 검사 라이브러리는 다음과 같은 작업을 수행할 수 있습니다.
- 필수 입력 항목을 확인합니다. 제출된 값을 검사하여 필수 입력 항목으로 지정된 필드에 값이 없으면 오류를 반환합니다.
- 데이터 유형 유효성 검사 – 일부 필드는 숫자 값만 요구할 수 있습니다. 숫자 이외의 값이 감지되면 라이브러리는 오류를 반환하고 폼 제출을 중단합니다.
- 길이 유효성 검사 – 일부 필드는 특정 최소 또는 최대 문자 수를 요구합니다. 유효성 검사 라이브러리는 이러한 경우를 처리합니다.
- 데이터 정제 – 이 라이브러리는 보안을 위해 제출된 데이터에서 악성 코드를 제거할 수 있습니다. 제출된 값에 활성 악성 코드가 있는 경우 Java스크립트 또는 SQL 인젝션 코드에서, 이 라이브러리는 악성 코드를 제거하여 무용지물로 만듭니다.
- 데이터베이스 필드의 고유성을 검증하세요. 예를 들어 이메일 주소를 사용하는 회원가입 양식이 있고, 해당 주소가 고유한지 확인하고 싶다고 가정해 보겠습니다. 이 라이브러리를 사용하면 제출된 데이터를 데이터베이스 테이블 및 필드와 비교하여 쉽게 확인할 수 있습니다.
유효성 검사 규칙은 다음 형식을 사용하여 설정됩니다.
$this->form_validation->set_rules('field','human readable field','rule',['custom message']);
이리:
- 'field'는 라이브러리에서 유효성 검사를 수행할 폼 필드 이름을 지정합니다.
- '사람이 읽을 수 있는 필드'는 오류 발생 시 사용자에게 표시되는 필드의 사람이 읽을 수 있는 형식을 지정합니다.
- 'rule'은 필수 입력, 숫자 입력, 최소 길이 등과 같이 적용할 유효성 검사 규칙을 지정합니다.
- ['사용자 지정 메시지']는 선택 사항이며, 규칙이 실패했을 때 표시되는 사용자 지정 유효성 검사 메시지를 설정할 수 있습니다.
다음 인 Code연락처 번호 유효성 검사를 위한 Igniter 예시:
$this->form_validation->set_rules('contact_number', 'Contact Number', 'required');
이리:
- 위 코드는 contact_number 필드에 입력된 내용이 있는지 확인합니다. 입력되지 않은 경우, "연락처 번호 필드는 필수입니다"라는 오류 메시지를 반환합니다.
설정된 규칙에 따라 유효성 검사를 실행하려면 유효성 검사 라이브러리의 다음 함수를 사용합니다.
$this->form_validation->run()
위 코드가 false를 반환하면 하나 이상의 유효성 검사 규칙이 실패한 것입니다. true를 반환하면 모든 유효성 검사 규칙이 통과되었으므로 다음 단계로 진행할 수 있습니다.
유효성 검사 규칙의 다른 예시를 살펴보겠습니다. 연락처 이름, 전화번호, 이메일 주소와 같은 여러 필드를 검증하고 싶다고 가정해 보겠습니다. 다음 코드를 사용할 수 있습니다.
$rules = array( array( 'field' => 'contact_name', 'label' => 'Contact Name', 'rules' => 'required' ), array( 'field' => 'contact_number', 'label' => 'Contact Number', 'rules' => 'required', 'errors' => array( 'required' => 'You must provide a %s.', ), ), array( 'field' => 'email_address', 'label' => 'Email Address', 'rules' => 'required' ) ); $this->form_validation->set_rules($rules);
이리:
- 위 예시에서는 라이브러리의 set_rules 함수에 사용할 규칙이 담긴 필드 배열을 제공합니다. 이렇게 하면 여러 필드를 검증할 때 더 편리합니다.
고유한 검증
동일한 연락처 번호가 두 번 저장되지 않도록 유효성을 검사하려면 다음 규칙을 사용할 수 있습니다.
$this->form_validation->set_rules('contact_number', 'Contact Number','required|is_unique[contacts.contact_number]');
이리:
- |는 여러 규칙을 하나로 묶는 데 사용됩니다.
- is_unique[contacts.contact_number]는 contact_number 값이 데이터베이스 테이블 연락처의 contact_number 필드 값에 대해 고유한지 확인합니다.
양식 검증 오류 메시지 표시
폼 처리 중 오류가 발생하면 다음 코드를 사용하여 유효성 검사 오류를 표시할 수 있습니다.
<?php echo validation_errors(); ?>
이리:
- 위 함수는 발생한 모든 오류를 반환합니다.
제출된 양식 데이터 채우기: 고정 양식
폼에는 필드가 많을 수 있으며, 오류가 발생하더라도 올바르게 입력된 데이터는 유지되어야 합니다. 유효성 검사 라이브러리는 다음 코드를 사용하여 이를 수행할 수 있는 메커니즘을 제공합니다.
<?php echo set_value('field_name'); ?>
이리:
- 위 코드는 사용자가 입력한 내용을 표시합니다.
유효성 검사 라이브러리에서 사용할 수 있는 메서드에 대한 전체 참조 가이드는 공식 API 문서를 참조하십시오. CodeIgniter 사용자 가이드: https://codeigniter.com/userguide3/libraries/form_validation.html.
CodeIgniter 폼 유효성 검사 예시
이 튜토리얼 시리즈 전반에 걸쳐 연락처 관리 애플리케이션인 튜토리얼 프로젝트에 코드를 추가해 왔습니다. 이 섹션에서는 유효성 검사 라이브러리를 로드하고 실제 예제에서 이를 활용하는 방법을 살펴보겠습니다. 다음과 같이 routes 코드를 수정하여 store 메서드를 포함시키세요.
$route['default_controller'] = 'welcome'; $route['contacts'] = 'contacts'; $route['create'] = 'contacts/create'; $route['store'] = 'contacts/store'; $route['edit/:id'] = 'contacts/edit'; $route['update/:id'] = 'contacts/update'; $route['delete/:id'] = 'contacts/delete'; $route['users'] = 'welcome/users';
이제 Contacts 컨트롤러에 폼 유효성 검사 라이브러리를 로드하고 몇 가지 유효성 검사 규칙을 설정해 보겠습니다. 아래와 같이 코드를 수정하세요.
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Contacts extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('url', 'form'); $this->load->library('form_validation'); } public function index() { $this->load->view('header'); $this->load->view('contacts/index'); $this->load->view('footer'); } public function create() { $this->load->view('header'); $this->load->view('contacts/create'); $this->load->view('footer'); } public function store() { $rules = array( array( 'field' => 'contact_name', 'label' => 'Contact Name', 'rules' => 'required' ), array( 'field' => 'contact_number', 'label' => 'Contact Number', 'rules' => 'required', 'errors' => array( 'required' => 'You must provide a %s.', ), ), array( 'field' => 'email_address', 'label' => 'Email Address', 'rules' => 'required' ) ); $this->form_validation->set_rules($rules); if ($this->form_validation->run() == FALSE) { $this->load->view('header'); $this->load->view('contacts/create'); $this->load->view('footer'); } else { redirect(base_url('contacts')); } } public function edit($id) { $this->load->view('header'); $this->load->view('contacts/edit'); $this->load->view('footer'); } public function update($id) { $this->load->view('header'); $this->load->view('contacts/update'); $this->load->view('footer'); } public function delete($id) { $this->load->view('header'); $this->load->view('contacts/delete'); $this->load->view('footer'); } }
이리:
- $rules = array(…)는 유효성 검사 규칙을 정의합니다.
- `$this->form_validation->set_rules($rules);`는 유효성 검사 규칙을 설정합니다.
- if ($this->form_validation->run() == FALSE) {…}는 유효성 검사 규칙을 실행하고, 유효성 검사에 실패하면 유효성 검사 오류와 함께 폼을 다시 표시합니다. 유효성 검사에 성공하면 연락처 목록 페이지로 이동합니다. 일반적으로는 데이터를 데이터베이스에 저장하는데, 이는 다음 튜토리얼에서 다룹니다. 데이터베이스.
application/views/contacts/create.php 파일의 생성 뷰를 아래와 같이 수정하세요.
<div class="column"> <h2 class="title">Create Contact</h2> <div class="notification is-danger"> <?php echo validation_errors(); ?> </div> <form action="<?= base_url('contacts/store') ?>" method="POST"> <div class="field"> <label class="label">Contact Name</label> <div class="control"> <input id="contact_name" name="contact_name" class="input" type="text" value="<?php echo set_value('contact_name'); ?>" placeholder="Type the contact name"> </div> </div> <div class="field"> <label class="label">Contact Number</label> <div class="control"> <input id="contact_number" name="contact_number" class="input" type="text" value="<?php echo set_value('contact_number'); ?>" placeholder="Type the contact number"> </div> </div> <div class="field"> <label class="label">Email Address</label> <div class="control"> <input id="email_address" name="email_address" class="input" type="email" value="<?php echo set_value('email_address'); ?>" placeholder="Type the email address"> </div> </div> <div class="field is-grouped"> <div class="control"> <button class="button is-link">Save Contact</button> </div> </div> </form> </div>
이리:
- 유효성 검사 과정에서 발생하는 오류가 있을 경우 해당 오류를 표시합니다.
- 이전에 입력된 값이 있으면 해당 값으로 설정합니다.
다음을 로드하세요 URL 웹 브라우저에서 해당 페이지를 열고 아무 값도 입력하지 않은 상태에서 "연락처 생성"을 클릭하세요.


