CodeIgniter űrlap érvényesítése űrlap beküldési példával

Űrlap a CodeIgniterben

Az űrlapok lehetőséget biztosítanak a felhasználók számára az alkalmazással való interakcióra és az adatok benyújtására. Használható egy kapcsolatfelvételi űrlapként, amelyet a weboldal látogatója kitölthet és elküldheti nekünk az információkat. A kapott információkat általában az adatbázisban tárolják, vagy e-mailben küldik el.

HTML űrlapszerkezet

A következő kód egy tipikus HTML űrlap szerkezetét mutatja be.

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

ITT,

  • … az űrlap nyitó és záró címkéi. Az id and name attribútum adja meg az űrlap nevét és azonosítóját. A method attribútum a használandó HTTP igét adja meg. Ezt általában a POST ige határozza meg
  • Meghatározza az űrlapelemeket. A name attribútum a háttérkiszolgálóhoz feldolgozásra elküldött változónév.

CodeIgniter űrlapsúgó

A HTML nagyszerű, könnyen érthető és írható, de CodeIgniter még egyszerűbbé teszi a dolgokat. A CodeIgniter beépített funkciókkal rendelkezik HTML-űrlapok létrehozásához.

Tekintsük a következő CodeIgniter űrlap beküldési kódját, amely az űrlapsegéd segítségével hozza létre az űrlapot

 <?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();
        ?>

ITT,

  • echo form_open('create_user.php', ['id' => 'frmUsers']); létrehozza az űrlap nyitó címkéjét, a műveletet POST igére állítja, és a művelet URL-jét a create_user.php értékre állítja
  • echo form_label('Felhasználói azonosító', 'felhasználói_azonosító'); létrehoz egy címkét, amely beolvassa a User Id beviteli mezőt a user_id nevével.
  • echo form_input(['név' => 'felhasználói_azonosító']); létrehoz egy szöveg típusú beviteli mezőt a user_id névvel
  • echo form_submit('btnSubmit', 'Felhasználó létrehozása'); létrehoz egy küldő gombot Felhasználó létrehozása címkével
  • echo form_close(); bezárja az űrlapot

Amint a fenti CodeIgniter kódból látható, az űrlapsegédek megkönnyítik számunkra az űrlapok készítését tiszta PHP használatával. Ha attribútumokat adunk át az űrlapsegítő metódusoknak, testreszabhatjuk az űrlaphoz generált HTML-t.

A fenti kód a következő HTML űrlapkódot hozza létre

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

Az űrlapsegéd használatának legnagyobb előnye, hogy szemantikailag helyes kódot generál, amely megfelel a beállított HTML-szabványoknak.

További részletekért tekintse meg a hivatalos CodeIgniter dokumentációt

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

CodeIgniter űrlappélda

A CodeIgniter alapjainak ismertetése után térjünk vissza oktatóprojektünkhöz, amelyen az egész ideje alatt dolgoztunk. CodeIgniter oktatóanyag-sorozat. Összefoglalva, az oktatóprogram egy névjegykezelő alkalmazást épít fel, amely az adatbázisban tárolja a részleteket.

Kapcsolat létrehozása

az előző oktatóanyagban útvonalakat hoztunk létre alkalmazásainkhoz és egyszerű nézeteinkhez. Nyissa meg az application/views/contacts/create.php fájlt

Módosítsa a create.php kódját az alábbiak szerint

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

Jegyzet: a fenti kód sima HTML-t használ az űrlapok létrehozásához.

Lássuk, hogyan néznek ki űrlapjaink a webböngészőben

Töltse be a következő URL-t a böngészőnkbe.

http://localhost:3000/contacts/create

Ha Ön hozta létre az oktatóprojektet, akkor látnia kell a következőket

CodeIgniter űrlap

Űrlapérvényesítés a CodeIgniterben

Az érvényesítés nagyon fontos szerepet játszik az űrlapokból származó adatok feldolgozásakor. Tegyük fel, hogy egy felhasználó regisztrál egy webhelyen; meg akarunk győződni arról, hogy kitöltik a szükséges adataikat és e-mail címüket. Meg kell győződnünk arról, hogy a megadott e-mail cím érvényes. Ha dátumértékekkel dolgozunk, akkor meg akarunk győződni arról, hogy a dátumtartományok érvényesek. Nem kellene elfogadnunk egy olyan dátumot, amelyikben egy hónapban 32 nap van stb.

Az érvényesítés megoldja a fenti problémákat. A CodeIgniter ellenőrzése két (2) fronton történik, amikor webalkalmazásokkal dolgozik.

Az ügyféloldali érvényesítés a webböngésző részéről történik. Ez általában a HTML és a JavaForgatókönyv. Az ügyféloldali érvényesítés javítja a teljesítményt, mivel minden az ügyféloldalon történik. Tehát nincs szükség az adatok kiszolgálóra történő benyújtására. A kliensoldali érvényesítés hátránya, hogy a felhasználó irányíthatja azt. Ha támaszkodik JavaAz érvényesítendő szkript, és a felhasználó letiltja JavaSzkriptet a böngészőben, akkor az ellenőrzés sikertelen lesz.

A szerveroldali érvényesítés a szerver oldalon történik. Ennek az ellenőrzésnek az a hátránya, hogy a felhasználónak el kell küldenie az adatokat a szervernek feldolgozásra, és meg kell várnia a választ. Ez elhasználja a hálózati erőforrásokat, és ronthatja a teljesítményt. A szerveroldali érvényesítés fő előnye, hogy nagyobb irányítást biztosít, és biztos lehet benne, hogy az érvényesítési szabályok működnek még akkor is, ha a felhasználó letiltja JavaSzkript a böngészőben.

Jobb stratégia a kliensoldal használata elsődleges érvényesítési stratégiaként, a szerveroldal pedig tartalék mechanizmusként.

Űrlapérvényesítési szabályok hozzáadása

A CodeIgniter beépített érvényesítő könyvtárral rendelkezik. A könyvtár a következő sor segítségével töltődik be

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

A CodeIgniter űrlapérvényesítési könyvtár a következő műveletek végrehajtására használható

  • Ellenőrizze a kötelező mezőket. Ez megvizsgálja a beküldött értékeket, és hibát ad vissza, ha egy kötelező címkével ellátott mező nem rendelkezik értékkel
  • Adattípus érvényesítése – egyes mezők csak numerikus értékeket igényelhetnek. Ha nem numerikus értéket észlel, akkor a könyvtár hibát ad vissza. Az űrlap beküldésének végrehajtása is megszakad.
  • Hosszellenőrzés – bizonyos adattípusok megkövetelik, hogy a mezők egy bizonyos minimális vagy maximális számú karaktert tartalmazzanak. Ilyen esetekben jól jön az érvényesítő könyvtár.
  • Adattisztítás – az érvényesítő könyvtár olyan képességekkel is rendelkezik, amelyek biztonsági okokból eltávolítják a rosszindulatú kódokat a beküldött adatokból. Ha például a beküldött értékek aktívak JavaScript vagy SQL Injection kód bennük, az érvényesítési könyvtár eltávolítja a káros kódot és használhatatlanná teszi.
  • Érvényesítse az egyedi adatbázismezőket – tegyük fel, hogy van egy űrlapja, ahol a felhasználók e-mail címmel regisztrálnak. Győződjön meg arról, hogy az e-mail cím egyedi. A könyvtár megkönnyíti a beküldött adatok összehasonlítását egy adatbázistáblával és mezővel. Ezzel megtudhatja, hogy az értéket már felvették.

Az érvényesítési szabályok a következő formátumban vannak beállítva

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

ITT,

  • A 'field' megadta a könyvtár által érvényesítendő űrlapmező nevét
  • Az „ember által olvasható mező” az érvényesítés alatt álló mező ember által olvasható formátumát adja meg. Ez hiba esetén megjelenik a felhasználó számára.
  • A „szabály” az alkalmazandó érvényesítési szabályt határozza meg, például kötelező, numerikus, ellenőrizze, hogy a minimális hossz… stb.
  • Az ['egyéni üzenet'] nem kötelező, és egy egyéni érvényesítési üzenet beállítására használható, amelyet akkor kell megjeleníteni, ha az érvényesítési szabály sikertelen.

A következő űrlap beküldése CodeIgniterben található a kapcsolattartó nevének érvényesítéséhez

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

ITT,

  • A fenti kód ellenőrzi, hogy a contact_number mezőt megadták-e. Ha nincs beállítva, akkor hibaüzenetet ad vissza, amely szerint a Kapcsolatszám mező kitöltése kötelező.

Az érvényesítés a beállított szabályok szerint történő futtatásához az érvényesítési könyvtár következő funkcióját használjuk

$this->form_validation->run()

Ha a fenti kód hamis értéket ad vissza, akkor egy vagy több beállított szabály meghiúsult. Ha igazat ad vissza, akkor az érvényesítési szabályok mindegyike megfelelt, és folytathatja a további teendőket.

Nézzünk további példákat az érvényesítési szabályokra. Tegyük fel, hogy ellenőrizni szeretne néhány mezőt, amely a kapcsolattartó nevét, telefonszámát és e-mail címét tartalmazza, akkor a következő kód segítségével hajthatja végre ezt.

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

ITT,

  • A fenti e-mail-ellenőrzésben a CodeIgniter példában egy sor mezőt biztosítunk szabályokkal a könyvtár set_rules függvényéhez. Ez megkönnyíti egyes mezők érvényesítését.

Egyedi érvényesítés

Ha ellenőrizni akarjuk a telefonszámot, hogy ne mentsük el kétszer ugyanazt a számot, akkor ehhez a következő szabályt használhatjuk.

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

ITT,

  • | több szabály összevezetésére szolgál
  • is_unique[contacts.contact_number] ellenőrzi, hogy a contact_number értéke egyedi-e a kapcsolattartó_szám mező értékeivel szemben az adatbázis-tábla kapcsolattartóiban.

Űrlapérvényesítési hibaüzenetek megjelenítése

Ha hiba történik az űrlap feldolgozása során, akkor a következő kóddal megjelenítheti az érvényesítési hibákat

<?php echo validation_errors(); ?>

ITT,

  • A fenti függvény az összes előfordult hibát visszaadja.

Beküldött űrlapadatok kitöltése: ragadós űrlapok

Egyes űrlapok sok mezőt tartalmaznak, és ha hiba történt, akkor győződjön meg arról, hogy a helyesen hozzáadott adatok megmaradnak. Az érvényesítési könyvtárnak vannak mechanizmusai ennek megvalósítására. Ezt a következő kód használatával tesszük.

<?php echo set_value('field_name'); ?>

ITT,

  • A fenti kód a felhasználó által megadott bemenetet jeleníti meg.

Az érvényesítési könyvtár alatt elérhető módszerekről szóló teljes referenciaútmutatót a CodeIgniter hivatalos felhasználói útmutatójában található API dokumentációban talál.

https://codeigniter.com/userguide3/libraries/form_validation.html

CodeIgniter űrlap érvényesítési példa

Ezen oktatóanyag-sorozatok során több kódot adtunk hozzá oktatóprogramunkhoz, amely egy névjegykezelő alkalmazás. Ebben a részben betöltjük az érvényesítési könyvtárat, és megnézzük, hogyan tudjuk gyakorlati hasznát venni egy valós példaalkalmazás segítségével.

Módosítsa az útvonalkódot az alábbiak szerint, hogy tartalmazza a tárolási módszert

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

Most töltsük be az űrlapellenőrzési könyvtárat a Contacts vezérlőbe, és állítsunk be néhány érvényesítési szabályt.

Módosítsa a kódot az alábbi űrlap érvényesítésében a CodeIgniter példában látható módon:

<?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');
    }
}

ITT,

  • $rules = array(…) sets határozza meg az érvényesítési szabályokat
  • $this->form_validation->set_rules($rules); meghatározza az érvényesítési szabályokat
  • if ($this->form_validation->run() == FALSE) {…} futtatja az érvényesítési szabályokat, és ha azok sikertelenek, az űrlap újra megjelenik érvényesítési hibákkal. Ha az érvényesítés sikeres, egyszerűen átirányítjuk a névjegyzék oldalára. Normál körülmények között az adatokat az adatbázisba írjuk. Ezt megtesszük a következő oktatóanyagokban, amikor megnézzük adatbázisok.

Módosítsa a létrehozási nézetet az application/contacts/create.php kódban az alábbi űrlap érvényesítési CodeIgniter példája szerint:

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

ITT,

  • megjelenítjük az érvényesítési folyamat során előforduló hibákat
  • beállítja a korábban beállított értéket, ha volt ilyen

Be kell töltenie a következő URL-t a böngészőjébe. Ezután kattintson a Névjegy létrehozása lehetőségre értékek megadása nélkül

CodeIgniter űrlap érvényesítése

Összegzésként

  • Az űrlapok lehetőséget biztosítanak a felhasználók számára az alkalmazással való interakcióra és az adatok benyújtására.
  • A HTML nagyszerű, könnyen érthető és írható, de a CodeIgniter még egyszerűbbé teszi a dolgokat. A CodeIgniter beépített funkciókkal rendelkezik HTML-űrlapok létrehozásához.
  • Az érvényesítés nagyon fontos szerepet játszik az űrlapokból származó adatok feldolgozásakor.
  • Ebben az oktatóanyagban a fő érvényesítési stratégiákat, valamint azok előnyeit és hátrányait láthattuk. Megtanultuk azt is, hogyan állíthatunk be érvényesítési szabályokat és távolíthatunk el hibaüzeneteket a CodeIgniter beépített érvényesítési könyvtárával. Az órát a megszerzett ismeretek gyakorlati alkalmazásban való átültetésével zártuk.