양식 제출 예제를 사용한 CodeIgniter 양식 검증

CodeIgniter의 양식

양식은 사용자가 애플리케이션과 상호 작용하고 데이터를 제출할 수 있는 방법을 제공합니다. 이는 웹사이트 방문자가 정보를 작성하여 당사에 보낼 수 있는 문의 양식에 사용될 수 있습니다. 수신된 정보는 일반적으로 데이터베이스에 저장되거나 e를 통해 전송됩니다.mail.

HTML 양식 구조

더 폴로wing 코드는 일반적인 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 양식을 생성하는 기능이 내장되어 있습니다.

다음을 고려해 봅시다.wing 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을 사용자 정의할 수 있습니다.

위의 코드는 다음을 생성합니다wing 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 문서를 참조하세요.tails

https://codeigniter.com/user_guide/helpers/form_helper.html

CodeIgniter 양식 예

CodeIgniter의 기본 사항을 다룬 후, 이 과정 전반에 걸쳐 작업해 온 튜토리얼 프로젝트로 돌아가겠습니다. CodeIgniter 튜토리얼 시리즈. 요약하자면, 튜토리얼 프로젝트는 데이터를 저장할 연락처 관리 앱을 구축합니다.tails 데이터베이스에서.

연락처 만들기

이전 튜토리얼에서는 애플리케이션과 간단한 뷰에 대한 경로를 만들었습니다. 애플리케이션/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을 사용하여 양식을 만듭니다.

이제 웹 브라우저에서 양식이 어떻게 보이는지 살펴보겠습니다.

팔로우 로드wing 웹 브라우저에 대한 URL입니다.

http://localhost:3000/contacts/create

튜토리얼 프로젝트를 생성했다면 다음 내용을 볼 수 있어야 합니다.wing

코드이그나이터 양식

CodeIgniter의 양식 유효성 검사

유효성 검사는 양식의 데이터를 처리할 때 매우 중요한 역할을 합니다. 사용자가 웹사이트에 가입한다고 가정해 보겠습니다. 우리는 그들이 필수 사항을 충족하는지 확인하고 싶습니다.tails 그리고 email 주소. 우리는 e가mail 입력된 주소가 유효합니다. 날짜 값으로 작업하는 경우 날짜 범위가 유효한지 확인하고 싶습니다. 한 달이 32일인 날짜 등을 받아들일 필요는 없습니다.

유효성 검사는 위의 문제를 해결합니다. CodeIgniter 검증은 웹 애플리케이션 작업 시 두 가지 측면에서 수행됩니다.

클라이언트 측 유효성 검사는 웹 브라우저 부분에서 수행됩니다. 여기에는 일반적으로 HTML과 JavaScript가 사용됩니다. 클라이언트 측 유효성 검사는 모든 작업이 클라이언트 측에서 수행되므로 성능이 향상됩니다. 따라서 데이터를 서버에 제출할 필요가 없습니다. 클라이언트측 유효성 검사의 단점은 사용자가 이를 제어할 수 있다는 것입니다. 유효성을 검사하기 위해 JavaScript를 사용하고 사용자가 브라우저에서 JavaScript를 비활성화하면 유효성 검사가 실패합니다.

서버측 유효성 검사는 서버측에서 수행됩니다. 이 유효성 검사의 단점은 사용자가 처리를 위해 데이터를 서버에 제출하고 응답을 기다려야 한다는 것입니다. 이로 인해 네트워크 리소스가 소모되어 성능이 저하될 수 있습니다. 서버 측 유효성 검사의 가장 큰 장점은 제어 능력이 더 뛰어나고 사용자가 브라우저에서 JavaScript를 비활성화한 경우에도 유효성 검사 규칙이 작동한다는 것을 보장한다는 것입니다.

더 나은 전략은 클라이언트 측을 기본 유효성 검사 전략으로 사용하고 서버 측을 대체 메커니즘으로 사용하는 것입니다.

양식 유효성 검사 규칙 추가

CodeIgniter에는 검증 라이브러리가 내장되어 있습니다. 라이브러리는 다음을 사용하여 로드됩니다.wing 선

$this->load->library('form_validation');

CodeIgniter 양식 유효성 검사 라이브러리는 다음 중 일부를 수행하는 데 사용될 수 있습니다.wing 행위

  • 필수 입력란을 확인하세요. 제출된 값을 검사하고 필수로 태그가 지정된 필드에 값이 없으면 오류를 반환합니다.
  • 데이터 유형 확인 – 일부 필드에는 숫자 값만 필요할 수 있습니다. 숫자가 아닌 값이 감지되면 라이브러리는 오류를 반환합니다. 양식 제출 실행도 중단됩니다.
  • 길이 유효성 검사 – 일부 데이터 유형에서는 필드에 특정 최소 또는 최대 문자 수가 필요합니다. 이러한 경우 유효성 검사 라이브러리가 유용합니다.
  • 데이터 삭제 – 검증 라이브러리에는 보안상의 이유로 제출된 데이터에서 악성 코드를 제거하는 기능도 있습니다. 예를 들어 제출된 값에 활성 JavaScript 또는 SQL 삽입 코드가 포함되어 있는 경우 유효성 검사 라이브러리는 유해한 코드를 제거하여 쓸모 없게 만듭니다.
  • 고유한 데이터베이스 필드의 유효성을 검사합니다. 사용자가 e를 사용하여 가입하는 양식이 있다고 가정합니다.mail 주소. 당신은 e가mail 주소는 고유합니다. 라이브러리를 사용하면 제출된 데이터를 데이터베이스 테이블 및 필드와 비교하여 쉽게 확인할 수 있습니다. 이를 통해 해당 값이 이미 사용되었음을 알 수 있습니다.

유효성 검사 규칙은 다음을 사용하여 설정됩니다.wing 체재

$this->form_validation->set_rules('field','human readable field','rule',['custom message']);

이리,

  • 'field'는 라이브러리에서 유효성을 검사할 양식 필드 이름을 지정했습니다.
  • '사람이 읽을 수 있는 필드'는 검증 중인 필드의 사람이 읽을 수 있는 형식을 지정합니다. 오류가 발생하면 사용자에게 다시 표시됩니다.
  • 'rule'은 필수, 숫자, 최소 길이가 다음인지 확인 등 적용할 유효성 검사 규칙을 지정합니다.
  • ['사용자 정의 메시지']는 선택 사항이며 유효성 검사 규칙이 실패할 때 표시되어야 하는 사용자 정의 유효성 검사 메시지를 설정하는 데 사용할 수 있습니다.

FOLLOwing 연락처 이름을 확인하기 위해 CodeIgniter 예제에서 제출하는 양식입니다.

$this->form_validation->set_rules('contact_number', 'Contact Number', 'required');

이리,

  • 위 코드는 contact_number 필드가 입력되었는지 확인합니다. 설정되지 않은 경우 연락처 번호 필드가 필요하다는 오류가 반환됩니다.

설정된 규칙에 대해 유효성 검사를 실행하려면 다음을 사용합니다.wing 검증 라이브러리의 기능

$this->form_validation->run()

위 코드가 false를 반환하면 하나 이상의 설정된 규칙이 실패한 것입니다. true를 반환하면 유효성 검사 규칙이 모두 통과된 것이므로 추가 작업을 진행할 수 있습니다.

유효성 검사 규칙의 더 많은 예를 살펴보겠습니다. 연락처 이름, 전화번호 및 e가 포함된 일부 필드를 확인하고 싶다고 가정해 보겠습니다.mail 주소, 당신은 다음을 사용할 수 있습니다wing 이를 달성하기 위한 코드입니다.

$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);

이리,

  • 위의 e에서mail CodeIgniter 예제에서는 유효성 검사를 위해 라이브러리의 set_rules 함수에 대한 규칙이 포함된 필드 배열을 제공합니다. 이렇게 하면 일부 필드의 유효성을 검사할 때 더 쉬워집니다.

고유한 검증

동일한 번호를 두 번 저장하지 않도록 연락처 번호를 확인하려면 다음을 사용할 수 있습니다.wing 그렇게 하도록 규정합니다.

$this->form_validation->set_rules('contact_number', 'Contact Number','required|is_unique[contacts.contact_number]');

이리,

  • | 여러 규칙을 함께 파이프하는 데 사용됩니다.
  • is_unique[contacts.contact_number]는 contact_number 값이 데이터베이스 테이블 연락처의 contact_number 필드 값에 대해 고유한지 확인합니다.

양식 검증 오류 메시지 표시

양식 처리 중 오류가 발생하는 경우 다음을 사용할 수 있습니다.wing 발생한 유효성 검사 오류를 표시하는 코드

<?php echo validation_errors(); ?>

이리,

  • 위 함수는 발생한 모든 오류를 반환합니다.

제출된 양식 데이터 채우기: 고정 양식

일부 양식에는 많은 필드가 있으므로 오류가 발생한 경우 올바르게 추가된 데이터가 보존되는지 확인하려고 합니다. 유효성 검사 라이브러리에는 이를 수행하기 위한 메커니즘이 있습니다. 우리는 follo를 사용하여 그렇게 합니다.wing 암호.

<?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>

이리,

  • 유효성 검사 과정에서 발생하는 오류를 표시합니다.
  • 이전에 설정한 값이 있으면 설정합니다.

팔로우를 로드해야 합니다.wing 웹 브라우저에 대한 URL입니다. 그런 다음 값을 입력하지 않고 연락처 만들기를 클릭하세요.

CodeIgniter 양식 검증

요약

  • 양식은 사용자가 애플리케이션과 상호 작용하고 데이터를 제출할 수 있는 방법을 제공합니다.
  • HTML은 이해하고 작성하기 쉽고 훌륭하지만 CodeIgniter는 작업을 더욱 간단하게 만듭니다. CodeIgniter에는 HTML 양식을 생성하는 기능이 내장되어 있습니다.
  • 유효성 검사는 양식의 데이터를 처리할 때 매우 중요한 역할을 합니다.
  • 이 튜토리얼에서는 주요 검증 전략과 그 장단점을 살펴보았습니다. 또한 CodeIgniter에 내장된 유효성 검사 라이브러리를 사용하여 유효성 검사 규칙을 설정하고 오류 메시지를 출력하는 방법도 배웠습니다. 실습에서 얻은 지식을 구현하여 수업을 마무리했습니다.