Wprowadzenie do walidacji ograniczeń HTML5
Interaktywnych stron internetowych i aplikacji nie można sobie wyobrazić bez formularzy, które umożliwiają nam połączyć się z naszymi użytkownikami, i do uzyskać dane potrzebujemy w celu zapewnienia płynnych transakcji z nimi. Potrzebujemy poprawne dane użytkownika, jednak musimy ją zdobyć w taki sposób, że nie frustruje naszych użytkowników za dużo.
Chociaż możemy poprawić użyteczność naszych formularzy dzięki inteligentnie dobranym wzorcom projektowym UX, HTML5 ma również natywny mechanizm walidacji ograniczeń, który pozwala nam łap błędy wejściowe bezpośrednio w interfejsie.
W tym poście skupimy się na sprawdzanie ograniczeń za pomocą przeglądarki, i przyjrzyj się, w jaki sposób deweloperzy frontendu mogą zabezpieczyć poprawne dane użytkownika za pomocą HTML5.
Dlaczego potrzebujemy walidacji danych wejściowych od frontu?
Sprawdzanie poprawności danych wejściowych ma dwa główne cele. Treść, którą otrzymujemy, musi być:
1. Przydatne
Potrzebujemy użyteczne dane, z którymi możemy pracować. Musimy wprowadzić ludzi realistyczne dane we właściwym formacie. Na przykład nikt, kto żyje dzisiaj, nie urodził się 200 lat temu. Pobieranie takich danych może na początku wydawać się zabawne, ale na dłuższą metę jest denerwujące i wypełnia naszą bazę danych niepotrzebnymi danymi.
2. Zabezpiecz
W odniesieniu do bezpieczeństwa oznacza to, że musimy zapobiec wstrzyknięciu złośliwej zawartości - celowe lub przypadkowe.
Przydatność (uzyskiwanie rozsądnych danych) można osiągnąć tylko po stronie klienta, zespół zaplecza nie może za wiele pomóc. Osiągnąć bezpieczeństwo, deweloperzy frontend i backend muszą ze sobą współpracować.
Jeśli deweloperzy frontendów poprawnie sprawdzają poprawność danych wejściowych po stronie klienta, zespół zaplecza będzie musiał radzić sobie ze znacznie mniej lukami. Hackowanie (strona) często pociąga za sobą przesyłanie dodatkowych danych, lub dane w złym formacie. Programiści mogą walczyć z takimi lukami bezpieczeństwa, z powodzeniem walczyć z frontonu.
Na przykład ten przewodnik bezpieczeństwa PHP zaleca sprawdzenie wszystkiego, co możemy po stronie klienta. Podkreślają znaczenie walidacji frontendowej, podając wiele przykładów, takich jak:
„Sprawdzanie poprawności danych wejściowych działa najlepiej przy skrajnie ograniczonych wartościach, np. Gdy coś musi być liczbą całkowitą lub łańcuchem alfanumerycznym lub adresem URL HTTP”.
W walidacji danych wejściowych naszym zadaniem jest nakładają rozsądne ograniczenia na wejściu użytkownika. Funkcja walidacji ograniczeń HTML5 zapewnia nam odpowiednie środki.
Walidacja ograniczeń HTML5
Przed HTML5 programiści frontendu byli ograniczeni sprawdzanie poprawności danych wejściowych użytkownika za pomocą JavaScript, co było żmudnym i podatnym na błędy procesem. Aby poprawić walidację formularzy po stronie klienta, HTML5 wprowadził walidacja ograniczenia algorytm działający w nowoczesnych przeglądarkach i sprawdza ważność przesłanych danych wejściowych.
Aby dokonać oceny, algorytm używa atrybuty walidacyjne elementów wejściowych, Jak na przykład ,
, i
. Jeśli chcesz wiedzieć, jak sprawdzanie poprawności odbywa się krok po kroku w przeglądarce, sprawdź dokument WhatWG.
Dzięki funkcji sprawdzania ograniczeń HTML5 możemy wykonać wszystko standardowe zadania sprawdzania poprawności danych wejściowych po stronie klienta bez JavaScript, wyłącznie z HTML5.
Aby wykonać bardziej złożone zadania związane z walidacją, HTML5 zapewnia nam Interfejs JavaScript do sprawdzania poprawności ograniczeń możemy użyć do skonfigurowania naszych niestandardowych skryptów walidacyjnych.
Sprawdź poprawność za pomocą semantycznych typów danych wejściowych
Wprowadzono HTML5 typy danych semantycznych do tego - oprócz wskazania znaczenia elementu dla aplikacji użytkownika - można również wykorzystać Sprawdź poprawność danych wprowadzonych przez użytkownika ograniczając użytkowników do określonego formatu wejściowego.
Poza typami danych wejściowych, które już istniały przed HTML5 (tekst
, hasło
, Zatwierdź
, nastawić
, radio
, pole wyboru
, przycisk
, ukryty
), możemy również użyć następujących semantyczne typy wejściowe HTML5: e-mail
,tel
,url
,numer
,czas
,data
,datetime
,datetime-local
, miesiąc
,tydzień
, zasięg
, Szukaj
,kolor
.
Możemy bezpiecznie używać typów wejściowych HTML5 ze starszymi przeglądarkami, ponieważ będą się zachowywać jak pole w przeglądarkach, które ich nie obsługują.
Zobaczmy, co się stanie, gdy użytkownik wprowadzi zły typ wejścia. Załóżmy, że utworzyliśmy pole wprowadzania wiadomości e-mail z następującym kodem:
Gdy użytkownik wpisze ciąg, który nie używa formatu e-mail, algorytm sprawdzania ograniczenia nie przesyła formularza, i zwraca komunikat o błędzie:
Ta sama reguła dotyczy również innych typów danych wejściowych, na przykład dla type = "url"
użytkownicy mogą przesyłać tylko dane wejściowe zgodne z formatem URL (zaczyna się od protokołu, takiego jak http: //
lub ftp: //
).
Niektóre typy wejść używają tego projektu nie pozwala nawet użytkownikom na wprowadzenie niewłaściwego formatu wejściowego, na przykład kolor
i zasięg
.
Jeśli użyjemy kolor
typ wejścia użytkownik jest ograniczony do wybrania koloru z próbnika kolorów lub pozostania z domyślną czernią. Pole wprowadzania to ograniczony przez projekt, dlatego nie pozostawia wiele szans na błąd użytkownika.
Kiedy jest to właściwe, warto rozważyć użycie Znacznik HTML, który działa podobnie do tych typów danych wejściowych z ograniczeniami; pozwala użytkownikom wybrać z listy rozwijanej.
Użyj atrybutów walidacyjnych HTML5
Korzystanie z semantycznych typów danych wejściowych określa pewne ograniczenia dotyczące tego, co użytkownicy mogą przesyłać, ale w wielu przypadkach chcemy pójść trochę dalej. To wtedy atrybuty związane z walidacją z tag może nam pomóc.
Atrybuty związane z walidacją należą do pewnych typów danych wejściowych (nie można ich używać na wszystko typy), na które nakładają dalsze ograniczenia.
1. wymagany
za uzyskanie prawidłowych danych wejściowych
The wymagany
atrybut jest najbardziej znanym atrybutem sprawdzania poprawności HTML. To jest atrybut boolean co oznacza to nie przyjmuje żadnej wartości, po prostu musimy umieścić go w środku tag, jeśli chcemy go użyć:
Jeśli użytkownik zapomni wprowadzić wartość do wymaganego pola wejściowego, przeglądarka zwraca komunikat o błędzie który ostrzega ich, aby wypełnili pole, a oni nie mogę przesłać formularza dopóki nie podadzą poprawnych danych wejściowych. Dlatego zawsze ważne jest zaznacz wizualnie wymagane pola dla użytkowników.
The wymagany
atrybut może być używane razem z następującymi typami danych wejściowych: tekst
, Szukaj
, url
, tel
, e-mail
, hasło
, data
, datetime
, datetime-local
, miesiąc
, tydzień
,czas
, numer
, pole wyboru
, radio
, plik
, plus z i
Tagi HTML.
2. min
, max
i krok
do sprawdzania poprawności numeru
The min
, max
i krok
atrybuty umożliwiają nam umieść ograniczenia w polach wprowadzania liczb. Mogą być używane razem z zasięg
, numer
, data
, miesiąc
, tydzień
, datetime
, datetime-local
, i czas
typy wejść.
The min
i max
atrybuty zapewniają świetny sposób na łatwe wykluczyć nieuzasadnione dane. Na przykład poniższy przykład zmusza użytkowników do przedstawienia wieku od 18 do 120 lat.
Gdy algorytm sprawdzania ograniczenia wpada na dane wejściowe użytkownika mniejsze niż min
, lub większy niż max
wartość uniemożliwia dotarcie do zaplecza i zwraca komunikat o błędzie.
The krok
atrybut określa interwał liczbowy między prawnymi wartościami liczbowego pola wprowadzania. Na przykład, jeśli chcemy, aby użytkownicy wybierali tylko z lat przestępnych, możemy dodać step = "4"
przypisać pole. W poniższym przykładzie użyłem numer
typ wejścia, ponieważ nie ma type = "year"
w HTML5.
Dzięki wcześniej ustalonym ograniczeniom użytkownicy mogą wybierać tylko z lat przestępnych między 1972 a 2016 rokiem, jeśli używają małej strzałki w górę, która jest dołączona do numer
typ wejścia. Mogą również wpisać wartość ręcznie w polu wejściowym, ale w przypadku, gdy nie spełnia ona ograniczeń, przeglądarka zwróci komunikat o błędzie.
3. maksymalna długość
do sprawdzania długości tekstu
The maksymalna długość
atrybut umożliwia ustaw maksymalną długość znaku dla pól tekstowych. Może być używany razem z tekst
, Szukaj
, url
, tel
, e-mail
i hasło
typy danych wejściowych i Tag HTML.
The maksymalna długość
atrybut może być doskonałym rozwiązaniem dla pól z numerami telefonów, które nie mogą mieć więcej niż określoną liczbę znaków, lub dla formularzy kontaktowych, w których nie chcemy, aby użytkownicy pisali więcej niż określoną długość.
Fragment kodu poniżej pokazuje przykład dla tego ostatniego, ogranicza wiadomości użytkownika do 500 znaków.
The maksymalna długość
atrybut nie zwraca komunikatu o błędzie, ale przeglądarka po prostu nie pozwala użytkownikom wpisywać więcej niż podany numer znaku. Dlatego tak ważne jest informować użytkowników o ograniczeniu, w przeciwnym razie nie zrozumieją, dlaczego nie mogą kontynuować pisania.
4. wzór
do walidacji Regex
The wzór
atrybut pozwala nam użyj wyrażeń regularnych w naszym procesie sprawdzania poprawności danych wejściowych. Wyrażenie regularne to a predefiniowany zestaw znaków które tworzą pewien wzór. Możemy go użyć do wyszukiwania ciągów zgodnych z wzorcem lub do wymuszenia określonego formatu zdefiniowanego przez wzorzec.
Z wzór
Atrybut, który możemy zrobić w drugim - ogranicza użytkowników do przesyłania ich danych wejściowych w formacie pasuje do podanego wyrażenia regularnego.
The wzór
atrybut ma wiele przypadków użycia, ale może być szczególnie przydatny, gdy chcemy Sprawdź poprawność pola hasła.
Poniższy przykład wymaga od użytkowników wprowadzenia hasła o długości co najmniej 8 znaków i co najmniej jednej litery i jednego numeru (źródło wyrażenia regularnego, którego użyłem).
Jeszcze kilka rzeczy
W tym artykule przyjrzeliśmy się, jak korzystać z sprawdzanie poprawności formularza przez przeglądarkę zapewniony przez natywny algorytm walidacji ograniczeń HTML5. Do tworzenia naszych niestandardowych skryptów walidacyjnych musimy użyć API walidacji ograniczeń, które może być kolejnym krokiem w doskonaleniu umiejętności walidacji formularza.
Formularze HTML5 są dostępne za pomocą technologii wspomagających, więc niekoniecznie musimy korzystać z wymagane aria
Atrybut ARIA do oznaczania wymaganych pól wejściowych dla czytników ekranu. Jednak nadal może być przydatne dodanie obsługi dostępności dla starszych przeglądarek. Możliwe jest również zrezygnować z walidacji ograniczeń dodając novalidate
atrybut boolean do element.