Intro Into HTML5 Constraint Validation
Az interaktív weboldalak és alkalmazások nem képzelhetők el olyan formák nélkül, amelyek lehetővé teszik számunkra kapcsolatot a felhasználókkal, és a az adatokat szükségünk van a velük való zökkenőmentes tranzakciók biztosításához. Szükségünk van rá érvényes felhasználói bemenet, ugyanakkor meg kell szereznünk azt oly módon nem zavarja túl sokat használunk.
Bár az intelligensen választott UX tervezési mintákkal javíthatjuk formáink használhatóságát, a HTML5-nek van egy natív mechanizmusa a kényszer validálására, amely lehetővé teszi számunkra, hogy a bemeneti hibák fogása közvetlenül az elülső oldalon.
Ebben a bejegyzésben összpontosítunk böngésző által biztosított korlátozási érvényesítés, és nézd meg, hogyan lehet a frontend fejlesztők biztonságos felhasználói bevitel biztosítása a HTML5 használatával.
Miért van szükség a végfelhasználói bevitel ellenőrzésére
Bemeneti érvényesítés két fő célja van. A tartalomnak:
1. Hasznos
Szükségünk van használható adatok, amelyekkel együtt dolgozhatunk. Meg kell tennünk az embereket reális adatok a megfelelő formátumban. Például senki, aki ma életben van, 200 évvel ezelőtt született. Az ilyen adatok megszerzése kezdetben viccesnek tűnhet, de hosszú távon bosszantó, és az adatbázisunkat haszontalan adatokkal töltik fel.
2. Biztonságos
A biztonságra hivatkozva ez azt jelenti, hogy szükségünk van rá megakadályozzák a rosszindulatú tartalom befecskendezését - szándékos vagy véletlenszerű.
Hasznos (ésszerű adatok megszerzése) érhető el csak az ügyfél oldalán, a backend csapat nem tud túl sokat segíteni ezzel. Megvalósítani Biztonság, az elülső és a hátsó fejlesztőknek együtt kell működniük.
Ha a frontend fejlesztők megfelelően validálják az ügyféloldali bemenetet, a A backend csapatnak sokkal kevesebb sebezhetőséggel kell foglalkoznia. A hackelés (webhely) gyakran magában foglalja további adatok benyújtása, vagy adatok rossz formátumban. A fejlesztők harcolhatnak az ilyen biztonsági lyukakkal, sikeresen küzdhetnek a front-end-től.
Például ez a PHP biztonsági útmutató azt javasolja, hogy ellenőrizze mindent, amit az ügyféloldalon tudunk. Hangsúlyozzák a frontend bemeneti érvényesítésének fontosságát sok példával, például:
Msgstr "" "A beviteli validálás a leginkább rendkívül korlátozott értékekkel működik, például amikor valaminek egésznek kell lennie, vagy egy alfanumerikus karakterlánc, vagy egy HTTP URL."
A frontend bemeneti érvényesítésnél a feladatunk az, hogy ésszerű korlátozásokat szabjon meg a felhasználói bemeneten. A HTML5 korlátozási érvényesítési szolgáltatása biztosítja az ehhez szükséges eszközöket.
HTML5 korlátozási érvényesítés
A HTML5 előtt a frontend fejlesztők csak a felhasználói bevitel validálása JavaScript segítségével, ez egy fárasztó és hibára hajlamos folyamat volt. Az ügyféloldali űrlap érvényesítésének javítása érdekében a HTML5 bevezette a korlátozás érvényesítése algoritmus, amely modern böngészőkben fut, és. \ t ellenőrzi a benyújtott bemenet érvényességét.
Az értékeléshez az algoritmus a a bemeneti elemek érvényesítési jellemzői, mint például ,
, és
. Ha szeretné tudni, hogy a böngészőben a megszorítások érvényesítése lépésről lépésre történik, nézd meg ezt a WhatWG doc.
A HTML5 kényszer validálási funkciójának köszönhetően mindent végrehajthatunk szabványos bemeneti érvényesítési feladatok az ügyfél oldalán JavaScript nélkül, kizárólag HTML5-tel.
A bonyolultabb validálási feladatok elvégzéséhez a HTML5 a Korlátozási érvényesítési JavaScript API az egyéni érvényesítési parancsfájlok beállításához használhatjuk.
Érvényesítés szemantikai beviteli típusokkal
A HTML5 bevezette szemantikus bemeneti típusok hogy - a felhasználói ügynökök elemének jelentésének megjelölése mellett - szintén használható érvényesítse a felhasználói bevitelt korlátozza a felhasználókat egy bizonyos bemeneti formátumra.
A HTML5 előtt már létező beviteli típusok mellett (szöveg
, Jelszó
, beküldése
, Visszaállítás
, rádió
, négyzetet
, gomb
, rejtett
), az alábbiakat is használhatjuk szemantikus HTML5 bemeneti típusok: email
,tel
,url
,szám
,idő
,dátum
,dátum idő
,datetime helyi
, hónap
,hét
, hatótávolság
, keresés
,szín
.
A régebbi böngészőkkel biztonságosan használhatunk HTML5 bemeneti típusokat, mivel azok egy viselkedésként fognak működni böngészőkben, amelyek nem támogatják őket.
Lássuk, mi történik, ha a felhasználó rossz bemeneti típusba lép. Mondjuk, hogy létrehoztunk egy e-mail beviteli mezőt a következő kóddal:
Amikor a felhasználó egy olyan karakterláncot ír be, amely nem használ e-mail formátumot, akkor a kényszer validációs algoritmus nem nyújtja be az űrlapot, és hibaüzenetet küld:
Ugyanez a szabály vonatkozik más bemeneti típusokra is, például type = "url"
a felhasználók csak az URL formátumot követő bemenetet tudják benyújtani (egy protokollal kezdődik, mint például http: //
vagy ftp: //
).
Bizonyos bemeneti típusok terveznek nem teszi lehetővé a felhasználók számára, hogy rossz bemeneti formátumot adjanak meg, például szín
és hatótávolság
.
Ha ezt használjuk szín
A bemeneti típus a felhasználónak arra van kényszerítve, hogy a színválasztó színét választja, vagy az alapértelmezett fekete legyen. A beviteli mező a tervezés korlátozott, ezért nem hagy sok esélyt a felhasználói hibára.
Ha helyénvaló, érdemes megfontolni a használatát HTML-címke, amely hasonlóan működik az ilyen korlátozott formátumú bemeneti típusokhoz; lehetővé teszi a felhasználók számára, hogy válasszanak egy legördülő listából.
Használja a HTML5 érvényesítési attribútumait
A szemantikus beviteli típusok használata bizonyos korlátokat határoz meg a felhasználók számára, de a legtöbb esetben egy kicsit tovább akarunk menni. Ez az, amikor a érvényesítési jellemzők a a címke segíthet nekünk.
Az érvényesítéssel kapcsolatos attribútumok bizonyos beviteli típusokhoz tartoznak (ezeket nem lehet használni minden típusok), amelyekre további korlátozásokat vezetnek be.
1. kívánt
minden eszközzel érvényes bemenetet kap
A kívánt
Az attribútum a legismertebb HTML validációs attribútum. Ez egy boolean attribútum ami azt jelenti nem vesz semmilyen értéket, egyszerűen csak be kell helyeznünk címke, ha használni szeretnénk:
Ha a felhasználó elfelejtette megadni egy értéket a kívánt beviteli mezőbe, a böngésző hibaüzenetet küld amely figyelmezteti őket arra, hogy töltse ki a mezőt, és ezek nem tudja benyújtani az űrlapot addig, amíg érvényes bemenetet nem adnak meg. Ezért fontos mindig vizuálisan jelölje meg szükséges mezőket.
A kívánt
attribútum lehet az alábbi beviteli típusokkal együtt használják: szöveg
, keresés
, url
, tel
, email
, Jelszó
, dátum
, dátum idő
, datetime helyi
, hónap
, hét
,idő
, szám
, négyzetet
, rádió
, fájl
, plusz a és
HTML-címkék.
2. min
, max
és lépés
a szám érvényesítéséhez
A min
, max
és lépés
az attribútumok lehetővé teszik számunkra korlátozza a számbeviteli mezőket. Ezeket együtt lehet használni hatótávolság
, szám
, dátum
, hónap
, hét
, dátum idő
, datetime helyi
, és idő
bemeneti típusok.
A min
és max
Az attribútumok nagyszerű módja annak, hogy könnyen kizárják az indokolatlan adatokat. Például az alábbi példa arra kényszeríti a felhasználókat, hogy 18 és 120 év közötti korúak legyenek.
Amikor a kényszer validálási algoritmus a felhasználói bemenetre kisebb, mint a min
, vagy nagyobb, mint a max
értéke megakadályozza, hogy elérje a hátteret, és hibaüzenetet küld.
A lépés
tulajdonság numerikus intervallumot ad meg egy numerikus beviteli mező jogi értékei között. Például, ha azt szeretnénk, hogy a felhasználók csak ugrási évekből válasszanak, hozzáadhatjuk a lépés = "4"
attribútum a mezőre. Az alábbi példában a szám
bemeneti típus, mivel nincs type = "év"
HTML5-ben.
Az előre beállított korlátokkal a felhasználók csak az 1972 és 2016 közötti ugrási évek közül választhatnak, ha a kis felfelé mutató nyilat használják a szám
bemeneti típus. Az értékeket kézzel is beírhatják a beviteli mezőbe, de ha nem felel meg a korlátozásoknak, a böngésző hibaüzenetet küld.
3. maxlength
szöveghossz-érvényesítéshez
A maxlength
az attribútum lehetővé teszi állítsa be a maximális karakter hosszát szöveges beviteli mezőkre. Használható együtt a szöveg
, keresés
, url
, tel
, email
és Jelszó
bemeneti típusok és a HTML címke.
A maxlength
Az attribútum kiváló megoldás lehet olyan telefonszámmezőkre, amelyeknél nem lehet több, mint egy bizonyos számú karakter, vagy olyan kapcsolati űrlapok esetében, ahol nem akarjuk, hogy a felhasználók egy bizonyos hossznál többet írjanak.
Az alábbi kódrészlet az utóbbi példáját mutatja, a felhasználói üzeneteket 500 karakterre korlátozza.
A maxlength
tulajdonság nem küld hibaüzenetet, de a böngésző egyszerűen nem teszi lehetővé, hogy a felhasználók a megadott karakterszámnál többet írjanak be. Ezért döntő fontosságú tájékoztassa a felhasználókat a kényszerről, különben nem fogják megérteni, hogy miért nem tudnak folytatni a gépelést.
4. minta
a Regex validálásához
A minta
az attribútum lehetővé teszi számunkra használja a rendszeres kifejezéseket bemeneti érvényesítési folyamatunkban. A rendszeres kifejezés a előre meghatározott karakterkészlet egy bizonyos mintát alkotnak. Használhatjuk azt a karakterláncok keresésére is, amelyek követik a mintát, vagy a minta által meghatározott bizonyos formátum érvényesítésére.
A ... val minta
az utóbbit meg tudjuk csinálni - korlátozzuk a felhasználókat arra, hogy bemenetüket olyan formátumban nyújtsák be megfelel az adott rendszeres kifejezésnek.
A minta
Az attribútum számos felhasználási esetet tartalmaz, de különösen hasznos lehet, ha azt szeretnénk érvényesítse a jelszót.
Az alábbi példában a felhasználóknak legalább 8 karakter hosszú jelszót kell beírniuk, és legalább egy betűt és egy számot kell tartalmaznia (a használt regex forrása).
Még néhány dolog
Ebben a cikkben egy pillantást vetettünk arra, hogy hogyan használjuk ki a böngésző által biztosított formanyomtatvány a HTML5 natív kényszer validációs algoritmusa biztosítja. Az egyéni érvényesítési szkriptek létrehozásához a korlátozási érvényesítési API-t kell használni, amely a következő lépés a formai érvényesítési képességek finomításában.
A HTML5 formanyomtatványokat támogató technológiák érhetik el, így nem feltétlenül kell használnunk aria-köteles
ARIA attribútum a képernyőolvasók számára szükséges beviteli mezők megjelöléséhez. Azonban még mindig hasznos lehet a régebbi böngészők hozzáférhetőségének támogatása. Ez is lehetséges kizárja a korlátozás érvényesítését hozzáadásával novalidate
boolean attribútum a elem.