Intro į HTML5 suvaržymo patvirtinimą
Interaktyvių svetainių ir programų negalima įsivaizduoti be formų, kurios leistų mums susisiekite su mūsų naudotojais, ir gauti duomenis mums reikia, kad būtų užtikrintas sklandus sandoris su jais. Mums reikia galiojantis naudotojo įvestis, tačiau mes turime tai įgyti tokiu būdu netrukdo mūsų vartotojai per daug.
Nors galime patobulinti mūsų formų naudingumą išmaniai pasirinktais UX dizaino modeliais, HTML5 taip pat turi vietinį suvaržymo patvirtinimo mechanizmą, kuris leidžia mums sugauti įvesties klaidas tiesiai į priekį.
Šiame pranešime daugiausia dėmesio skirsime naršyklės pateikto suvaržymo patvirtinimas, ir pažiūrėkite, kaip gali „frontend“ kūrėjai saugi vartotojo įvestis naudojant HTML5.
Kodėl mums reikia Front-End Input Validation
Įvesties patvirtinimas turi du pagrindinius tikslus. Turimas turinys turi būti:
1. Naudinga
Mums reikia naudingi duomenys, su kuriais galime dirbti. Turime įvesti žmones realistiškus duomenis tinkamu formatu. Pavyzdžiui, niekas, kuris šiandien gyvas, gimė prieš 200 metų. Kaip gauti tokius duomenis, iš pradžių gali atrodyti juokinga, bet ilgainiui tai erzina, o mūsų duomenų bazėje gyvena nenaudingi duomenys.
2. Saugoma
Kalbant apie saugumą, tai reiškia, kad turime užkirsti kelią kenkėjiškam turiniui - tyčia ar atsitiktinai.
Galima pasiekti naudingumą (gauti pagrįstus duomenis) tik kliento pusėje, „backend“ komanda negali padėti per daug. Norėdami pasiekti saugumą, priekiniai ir „backend“ kūrėjai turi dirbti kartu.
Jei Frontend kūrėjai tinkamai patvirtina įvestį kliento pusėje, „backend“ komanda turės susidoroti su daug mažiau pažeidžiamumu. Daužimas (svetainė) dažnai reiškia pateikti papildomus duomenis, arba netinkamo formato duomenys. Kūrėjai gali kovoti su tokiomis saugumo skylėmis, sėkmingai kovoti nuo priekinės dalies.
Pavyzdžiui, šis PHP saugos vadovas rekomenduoja patikrinti viską, ką galime kliento pusėje. Jie pabrėžia, kaip svarbu, kad įvesties įvedimas būtų patvirtintas daugeliu pavyzdžių, pavyzdžiui:
„Įvesties patvirtinimas geriausiai veikia su labai ribotomis reikšmėmis, pvz., Kai kažkas turi būti sveikasis skaičius, arba raidinė skaitmeninė eilutė arba HTTP URL.“
Frontend įvesties patvirtinime mūsų užduotis yra nustatyti pagrįstus suvaržymus vartotojo įvesties. HTML5 apribojimo patvirtinimo funkcija suteikia mums galimybę tai padaryti.
HTML5 apribojimų patvirtinimas
Prieš HTML5, „Frontend“ kūrėjai apsiribojo vartotojo įvesties patvirtinimas su „JavaScript“, kuris buvo varginantis ir klaidingas procesas. Norėdami pagerinti kliento pusės formos patvirtinimą, HTML5 įdiegė a apribojimo patvirtinimas algoritmas, kuris veikia šiuolaikinėse naršyklėse, ir. \ t patikrina pateiktos informacijos teisingumą.
Įvertinimui atlikti algoritmas naudoja su įėjimu susijusių elementų atributai, toks kaip ,
, ir
. Jei norite žinoti, kaip apribojimai patvirtinami naršyklėje, patikrinkite šį WhatWG doc.
HTML5 suvaržymo patvirtinimo funkcijos dėka galime atlikti visus standartinės įvesties patikros užduotys kliento pusėje be „JavaScript“, tik su HTML5.
Norėdami atlikti sudėtingesnius su patvirtinimu susijusius uždavinius, HTML5 suteikia mums a Apribojimų patvirtinimo „JavaScript“ API galime naudoti, kad nustatytume savo pasirinktinius patvirtinimo scenarijus.
Patvirtinkite su semantiniais įvesties tipais
Įdiegtas HTML5 semantinių įvesties tipų taip pat gali būti panaudota, be to, nurodant elemento reikšmę naudotojų agentams patvirtinti naudotojo įvestį ribojant vartotojus tam tikru įvesties formatu.
Be įvesties tipų, kurie jau egzistavo prieš HTML5 (tekstą
, Slaptažodis
, Pateikti
, atstatyti
, radijo
, žymimasis langelis
, mygtukas
, paslėpta
), taip pat galime naudoti šiuos dalykus semantiniai HTML5 įvesties tipai: el
,tel
,URL
,numeris
,laikas
,data
,datetime
,datetime-local
, mėnesį
,savaitę
, diapazonas
, Paieška
,spalva
.
Mes galime saugiai naudoti HTML5 įvesties tipus su senesnėmis naršyklėmis, nes jos elgsis kaip naršyklėse, kurios jų nepalaiko.
Pažiūrėkime, kas atsitiks, kai vartotojas įves neteisingą įvesties tipą. Pasakykite, kad sukūrėme el. Pašto įvedimo lauką su šiuo kodu:
Kai vartotojas įveda eilutę, kuri nenaudoja el. Pašto formato, apribojimo patvirtinimo algoritmas nepateikia formos, ir grąžina klaidos pranešimą:
Ta pati taisyklė taikoma ir kitiems įvesties tipams, pavyzdžiui, type = "url"
vartotojai gali pateikti tik įvestį, kuris atitinka URL formatą (prasideda protokolu, pvz., http: //
arba ftp: //
).
Kai kurie įvesties tipai naudoja dizainą net neleidžia vartotojams įvesti neteisingo įvesties formato, pavyzdžiui spalva
ir diapazonas
.
Jei mes naudojame spalva
įvesties tipas, vartotojas yra pasirengęs pasirinkti spalvą iš spalvų rinkiklio arba likti su juoda juoda spalva. Įvesties laukas yra dizainas, todėl jis nepalieka daug galimybių naudotojo klaidoms.
Kai tai tikslinga, verta apsvarstyti galimybę naudoti HTML žyma, kuri veikia panašiai kaip į šiuos apribojimus pagal įvesties tipus; jis leidžia vartotojams pasirinkti iš išskleidžiamojo sąrašo.
Naudokite HTML5 patvirtinimo atributus
Semantinių įvesties tipų naudojimas nustato tam tikrus suvaržymus, kuriuos vartotojai gali pateikti, tačiau daugeliu atvejų mes norime šiek tiek toliau eiti. Tai yra tada, kai su patvirtinimu susiję atributai iš žyma gali mums padėti.
Su patvirtinimu susiję atributai priklauso tam tikriems įvesties tipams (jie negali būti naudojami visi tipai), kuriais jie nustato papildomus apribojimus.
1. reikalaujama
visomis priemonėmis gauti teisingą įvestį
The reikalaujama
atributas yra labiausiai žinomas HTML patvirtinimo atributas. Tai yra Būlio atributas tai reiškia neturi jokios vertės, mes tiesiog turime jį patalpinti žyma, jei norime ją naudoti:
Jei naudotojas pamiršo įvesti vertę į reikiamą įvesties lauką, naršyklė grąžina klaidos pranešimą tai įspėja juos užpildyti lauką, ir jie negali pateikti formos kol jie pateiks galiojančią informaciją. Štai kodėl visada svarbu vizualiai pažymėkite naudotojams reikalingus laukus.
The reikalaujama
atributas gali būti naudojami kartu su šiais įvesties tipais: tekstą
, Paieška
, URL
, tel
, el
, Slaptažodis
, data
, datetime
, datetime-local
, mėnesį
, savaitę
,laikas
, numeris
, žymimasis langelis
, radijo
, failą
, plius su ir
HTML žymės.
2. min
, maks
ir žingsnis
skaičiaus patvirtinimui
The min
, maks
ir žingsnis
atributai leidžia mums apriboti skaičių įvesties laukus. Jie gali būti naudojami kartu su diapazonas
, numeris
, data
, mėnesį
, savaitę
, datetime
, datetime-local
, ir laikas
įvesties tipai.
The min
ir maks
atributai yra puikus būdas lengvai neįtraukti nepagrįstų duomenų. Pavyzdžiui, toliau pateikiamas pavyzdys verčia vartotojus pateikti amžių nuo 18 iki 120 metų.
Kai suvaržymo patvirtinimo algoritmas susitraukia į vartotojo įvestį, mažesnę nei min
, arba didesnis nei maks
reikšmė, ji neleidžia jam pasiekti backend ir grąžina klaidos pranešimą.
The žingsnis
atributas nurodo skaitinį intervalą tarp skaitmeninio įvesties lauko teisinių vertybių. Pavyzdžiui, jei norime, kad vartotojai rinktųsi tik iš šuolių metų, galime pridėti step = "4"
atributas laukui. Toliau pateiktame pavyzdyje naudoju numeris
įvesties tipas, nes nėra type = "year"
HTML5.
Naudodamiesi iš anksto nustatytais apribojimais, vartotojai gali pasirinkti tik nuo 1972 m. Iki 2016 m. numeris
įvesties tipas. Jie taip pat gali įvesti vertę rankiniu būdu į įvesties lauką, tačiau jei jis neatitinka apribojimų, naršyklė grąžins klaidos pranešimą.
3. Didžiausias ilgis
teksto ilgio patvirtinimui
The Didžiausias ilgis
atributas leidžia nustatyti maksimalų simbolių ilgį teksto įvesties laukams. Jis gali būti naudojamas kartu su tekstą
, Paieška
, URL
, tel
, el
ir Slaptažodis
įvesties tipus ir HTML žyma.
The Didžiausias ilgis
atributas gali būti puikus sprendimas telefonų numerių laukams, kuriuose negali būti daugiau nei tam tikro simbolių skaičiaus, arba kontaktinių formų, kuriose nenorime, kad vartotojai rašytų daugiau nei tam tikrą ilgį.
Toliau pateikiamas kodo fragmentas rodo pastarojo pavyzdį, jis apriboja vartotojo pranešimus iki 500 simbolių.
The Didžiausias ilgis
atributas nepateikia klaidos pranešimo, tačiau naršyklė paprasčiausiai neleidžia vartotojams įvesti daugiau nei nurodytas simbolių skaičius. Štai kodėl tai labai svarbu informuoti vartotojus apie suvaržymą, kitaip jie nesupranta, kodėl jie negali toliau rašyti.
4. modelį
už „Regex“ patvirtinimą
The modelį
atributas leidžia mums naudoti reguliarias išraiškas mūsų įvesties patvirtinimo procese. Įprastinė išraiška yra a iš anksto nustatytą simbolių rinkinį tai sudaro tam tikrą modelį. Mes galime jį naudoti ieškodami eilutes, kurios seka modelį, arba tam tikrą modelio nustatytą formatą.
Su modelį
atributas, kurį galime padaryti pastarąjį - apriboti vartotojus pateikti savo įvestį tokiu formatu atitinka įprastą išraišką.
The modelį
atributas turi daug naudos atvejų, tačiau jis gali būti ypač naudingas, kai norime patvirtinti slaptažodžio lauką.
Toliau pateiktame pavyzdyje reikalaujama, kad naudotojai įvestų slaptažodį, kuris yra mažiausiai 8 simboliai, ir turi bent vieną raidę ir vieną numerį (naudojamo regex šaltinis).
Dar keletas dalykų
Šiame straipsnyje mes apžvelgėme, kaip pasinaudoti pateikiamas naršyklės formos patvirtinimas pateikiamas HTML5 gimtojo suvaržymo patvirtinimo algoritmas. Kad galėtume sukurti priskirtus patvirtinimo scenarijus, turime naudoti apribojimo patvirtinimo API, kuri gali būti kitas žingsnis tobulinant formų patvirtinimo įgūdžius.
HTML5 formos yra prieinamos pagalbinėmis technologijomis, todėl nebūtinai turime naudoti arija
ARIA atributas, skirtas pažymėti reikiamus ekrano skaitytuvų įvesties laukus. Tačiau vis dar gali būti naudinga pridėti prieinamumo palaikymą senesnėms naršyklėms. Tai taip pat įmanoma atsisakyti apribojimų patvirtinimo pridedant novalidatas
Būlio atributas elementas.