양식 제출 예제를 사용한 CodeIgniter 양식 검증
CodeIgniter의 양식
양식은 사용자가 애플리케이션과 상호 작용하고 데이터를 제출할 수 있는 방법을 제공합니다. 웹사이트 방문자가 작성하여 정보를 당사에 보낼 수 있는 문의 양식에 사용할 수 있습니다. 수신된 정보는 일반적으로 데이터베이스에 저장되거나 이메일로 전송됩니다.
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>
이리,
- … 양식의 여는 태그와 닫는 태그입니다. id 및 name 속성은 양식의 이름과 ID를 지정합니다. method 속성은 사용할 HTTP 동사를 지정합니다. 이는 일반적으로 POST 동사로 지정됩니다.
- 양식 요소를 지정합니다. name 속성은 처리를 위해 백엔드 서버에 제출되는 변수 이름입니다.
CodeIgniter 양식 도우미
HTML은 훌륭하고 이해하고 작성하기 쉽지만 CodeIgniter 일을 더욱 단순하게 만듭니다. CodeIgniter에는 HTML 양식을 생성하는 기능이 내장되어 있습니다.
다음 CodeIgniter 폼 제출 코드를 고려해 보겠습니다. 이 코드는 폼 도우미를 사용하여 폼을 생성합니다.
<?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 Verb로 설정하고 작업 URL을 create_user.php로 설정합니다.
- echo form_label('사용자 ID', 'user_id'); user_id라는 이름을 가진 입력 필드에 대해 User Id를 읽는 레이블을 생성합니다.
- echo form_input(['name' => 'user_id']); user_id라는 이름으로 텍스트 유형의 입력 필드를 생성합니다.
- echo form_submit('btnSubmit', '사용자 생성'); Create User 라벨이 붙은 제출 버튼을 생성합니다.
- 에코 form_close(); 양식을 닫습니다
위의 CodeIgniter 코드에서 볼 수 있듯이 양식 도우미를 사용하면 순수 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 표준을 준수하는 의미상 올바른 코드를 생성한다는 것입니다.
자세한 내용은 공식 CodeIgniter 문서를 참조하세요.
https://codeigniter.com/user_guide/helpers/form_helper.html
CodeIgniter 양식 예
CodeIgniter의 기본 사항을 다룬 후, 이 과정 전반에 걸쳐 작업해 온 튜토리얼 프로젝트로 돌아가겠습니다. CodeIgniter 튜토리얼 시리즈요약하면, 이 튜토리얼 프로젝트는 데이터베이스에 세부 정보를 저장하는 연락처 관리 앱을 구축합니다.
연락처 만들기
이전 튜토리얼에서는 애플리케이션과 간단한 뷰에 대한 경로를 만들었습니다. 애플리케이션/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
튜토리얼 프로젝트를 생성했다면 다음을 볼 수 있어야 합니다.
CodeIgniter의 양식 유효성 검사
검증은 양식에서 데이터를 처리할 때 매우 중요한 역할을 합니다. 사용자가 웹사이트에 가입한다고 가정해 보겠습니다. 사용자가 필수 세부 정보와 이메일 주소를 입력했는지 확인하고 싶습니다. 입력된 이메일 주소가 유효한지 확인해야 합니다. 날짜 값으로 작업하는 경우 날짜 범위가 유효한지 확인해야 합니다. 한 달에 32일이 있는 날짜를 허용할 필요는 없습니다.
유효성 검사는 위의 문제를 해결합니다. CodeIgniter 검증은 웹 애플리케이션 작업 시 두 가지 측면에서 수행됩니다.
클라이언트 측 유효성 검사는 웹 브라우저 부분에서 수행됩니다. 여기에는 일반적으로 HTML과 Java스크립트. 클라이언트 측 검증은 모든 것이 클라이언트 측에서 수행되므로 성능을 개선합니다. 따라서 서버에 데이터를 제출할 필요가 없습니다. 클라이언트 측 검증의 단점은 사용자가 제어할 수 있다는 것입니다. 다음에 의존하는 경우 Java검증 스크립트 및 사용자 비활성화 Java브라우저에서 스크립트를 실행하면 검증이 실패합니다.
서버측 유효성 검사는 서버측에서 수행됩니다. 이 유효성 검사의 단점은 사용자가 처리를 위해 데이터를 서버에 제출하고 응답을 기다려야 한다는 것입니다. 이로 인해 네트워크 리소스가 소모되어 성능이 저하될 수 있습니다. 서버 측 유효성 검사의 가장 큰 장점은 더 큰 제어력을 갖고 있으며 사용자가 비활성화한 경우에도 유효성 검사 규칙이 작동한다는 것을 확신할 수 있다는 것입니다. Java브라우저의 스크립트.
더 나은 전략은 클라이언트 측을 기본 유효성 검사 전략으로 사용하고 서버 측을 대체 메커니즘으로 사용하는 것입니다.
양식 유효성 검사 규칙 추가
CodeIgniter에는 내장된 검증 라이브러리가 있습니다. 라이브러리는 다음 줄을 사용하여 로드됩니다.
$this->load->library('form_validation');
CodeIgniter 폼 검증 라이브러리를 사용하면 다음 작업 중 일부를 수행할 수 있습니다.
- 필수 입력란을 확인하세요. 제출된 값을 검사하고 필수로 태그가 지정된 필드에 값이 없으면 오류를 반환합니다.
- 데이터 유형 확인 – 일부 필드에는 숫자 값만 필요할 수 있습니다. 숫자가 아닌 값이 감지되면 라이브러리는 오류를 반환합니다. 양식 제출 실행도 중단됩니다.
- 길이 유효성 검사 – 일부 데이터 유형에서는 필드에 특정 최소 또는 최대 문자 수가 필요합니다. 이러한 경우 유효성 검사 라이브러리가 유용합니다.
- 데이터 삭제 – 검증 라이브러리에는 보안상의 이유로 제출된 데이터에서 악성 코드를 제거하는 기능도 있습니다. 예를 들어 제출된 값이 활성 상태인 경우 Java스크립트나 SQL 주입 코드가 포함되어 있는 경우 검증 라이브러리는 유해한 코드를 제거하여 쓸모없게 만듭니다.
- 고유한 데이터베이스 필드 검증 - 사용자가 이메일 주소를 사용하여 가입하는 양식이 있다고 가정합니다. 이메일 주소가 고유한지 확인하고 싶을 것입니다. 라이브러리를 사용하면 제출된 데이터를 데이터베이스 테이블 및 필드와 쉽게 비교할 수 있습니다. 이를 통해 값이 이미 사용되었는지 알 수 있습니다.
검증 규칙은 다음 형식을 사용하여 설정됩니다.
$this->form_validation->set_rules('field','human readable field','rule',['custom message']);
이리,
- 'field'는 라이브러리에서 유효성을 검사할 양식 필드 이름을 지정했습니다.
- '인간이 읽을 수 있는 필드'는 검증 중인 필드의 인간이 읽을 수 있는 형식을 지정합니다. 이는 오류가 발생하면 사용자에게 다시 표시됩니다.
- 'rule'은 필수, 숫자, 최소 길이가 다음인지 확인 등 적용할 유효성 검사 규칙을 지정합니다.
- ['사용자 지정 메시지']는 선택 사항이며 검증 규칙이 실패할 때 표시되어야 하는 사용자 지정 검증 메시지를 설정하는 데 사용할 수 있습니다.
다음은 CodeIgniter에서 연락처 이름을 검증하기 위한 양식 제출 예입니다.
$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);
이리,
- CodeIgniter 예제의 위의 이메일 검증에서 우리는 라이브러리의 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'); ?>
이리,
- 위의 코드는 사용자가 입력한 입력을 표시합니다.
유효성 검사 라이브러리에서 사용할 수 있는 메서드에 대한 전체 참조 가이드를 보려면 CodeIgniter 공식 사용자 가이드에서 API 문서를 참조하세요.
https://codeigniter.com/userguide3/libraries/form_validation.html
CodeIgniter 양식 검증 예
이 튜토리얼 시리즈 전반에 걸쳐 연락처 관리 애플리케이션인 튜토리얼 프로젝트에 더 많은 코드를 추가했습니다. 이 섹션에서는 검증 라이브러리를 로드하고 실제 예제 애플리케이션을 사용하여 이를 실제로 사용할 수 있는 방법을 살펴보겠습니다.
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'; $routes['users'] = 'welcome/users';
이제 연락처 컨트롤러에 양식 유효성 검사 라이브러리를 로드하고 몇 가지 유효성 검사 규칙을 설정해 보겠습니다.
CodeIgniter 예제에서 아래 양식 유효성 검사에 표시된 대로 코드를 수정합니다.
<?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) {…}는 검증 규칙을 실행하고 실패하면 검증 오류와 함께 양식이 다시 표시됩니다. 검증이 통과하면 간단히 연락처 목록 페이지로 리디렉션됩니다. 일반적인 상황에서는 데이터베이스에 데이터를 씁니다. 다음 튜토리얼에서 살펴볼 때 이를 수행합니다. 데이터베이스.
아래 양식 유효성 검사 CodeIgniter 예에 표시된 대로 application/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을 웹 브라우저에 로드해야 합니다. 그런 다음 값을 입력하지 않고 연락처 만들기를 클릭합니다.
제품 개요
- 양식은 사용자가 애플리케이션과 상호 작용하고 데이터를 제출할 수 있는 방법을 제공합니다.
- HTML은 이해하고 작성하기 쉽고 훌륭하지만 CodeIgniter는 작업을 더욱 간단하게 만듭니다. CodeIgniter에는 HTML 양식을 생성하는 기능이 내장되어 있습니다.
- 유효성 검사는 양식의 데이터를 처리할 때 매우 중요한 역할을 합니다.
- 이 튜토리얼에서는 주요 검증 전략과 그 장단점을 살펴보았습니다. 또한 CodeIgniter에 내장된 유효성 검사 라이브러리를 사용하여 유효성 검사 규칙을 설정하고 오류 메시지를 출력하는 방법도 배웠습니다. 실습에서 얻은 지식을 구현하여 수업을 마무리했습니다.