CodeIgniter-lomakkeen vahvistus lomakkeen lähetysesimerkillä
Lomake CodeIgniterissä
Lomakkeet tarjoavat käyttäjille tavan olla vuorovaikutuksessa sovelluksen kanssa ja lähettää tietoja. Sitä voidaan käyttää yhteydenottolomakkeena, jonka verkkosivun vierailija voi täyttää ja lähettää meille tiedot. Vastaanotetut tiedot tallennetaan yleensä tietokantaan tai lähetetään sähköpostitse.
HTML-lomakerakenne
Seuraava koodi näyttää tyypillisen HTML-lomakkeen rakenteen.
<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>
TÄSSÄ,
- … ovat lomakkeen avaus- ja sulkemistunnisteet. Attribuutti id and name määrittelee lomakkeen nimen ja tunnuksen. Metod-attribuutti määrittää käytettävän HTTP-verbin. Tämä määritellään yleensä POST-verbillä
- Määrittää lomakkeen elementit. Name-attribuutti on muuttujan nimi, joka lähetetään taustapalvelimelle käsittelyä varten.
CodeIgniter-lomakeapulainen
HTML on hienoa on helppo ymmärtää ja kirjoittaa, mutta CodeIgniter tekee asioista entistä yksinkertaisempia. CodeIgniterissä on sisäänrakennetut toiminnot HTML-lomakkeiden luomiseen.
Tarkastellaan seuraavaa CodeIgniter-lomakkeen lähetyskoodia, joka käyttää lomakkeen apuohjelmaa lomakkeen luomiseen
<?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();
?>
TÄSSÄ,
- echo form_open('create_user.php', ['id' => 'frmUsers']); luo lomakkeen avaustunnisteen, asettaa toiminnon POST-verbiksi ja asettaa toiminnon URL-osoitteeksi create_user.php
- echo form_label('Käyttäjätunnus', 'käyttäjätunnus'); luo tarran, jossa lukee User Id syöttökenttään, jonka nimi on user_id.
- echo form_input(['nimi' => 'käyttäjätunnus']); luo tekstityyppisen syöttökentän, jonka nimi on user_id
- echo form_submit('btnSubmit', 'Luo käyttäjä'); luo lähetyspainikkeen Luo käyttäjä -tunnisteella
- echo form_close(); sulkee lomakkeen
Kuten yllä olevasta CodeIgniter-koodista näet, lomakkeiden apuohjelmat helpottavat lomakkeiden luomista puhtaalla PHP:llä. Välittämällä attribuutteja lomakkeen apumenetelmille voimme mukauttaa lomakkeelle luotua HTML-koodia.
Yllä oleva koodi luo seuraavan HTML-lomakekoodin
<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>
Lomakeapuohjelman käytön suurin etu on, että se tuottaa semanttisesti oikeaa koodia, joka noudattaa asetettuja HTML-standardeja.
Voit katsoa lisätietoja virallisesta CodeIgniterin dokumentaatiosta
CodeIgniter-lomakeesimerkki
CodeIgniterin perusteiden käsittelyn jälkeen palataan opetusprojektiimme, jonka parissa olemme työstäneet koko tämän ajan. CodeIgniter opetusohjelmasarja. Yhteenvetona voidaan todeta, että opetusohjelma rakentaa yhteystietojen hallintasovelluksen, joka tallentaa tiedot tietokantaan.
Luo yhteyshenkilö
Edellisessä opetusohjelmassa loimme reittejä sovelluksillemme ja yksinkertaisille näkymille. Avaa application/views/contacts/create.php
Muokkaa create.php:n koodia seuraavasti
<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>
Huomautus: yllä oleva koodi käyttää tavallista HTML-koodia lomakkeiden luomiseen.
Katsotaan nyt, miltä lomakkeemme näyttävät verkkoselaimessa
Lataa seuraava URL-osoite verkkoselaimeemme.
http://localhost:3000/contacts/create
Jos olet luonut opetusohjelmaprojektin, sinun pitäisi pystyä näkemään seuraavat asiat
Lomakkeen vahvistus CodeIgniterissä
Validointi on erittäin tärkeä rooli lomakkeiden tietojen käsittelyssä. Oletetaan, että käyttäjä kirjautuu verkkosivustolle; Haluamme varmistaa, että he täyttävät vaaditut tietonsa ja sähköpostiosoitteensa. Meidän on varmistettava, että annettu sähköpostiosoite on oikea. Jos käsittelemme päivämääräarvoja, haluamme varmistaa, että ajanjaksot ovat kelvollisia. Meidän ei tarvitsisi hyväksyä päivämäärää, jossa on 32 päivää kuukaudessa jne.
Validointi ratkaisee yllä olevat ongelmat. CodeIgniter-validointi tehdään kahdella (2) rintamalla, kun työskentelet verkkosovellusten kanssa.
Asiakaspuolen validointi tehdään verkkoselaimen puolelta. Tähän liittyy yleensä HTML- ja JavaKäsikirjoitus. Asiakaspuolen validointi parantaa suorituskykyä, koska kaikki tehdään asiakaspuolella. Tietoja ei siis tarvitse lähettää palvelimelle. Asiakaspuolen validoinnin haittana on, että käyttäjä voi hallita sitä. Jos luotat JavaVahvistettava komentosarja ja käyttäjä poistaa sen käytöstä JavaKomentosarja selaimessa, niin vahvistus epäonnistuu.
Palvelinpuolen validointi tehdään palvelinpuolella. Tämän validoinnin haittapuoli on, että käyttäjän on lähetettävä tiedot palvelimelle käsittelyä varten ja odotettava vastausta. Tämä kuluttaa verkkoresursseja ja voi heikentää suorituskykyä. Palvelinpuolen validoinnin suurin etu on, että sinulla on parempi hallinta ja voit olla varma siitä, että validointisäännöt toimivat, vaikka käyttäjä poistaa sen käytöstä JavaSkripti selaimessa.
Parempi strategia on käyttää asiakaspuolta ensisijaisena validointistrategiana ja palvelinpuolta varamekanismina.
Lomakkeen vahvistussääntöjen lisääminen
CodeIgniterissä on sisäänrakennettu validointikirjasto. Kirjasto ladataan seuraavan rivin avulla
$this->load->library('form_validation');
CodeIgniter-lomakkeen vahvistuskirjastoa voidaan käyttää joidenkin seuraavien toimien suorittamiseen
- Tarkista pakolliset kentät. Tämä tutkii lähetetyt arvot ja palauttaa virheilmoituksen, jos pakolliseksi merkityllä kentällä ei ole arvoa
- Tietotyypin validointi – jotkin kentät saattavat edellyttää vain numeerisia arvoja. Jos havaitaan ei-numeerinen arvo, kirjasto palauttaa virheilmoituksen. Myös lomakkeen lähettämisen suorittaminen keskeytyy.
- Pituuden tarkistus – jotkin tietotyypit edellyttävät, että kentissä on tietty vähimmäis- tai enimmäismäärä merkkejä. Validointikirjasto on hyödyllinen tällaisissa tapauksissa.
- Tietojen puhdistaminen – validointikirjastossa on myös ominaisuuksia, jotka poistavat haitallisen koodin lähetetyistä tiedoista turvallisuussyistä. Jos esimerkiksi lähetetyt arvot ovat aktiivisia JavaScript tai SQL Injection koodi niissä, validointikirjasto poistaa haitallisen koodin ja tekee siitä hyödyttömän.
- Vahvista yksilölliset tietokantakentät – oletetaan, että sinulla on lomake, johon käyttäjät kirjautuvat sähköpostiosoitteella. Haluat varmistaa, että sähköpostiosoite on ainutlaatuinen. Kirjaston avulla voit helposti tarkistaa lähetetyt tiedot tietokantataulukosta ja -kentästä. Näin voit tietää, että arvo on jo otettu käyttöön.
Validointisäännöt asetetaan seuraavassa muodossa
$this->form_validation->set_rules('field','human readable field','rule',['custom message']);
TÄSSÄ,
- 'field' määritti lomakkeen kentän nimen, jonka kirjasto vahvistaa
- 'human readable field' määrittää tarkistettavan kentän ihmisen luettavissa olevan muodon. Tämä näytetään takaisin käyttäjälle, kun virhe tapahtuu.
- "sääntö" määrittää sovellettavan vahvistussäännön, kuten pakollisen, numeerisen, tarkista, onko vähimmäispituus… jne.
- ['mukautettu viesti'] on valinnainen, ja sitä voidaan käyttää mukautetun vahvistusviestin asettamiseen, joka näytetään, kun vahvistussääntö epäonnistuu.
Seuraavassa on CodeIgniter-esimerkissä lähetettävä lomake yhteyshenkilön nimen vahvistamiseksi
$this->form_validation->set_rules('contact_number', 'Contact Number', 'required');
TÄSSÄ,
- Yllä oleva koodi tarkistaa, onko kenttä contact_number syötetty. Jos sitä ei ole asetettu, palauttaa virheilmoituksen, jonka mukaan Yhteystiedot-kenttä on pakollinen.
Suorittaaksemme vahvistuksen asetettujen sääntöjen mukaisesti käytämme seuraavaa vahvistuskirjaston toimintoa
$this->form_validation->run()
Jos yllä oleva koodi palauttaa epätosi, yksi tai useampi asetettu sääntö on epäonnistunut. Jos se palauttaa tosi, kaikki vahvistussäännöt ovat läpäisseet ja voit jatkaa toimenpiteitä.
Katsotaanpa lisää esimerkkejä validointisäännöistä. Oletetaan, että haluat vahvistaa joitakin kenttiä, joissa on yhteyshenkilön nimi, numero ja sähköpostiosoite, voit käyttää seuraavaa koodia suorittaaksesi sen.
$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);
TÄSSÄ,
- Yllä olevassa CodeIgniter-esimerkissä sähköpostivahvistuksessa tarjoamme joukon kenttiä säännöillä kirjaston set_rules-funktiolle. Tämä helpottaa joidenkin kenttien vahvistamista.
Ainutlaatuinen validointi
Jos haluamme vahvistaa yhteysnumeron varmistaaksemme, että emme tallenna samaa numeroa kahdesti, voimme käyttää seuraavaa sääntöä.
$this->form_validation->set_rules('contact_number', 'Contact Number','required|is_unique[contacts.contact_number]');
TÄSSÄ,
- | käytetään yhdistämään useita sääntöjä
- on_ainutlaatuinen[yhteystiedot.yhteyshenkilön_numero] tarkistaa, onko yhteyshenkilön_numero yksilöllinen arvo tietokantataulukon yhteyshenkilöiden yhteyshenkilön_numero-kentän arvoihin verrattuna.
Näytetään lomakkeen vahvistusvirheilmoitukset
Jos lomakkeen käsittelyn aikana tapahtuu virhe, voit käyttää seuraavaa koodia näyttääksesi tapahtuneet vahvistusvirheet
<?php echo validation_errors(); ?>
TÄSSÄ,
- Yllä oleva funktio palauttaa kaikki tapahtuneet virheet.
Lähetettyjen lomaketietojen täyttäminen: Sticky Forms
Joissakin lomakkeissa on useita kenttiä, ja jos on tapahtunut virhe, haluat varmistaa, että oikein lisätyt tiedot säilyvät. Validointikirjastolla on mekanismeja tämän toteuttamiseksi. Teemme sen käyttämällä seuraavaa koodia.
<?php echo set_value('field_name'); ?>
TÄSSÄ,
- Yllä oleva koodi näyttää käyttäjän syöttämän syötteen.
Täydellisen viiteoppaan validointikirjaston alla olevista menetelmistä löydät CodeIgniterin virallisen käyttöoppaan API-dokumentaatiosta.
CodeIgniter-lomakkeen vahvistusesimerkki
Näiden opetusohjelmien aikana olemme lisänneet koodia opetusohjelmaprojektiimme, joka on yhteystietojen hallintasovellus. Tässä osiossa lataamme validointikirjaston ja katsomme, kuinka voimme käyttää sitä käytännössä todellisen esimerkkisovelluksen avulla.
Muokkaa reittikoodia seuraavasti sisällyttääksesi tallennusmenetelmän
$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';
Ladataan nyt lomakkeen tarkistuskirjasto Yhteystiedot-ohjaimeen ja asetetaan joitain vahvistussääntöjä.
Muokkaa koodia alla olevan lomakkeen vahvistuksen mukaisesti CodeIgniter-esimerkissä:
<?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');
}
}
TÄSSÄ,
- $rules = array(…) sets määrittää validointisäännöt
- $this->form_validation->set_regulations($regulation); asettaa validointisäännöt
- if ($this->form_validation->run() == FALSE) {…} suorittaa vahvistussäännöt ja jos ne epäonnistuvat, lomake näytetään uudelleen vahvistusvirheillä. Jos vahvistus läpäisee, ohjaamme yksinkertaisesti yhteystietoluettelosivulle. Normaalioloissa kirjoitimme tiedot tietokantaan. Teemme sen seuraavissa opetusohjelmissa, kun tarkastelemme tietokannat.
Muokkaa luomisnäkymää application/contacts/create.php-koodissa alla olevan CodeIgniter-vahvistusesimerkin mukaisesti:
<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>
TÄSSÄ,
- Näytämme virheet, jotka tapahtuvat vahvistusprosessin aikana
- asettaa aiemmin määritetyn arvon, jos sellainen on
Sinun on ladattava seuraava URL-osoite verkkoselaimeen. Napsauta sitten Luo yhteystieto syöttämättä arvoja
Yhteenveto
- Lomakkeet tarjoavat käyttäjille tavan olla vuorovaikutuksessa sovelluksen kanssa ja lähettää tietoja.
- HTML on hienoa, se on helppo ymmärtää ja kirjoittaa, mutta CodeIgniter tekee asioista entistä yksinkertaisempaa. CodeIgniterissä on sisäänrakennetut toiminnot HTML-lomakkeiden luomiseen.
- Validointi on erittäin tärkeä rooli lomakkeiden tietojen käsittelyssä.
- Tässä opetusohjelmassa olemme nähneet tärkeimmät validointistrategiat ja niiden edut ja haitat. Opimme myös asettamaan validointisääntöjä ja poistamaan virheilmoituksia CodeIgniterin sisäänrakennetun validointikirjaston avulla. Olemme päättäneet oppitunnin toteuttamalla saadut tiedot käytännön sovelluksessa.


