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
Ű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
Ö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.