Ch 6 logga in med namn krävs. Säkerhet för användardata. Lösningar på problemet "Hoppsan, ett fel inträffade" på Instagram

Postat 23 oktober klockan 23:15.

Använda användarnamnsverifiering för att öka säkerheten konto

Som en ytterligare säkerhetsåtgärd förser vi dig med ett användarnamnsverifieringssystem för att förbättra kontosäkerheten på vissa EA-sidor, inklusive din EA-kontosida.

  • Observera FIFA-spelare: denna funktion krävs för att få åtkomst till FIFA Ultimate Team-servrar och partnerapplikationer.

Denna säkerhetsåtgärd är utformad för att förhindra att personer loggar in på ditt EA-konto från okända enheter utan lösenord och verifiering av ditt användarnamn. Aviseringar kommer att skickas till din mobiltelefon eller e-post som du väljer. Under användarnamnsverifieringsprocessen, tillfällig digitala koderåtkomst för varje specifik användare som krävs för att logga in på ett konto från en okänd enhet.


Aktivera användarnamnsverifiering

1. Gå till ea.com och logga in.

2. Klicka på ditt användarnamn och välj sedan "Mitt konto".

3. Välj fliken Säkerhet, där du kan hitta avsnittet Verifiering av användarnamn.

4. Klicka på Aktivera för att aktivera användarnamnsverifiering, ange din säkerhetsfråga och välj ett av alternativen: e-post, identitetsapp eller SMS för att få en verifieringskod.

  • Om du väljer alternativet " E-post” i stället för SMS, se till att e-postadressen som anges för ditt konto är en giltig och fungerande adress som du kontrollerar regelbundet för nya meddelanden.
  • En identifieringsapp för surfplattor och mobiltelefoner låter dig generera verifieringskoder på dessa enheter för att logga in på ditt konto.
  • Välj din enhetstyp från rullgardinsmenyn och ladda ner Google Authenticator för Apple- och Android-enheter eller Authenticator för enheter som använder operativ system Windows.
  • Spelare av FIFA 15 på PlayStation 3 och Xbox 360 behöver inte vidta ytterligare säkerhetsåtgärder när de verifierar sitt användarnamn med autentiseringsappen.

5. Du kommer nu att få en verifieringskod när du försöker logga in från en okänd enhet. Var 90:e dag får du en verifieringskod när du loggar in på ditt konto från betrodda enheter. På så sätt kan bara du komma åt ditt EA-konto med en unik kod.


Om det behövs kan du inaktivera verifiering av användarnamn genom att gå tillbaka till din kontohanteringssida och välja Inaktivera.*

Notera

  • *Inaktivera inte verifiering av användarnamn om du spelar FIFA Ultimate Team, annars kommer du att nekas åtkomst.
  • Se till att du också skapar och bekräftar en säkerhetsfråga och ett svar för FIFA Ultimate Team.

Konfigurera din identifieringsapp

Identifieringsapp är mest snabbt sätt verifiera din identitet säkert. Sätt upp en identifieringsapplikation på din mobilenhet för att logga in med koden den genererar för identifiering i två steg.

1. Öppna fliken Säkerhet på sidan Mitt konto och hitta avsnittet Verifiering av användarnamn.

2. Klicka på Aktivera för att aktivera användarnamnsverifiering, svara på säkerhetsfrågan, välj Identitetsprogram och klicka på Fortsätt.

3. Välj det telefonoperativsystem du behöver från rullgardinsmenyn och skanna QR-koden med ett streckkodsläsarprogram eller sök i appbutiken för din telefon efter autentisering efter lämplig applikation: Google Authenticator på Android och iOS eller Authenticator på Windows Telefon.

4. Öppna identifieringsprogrammet och välj alternativet för att lägga till ett konto manuellt.

5. Skanna QR-koden eller skriv in hemlig kod för att länka din identitetsapp till ditt EA-konto.

6. Avsluta konfigureringen av identifieringsapplikationen genom att ange koden som den genererade för ditt Electronic Arts-konto och klicka på "Aktivera användarnamnsverifiering."

När du behöver verifiera ditt användarnamn i framtiden:

1. Öppna identifieringsapplikationen.

2. Ange den sexsiffriga koden för ditt Electronic Arts-konto.

Den genererade koden är giltig under en begränsad tid. Om din nuvarande kod redan är på väg att löpa ut, vänta tills appen genererar en ny kod så att du har tillräckligt med tid att ange den.

Vad ska jag göra om jag inte kan använda den? mobiltelefon eller maila när jag behöver en kod? Är det möjligt att generera hjälpkoder?

Om din telefon, ID eller e-post inte är tillgängliga för dig, det enda sättet Logga in på EA-konto från en okänd dator - användning av assistanskoder. Se till att förvara dem på en plats som är säker och tillgänglig för dig. Du kan se och uppdatera dessa koder i ditt EA-konto under Sekretessinställningar i Origin-klienten eller online.

  • Klicka på "Säkerhet", sedan "Visa" och "Hjälpkoder".*
  • Du kan också använda funktionen "Begär en ny kod efter att ha loggat in på FIFA Ultimate Team".

*Om du får slut på supportkoder kan du skapa nya på sidan Kontohantering.

Bekräfta Kontaktinformation för att se till att koden är korrekt.

Om du har problem med verifieringskoden för ditt användarnamn, se till att din e-postadress eller ditt telefonnummer har angetts korrekt. När du använder en identifierare, se till att programmet är korrekt installerat.

  • Om du valde att skicka en kod till din e-post när du aktiverade verifieringen av ditt användarnamn, kan du kontrollera och uppdatera din e-postadress i avsnittet Om mig på din kontohanteringssida eller via Origin-klienten.
  • Om du väljer Identity App kan du använda en streckkod eller QR-kod för att skanna och söka efter koden mellan ?secret= och &.
  • Om du valde alternativet att skicka en kod via SMS när du aktiverar ditt användarnamnsverifiering, kan du kontrollera och uppdatera ditt telefonnummer i avsnittet Säkerhet på din kontohanteringssida eller via Origin-klienten.
  • Skapa eller bekräfta en säkerhetsfråga och svar.

När du har bekräftat din kontaktinformation kommer du att ha möjlighet att aktivera användarnamnsverifiering för att få en ny kod.

Varför fick jag det här formuläret?

Det finns för närvarande en brute-force-attack på din webbplats. En brute-force attack är en attack som gissar lösenord. I det här fallet väljs ett lösenord för administrationspanelen på din webbplats.

För att förhindra hackning av din webbplats och öka dess säkerhet har vi installerat ytterligare skydd.

Hur kan jag nu komma åt webbplatsens adminpanel?

Nu, när du kommer åt administrationspanelen på din webbplats (på Joomla eller WordPress), kommer ett extra fönster för att ange ditt användarnamn och lösenord att visas med inskriptionen "vänligen använd ditt lösenord för kontrollpanelen". Som inloggning måste du ange inloggningen på din värdtjänst, ser det ut som "u1234567". Lösenordet är det aktuella lösenordet för din värdtjänst.

Efter att ha klarat grundläggande HTTP-autentisering kommer du att se ett standardinloggningsfält i adminpanelen på din webbplats. Nu måste du ange webbplatsens administratörs inloggning och lösenord.

Hur HTTP Basic-autentisering fungerar

När du anger inloggningslösenordet i det grundläggande autentiseringsfönstret visas inloggningsvärdet och lösenords-hash kommer att jämföras med värdena i en speciell fil ~/etc/users, tillgänglig i din värdkontrollpanel. Innehållet i filen ser ut ungefär så här: "u1234567:dm48bspxIO3rg". Där "u1234567" är inloggningen och "dm48bspxIO3rg" är lösenords-hash(obs: endast hashen, inte själva lösenordet!). En lösenordshash är resultatet av att konvertera ett lösenord med en specifik algoritm.

När du anger ditt användarnamn och lösenord i det grundläggande autentiseringsfönstret tas det angivna lösenordet från hash och jämför med hashvärdet i filen ~/etc/users. Om värdena matchar är du autentiserad.

Jag kan inte klara grundläggande autentisering

Du anger förmodligen fel lösenord. Ange ett nytt lösenord för grundläggande autentisering:

Om du har klarat grundläggande autentisering men inte kan logga in direkt på adminpanelen på din Joomla- eller WordPress-webbplats, använd hjälpen:

Hur ökar du din webbplatss skydd mot brute-force-attacker?

Så här ökar du webbplatsens säkerhet:

  • ändra superanvändarinloggningen till en mer unik. Använd inte korta namn, det är bättre om du använder förnamnet tillsammans med efternamnet. Det finns många resurser på Internet där de mest populära inloggningarna finns samlade. Bekanta dig med dem och använd dem aldrig;
  • Ange ett komplext administratörslösenord för webbplatsen. Komplext lösenord måste innehålla stora och små bokstäver, siffror och ytterligare symboler som "* - _ # :", etc. Lösenordets längd är inte mindre än 6 tecken. Gärna 10 och uppåt.

Hur tar man bort HTTP Basic-autentiseringsformuläret?

Så här tar du bort formuläret för grundläggande HTTP-autentisering:

AuthType Basic AuthName "vänligen använd ditt kontrollpanellösenord" AuthUserFile .../users Kräv giltig användare

För att kommentera en rad, sätt en hash-symbol ("#") i början av raden, så här.

Vi behöver följande sidor:

  • Anmälningssida med anmälningsformulär
  • Kontoaktiveringssida
  • Sidan för lösenordsåterställning
  • Sidan för lösenordsåterställning

Inloggningsformuläret för webbplatsen kommer att placeras på alla sidor på webbplatsen (till exempel i rubriken).

Det här är registreringssidan vi vill ha:

Här avgör kontotypen vilken grupp vi kommer att registrera användaren i. Dessutom kommer identifieringsfältet (användarnamn) att vara e-post.

Lägg till ett utdragsanrop på sidan Registrera:

[[!Registrera? &submitVar=`register-btn` &activationResourceId=`27` &activationEmailTpl=`Email.Activation` &activationEmailSubject=`Du är registrerad på example.com` &placeholderPrefix=`reg.` &successMsg=`

Tack för din registrering. Till din e-post [[!+reg.e-post]] Ett e-postmeddelande har skickats med en länk för att aktivera ditt konto. Följ den här länken för att slutföra din registrering.
` &usernameField=`e-post` &usergroupsField=`reg_type` &customValidators=`valueIn` &validate=`användarnamn:blank, reg_type:valueIn=^Readers;Writers;Idlers ^, fullständigt namn:required:minLength=^6^, lösenord:required:minLength =^6^, password_confirm:password_confirm=^lösenord^, e-post:required:email` ]] [[!+error.message:default=`[[!$Register.Form]]`]]

Observera att alla taggar relaterade till registrering krävs Nödvändigtvis samtal uncachat. Samma regler gäller vid behandling av formulär med FormIt-kodavsnittet.

Låt oss titta på anropsparametrarna:

&submitVar=`register-btn`- anger namnattributet för taggen inmatning. Det vill säga att utdraget bara fungerar om formuläret skickas med en knapp med ett specifikt namn.

&activationResourceId=`42`- när vi ser framåt är 42 identifieraren för sidan där vi kommer att aktivera användaren.

&activationEmailTpl=`Email.Activation`- en bit med ett aktiveringsbrev, mer om det senare.

&placeholderPrefix=`reg.`- indikerar att alla platshållare, med sällsynta undantag (mer om detta senare), som skapas i det här utdraget måste börja med "reg."

&framgång Medd– ett meddelande som kommer att visas när formuläret har skickats in. Observera att den kan innehålla värden från formuläret och andra taggar. Det här meddelandet registrera dig för platshållare [[!+fel.meddelande]]. Ganska konstigt namn, och i dokumentationen för det här ögonblicket fel. Det är skrivet där [[!+reg.error.meddelande]], men av komponentkoden följer att så inte är fallet.

&usernameField=`e-post`- anger att e-postfältet kommer att användas som användarnamn.

&usergroupsField=`reg_type`- definierar ett fält som anger gruppen som den nya användaren kommer att läggas till.

&customValidators=`valueIn`- anger ytterligare validatorer som måste skapas manuellt.

&bekräfta– validatorer anges separerade med kommatecken för varje fält, och om flera validatorer krävs för ett fält, separeras de också med ett kolon. Låt oss titta på dem separat:

användarnamn:blank– en enkel skräppostfälla, det betyder att användarnamnsfältet ska lämnas tomt.

reg_type:valueIn=^Readers;Writers;Idlers^- vi begränsar de möjliga grupperna till de tre angivna. Det finns inget sådant i den initiala distributionen och onda hackare kan registrera sig till exempel under administratörsgruppen (om du inte har bytt namn på den).

fullständigt namn:required:minLength=^6^- fältet för fullständigt namn får inte vara tomt och innehålla minst 6 tecken.

lösenord:required:minLength=^6^- liknande för lösenordet.

password_confirm:password_confirm=^lösenord^- Lösenorden måste matcha.

email:required:email– e-postmeddelandet får inte vara tomt och vara ett faktiskt e-postmeddelande.

Design [[!+error.message:default=`[[!$Register.Form]]`]] visar ett meddelande om att formuläret eller en del av formuläret har skickats in om du precis har besökt sidan eller fyllt i det felaktigt.

Låt oss skapa ovanstående validator värdeIn. För att göra detta, skapa ett utdrag med namnet värdeIn och följande kod:

$valueIn = explode(";", $param); returnera in_array($värde, $värdeIn);

Nu måste du skapa en bit Registreringsformulär . I det här fallet blir det som följer (Bootstrap 3 används):

[[!+reg.error.fullname:notempty=`
[[!+reg.error.fullname]]
`]]
[[!+reg.error.email:notempty=`
[[!+reg.error.email]]
`]]
[[!+reg.error.password:notempty=`
[[!+reg.error.password]]
`]]
[[!+reg.error.password_confirm:notempty=`
[[!+reg.error.password_confirm]]
`]]

alla fält är obligatoriska

I det här formuläret kommer jag att notera några saker angående MODX:


– formuläret behandlas på samma sida som det visas på.

Ställa in värdet från de som tagits emot från formuläret så att användaren vid misslyckande inte behöver ange allt igen.

[[!+reg.error.email:notempty=`[[!+reg.error.email]]`]]– igen, i händelse av fel, kommer ett felmeddelande att visas under fältet.

– se till att ange namnet på knappen om du tidigare har ställt in egenskapen &submitVar.


Nu återstår bara att skapa en bit E-post.Aktivering med brevet som webbplatsen skickar till användaren:

Tack för din registrering! För att aktivera ditt konto, besök följande länk:

Aktivera ditt konto på Example.Com

Efter aktivering kommer du att kunna logga in med din e-postadress och ditt lösenord:

Logga in:[[+e-post]]

Lösenord:[[+lösenord]]


Här kan du använda platshållare med formulärfältnamn. Observera att de är skrivna utan "reg." En platshållare läggs också till [[+confirmUrl]], där aktiveringslänken redan har genererats, behöver du inte ens göra någonting.


Pricken över i: Konsten att registrera ett nytt konto med hjälp av komponenten Logga in en aktiveringssida kommer att skapas. Vi använder en tom mall för den här sidan, och i sidinnehållet behöver du bara ange ett tagganrop:

[[!BekräftaRegister? &redirectTo=`1`]]

där 1 är identifieraren för sidan som användaren kommer att omdirigeras till om aktiveringen lyckas. I det här fallet kommer han redan att vara inloggad.


Låt oss börja ställa in inloggningen till användarprofilen. Auktoriseringsformuläret kommer att vara enkelt:

Låt oss lägga till det genom att kalla det på rätt plats:

[[!Logga in? &loginTpl=`Auth.Login` &logoutTpl=`Auth.Logout` &errTpl=`Auth.Login.Error` &actionKey=`action` &loginKey=`login` &redirectToPrior=`1` &logoutResourceId=`1`]]

Här anger vi en bit med inloggningsformuläret ritat ovan ( &loginTpl=`Auth.Login`), en bit med en kod som visas för behöriga användare ( &logoutTpl=`Auth.Logout`), en liten bit med inloggningsfelutgång ( &errTpl=`Auth.Login.Error`). Följande är parametrarna:

&actionKey=`action` Och &loginKey=`login`- huvudidentifierare för bearbetning av begäran. Den första betyder namnet på parametern i POST-begäran, och den andra betyder dess värde. Det vill säga att formuläret måste skicka värdet $_POST["action"]="login" så att kodavsnittet Logga in bearbetade det.

&redirectToPrior=`1`- betyder att vi efter inloggning flyttas till samma sida som vi gick in från.

&logoutResourceId=`1`- när vi lämnar profilen kommer vi att gå till sidan med ID 1.


Chunk Auth.Login :

[[!+fel]]

Blanketten behandlas på samma sida. Om ett fel uppstår kommer det att visas under formuläret i platshållaren [[!+fel]]. Du måste också komma ihåg länkar till resurser med registrering och lösenordsåterställning. Observera att i e-postfältet namn = "användarnamn" - det är i detta fält som kodavsnittet duplicerade e-postmeddelandet Registrera, och det är unikt för användare.


Chunk Auth.Logout:

[]` &tpl=`User.HeaderBadge` &innerJoin=`("modUserGroupMember":("alias":"modUserGroupMember","on":"modUser.id = modUserGroupMember.member"), "modUserGroup":("alias" :"modUserGroup", "on":"modUserGroupMember.user_group = modUserGroup.id")` &select=`("modUserGroup":("group_name": "modUserGroup.name"))` ]]

Avsluta profilen

Denna del är inte nödvändig om alla användare är i samma grupp. Men för att visa användargruppen räcker det inte med standardutdragen som ingår i inloggningskomponenten. Du kan skriva ett enkelt utdrag för att få namnet på gruppen på xPDO, eller så kan du använda ett färdigt utdrag pdoAnvändare ingår i paketet pdoTools. Parametrar som anges i detta utdrag:

&users=`[[+modx.user.id]]`- välj endast den aktuella auktoriserade användaren.

&tpl=`User.HeaderBadge`- en bit där vi kommer att visa kort information om användaren.

&inre koppling– JSON med sammanfogningar av användargruppstabeller, beskrivningen ligger utanför artikelns omfattning. Huvudsaken är att det fungerar J.

&Välj– JSON som lägger till fältet modUserGroup.name med aliaset group_name till urvalet.


Klump med användarmärke User.HeaderBadge :

Du är inloggad som [[+gruppnamn]][[+fullnamn]] Personligt konto

Om vi ​​inte behövde användargruppen, kan innehållet i denna del infogas direkt i delen Auth.Logga ut . Här kan du visa platshållare med alla modUser- och modUserProfile-fält plus att använda pdoAnvändare fältet har lagts till Grupp namn.


I biten Auth.Login.Error enkel felutgång:

[[+msg]]

Vi är klara med inloggningen. Vid denna tidpunkt kan användaren registrera sig och logga in. Men vad händer om han glömt sitt lösenord? I det här fallet klickar han på länken "Har du glömt ditt lösenord?" och går till sidan för lösenordsåterställning, som vi först skapar och ringer dit:

[[!Glömt ditt lösenord? &tpl=`Auth.ForgotPass.Form` &submitVar=`forgotpass` &errTpl=`Auth.Login.Error` &sentTpl=`Auth.ForgotPass.Sent` &emailTpl=`Email.ForgotPass` &emailSubject=`Återställer åtkomst till ditt konto i exemplet webbplats. Com` &resetResourceId=`29`]]

Låt oss titta på parametrarna för detta samtal:

&tpl=`Auth.ForgotPass.Form`- en bit av formuläret där användaren kommer att ange sin e-post.

&submitVar=`forgotpass`- i fallet med ForgotPassword-kodavsnittet räcker det att en parameter med samma namn skickas till servern och oavsett med vilket icke-tomt värde.

&errTpl=`Auth.Login.Error` - felutgång som liknar inloggningskodavsnittet

&sentTpl=`Auth.ForgotPass.Sent`- den här biten innehåller innehållet som kommer att visas om e-postmeddelandet för att ändra lösenordet skickas.

&emailTpl=`Email.ForgotPass`- själva brevet finns här.

&e-postÄmne=`Återställ åtkomst till ditt konto på webbplatsen Example.Com` - brevets titel.

&resetResourceId=`29`- identifierare för den resurs på vilken lösenordet kommer att återställas till ett nytt.


Chunk Auth.ForgotPass.Form:

[[+loginfp.errors]]

Det enda nya här är ett annat sätt att visa fel i platshållaren [[+loginfp.errors]] och genom att skicka parametern som just detta formulär återställer lösenordet: .

Auth.ForgotPass.Sent:

Kontoåterställningsinformation har skickats till den angivna e-postadressen: [[+e-post]].

Du kan använda uppgifterna från formuläret ovan här.


Email.ForgotPass:

[[+fullständigt namn]],

För att aktivera ditt nya lösenord, besök följande länk:

Jag vill ha ett nytt lösenord

Om allt gick bra kommer du att kunna logga in på din profil med hjälp av följande data:

Logga in:[[+användarnamn]]

Lösenord:[[+lösenord]]

Tack,
Administration av sajten Exempel.Com

Allt är väldigt likt aktiveringsbokstavsbiten, bara lösenordet här genereras i utdraget.


Det sista steget är att skapa en resurs som användaren kommer att gå till från e-postmeddelandet för att uppdatera lösenordet. I den här resursen behöver vi ett samtal:

[[!ResetPassword:empty=`

Du har inte beställt en lösenordsåterställning. Du kanske har fel adress. Du kan gå till sidans huvudsida eller använda menyn ovan.

`? &tpl=`Auth.ForgotPass.Reset`]]

Den här koden kommer att visa ett meddelande om någon plötsligt besöker den här sidan igen eller bara av misstag. Och om lösenordet har återställts, kommer ett meddelande att visas från chunken Auth.ForgotPass.Reset:

Ditt lösenord har återställts till det som anges i e-postmeddelandet. Du kan nu logga in med detta lösenord. Glöm inte att ändra det i din profil.

Nu har vi ett fullt fungerande användarbehörighets- och registreringssystem. Ändring av profilen för behöriga användare kommer att lämnas utanför ramen för denna artikel.


1. Skapa en registreringssida och lägg till ett utdragsanrop till den Registrera.

2. Skapa bitar med registreringsformuläret Registreringsformulär och aktiveringsbrev E-post.Aktivering.

3. Skapa en sida för registreringsbekräftelse och ring ett utdrag på den Bekräfta Registrera dig.

4. Lägg till ett utdragssamtal Logga in där vi vill placera inloggningsformuläret och det behöriga användarmärket.

5. Skapa en bit med inloggningsformuläret Auth.Login , bit med information om den auktoriserade användaren Auth.Logga ut , bit med felmeddelande Auth.Login.Error .

6. Skapa en sida för lösenordsåterställning och ring ett utdrag på den Glömt ditt lösenord.

7. Skapa en bit Auth.ForgotPass.Form med lösenordsåterställningsformulär, chunk Auth.ForgotPass.Send med ett meddelande om framgångsrikt skickande av brevet, chunk Email.ForgotPass med ett e-postmeddelande för återställning av lösenord.

8. Skapa en resurs med en sista lösenordsåterställning och placera ett kodavsnitt i den Återställ lösenord.

9. Skapa en bit Auth.ForgotPass.Reset med ett meddelande som indikerar att lösenordet har återställts.

Det är allt. Jag tar gärna emot tillägg och kommentarer.

När du bygger webbapplikationer är det viktigt att ta säkerheten på allvar, speciellt när du ska hantera att hämta data från användare.

En allmän säkerhetsregel är att inte lita på någon, så du kan inte lita på att användarna alltid anger rätt värden i formulär. Till exempel, istället för att ange rätt e-postadress i fältet, kan användaren ange en felaktig adress, eller till och med vissa skadliga uppgifter.

När det kommer till att validera användardata kan det göras antingen på klientsidan (i webbläsaren) eller på serversidan.

Tidigare kunde validering på klientsidan endast göras med JavaScript. Men allt har förändrats (eller nästan förändrats), eftersom med hjälp av HTML5 kan validering göras i webbläsaren, utan att behöva skriva komplexa valideringsskript i JavaScript.

Formulärvalidering med HTML5

HTML5 ger en ganska robust mekanism baserad på följande taggattribut : typ , mönster och kräver . Med dessa nya attribut kan du ladda ner en del av datavalideringsfunktionerna till webbläsaren.

Låt oss titta på dessa attribut för att förstå hur de kan hjälpa till med formulärvalidering.

typ attribut

Detta attribut talar om vilket inmatningsfält som ska visas för databehandling, till exempel det välbekanta fältet som

Vissa inmatningsfält tillhandahåller redan standardvalideringsmetoder, utan att behöva skriva ytterligare kod. Till exempel, kontrollerar fältet för att säkerställa att det angivna värdet matchar mallen för en giltig e-postadress. Om ett felaktigt tecken skrivs in i ett fält kan formuläret inte skickas in förrän värdet är rättat.

Testa att leka med e-postfältsvärdena i demon nedan.

Det finns även andra standardfälttyper, som , Och för validering av nummer, webbadresser respektive telefonnummer.

Obs! Telefonnummerformaten varierar från land till land på grund av skillnader i antal siffror i telefonnummer och skillnader i format. Som ett resultat definierar specifikationen inte en algoritm för att kontrollera telefonnummer, så i skrivande stund stöds den här funktionen dåligt av webbläsare.

Lyckligtvis för oss kan validering av telefonnummer göras med hjälp av mönsterattributet, som tar ett reguljärt uttryck som ett argument, vilket vi ska titta på härnäst.

mönsterattribut

Mönsterattributet kommer sannolikt att få många frontend-utvecklare att hoppa av glädje. Det här attributet accepterar ett reguljärt uttryck (liknande JavaScript-formatet för reguljära uttryck) som kommer att användas för att kontrollera riktigheten av data som anges i fältet.

Reguljära uttryck är ett språk som används för att tolka och manipulera text. De används ofta för komplexa sök- och ersättningsoperationer, såväl som för att kontrollera att inmatade data är korrekta.

Idag ingår reguljära uttryck i de flesta populära programmeringsspråken, såväl som i många skriptspråk, redigerare, applikationer, databaser och kommandoradsverktyg.

Reguljära uttryck (RegEX) är ett kraftfullt, kortfattat och flexibelt verktyg för att matcha en textsträng, till exempel enskilda tecken, ord eller teckenmönster.

Genom att skicka ett reguljärt uttryck som värdet för mönsterattributet kan du ange vilka värden som är acceptabla för ett givet inmatningsfält, samt informera användaren om fel.

Låt oss titta på ett par exempel på att använda reguljära uttryck för att validera värdet på inmatningsfält.

Telefonnummer

Som tidigare nämnts stöds inte fälttypen tel helt av webbläsare på grund av inkonsekvenser i telefonnummerformat i olika länder.

Till exempel, i vissa länder representeras formatet för telefonnummer som xxxx-xxx-xxxx , och själva telefonnumret blir ungefär så här: 0803-555-8205 .

Det reguljära uttrycket som detta mönster matchar är: ^\d(4)-\d(3)-\d(4)$ . I kod kan detta skrivas så här:

Alfanumeriska värden

obligatoriskt attribut

Detta är ett booleskt attribut som används för att indikera att värdet på ett givet fält måste fyllas i för att formuläret ska kunna skickas. När du lägger till detta attribut i ett fält kommer webbläsaren att kräva att användaren fyller i detta fält innan formuläret skickas.

Detta räddar oss från att implementera fältvalidering med JavaScript, vilket kan spara tid för utvecklare.

Till exempel: eller (för XHTML-kompatibilitet)

Alla demos du har sett ovan använder det obligatoriska attributet, så du kan prova det genom att försöka skicka in formuläret utan att fylla i några fält.

Slutsats

Webbläsarstöd för formulärvalidering är ganska bra, och för äldre webbläsare kan du använda polyfills.

Det är värt att notera att det är farligt att bara förlita sig på webbläsarsidans validering, eftersom dessa kontroller lätt kan kringgås av angripare eller botar.

Alla webbläsare stöder inte HTML5, och inte all data som skickas till ditt skript kommer från ditt formulär. Detta innebär att innan du slutligen accepterar data från användaren är det nödvändigt att kontrollera dess korrekthet på serversidan.

"Fool protection" är en uppsättning åtgärder för att förhindra att felaktig information matas in i ett formulär. Om du till exempel behöver ange ett positivt tal från 0 till 10 i ett fält bör du kontrollera att användaren inte skriver in text eller ett tal som inte ligger inom det angivna intervallet, d.v.s. talet bör inte vara mindre än noll och mer än tio.

Varför läggs felaktig information in? Detta görs huvudsakligen av tre skäl.

  1. Användaren gjorde av misstag ett misstag, till exempel läste han ouppmärksamt vad han var tvungen att ange.
  2. Webbsidan frågar efter data på ett tvetydigt sätt, vilket låter användaren gissa och gissa vad de verkligen vill ha. Men åsikterna från utvecklaren och användaren sammanfaller inte alltid.
  3. Det finns ett antal personer som uppfattar instruktioner som en utmaning och försöker göra tvärtom. Sådana användare resonerar ungefär så här: "Ja, de ber mig att ange ett nummer. Vad händer om jag anger bokstäverna?” Sedan frågar de uppenbart felaktig information och ser vad det leder till.

Det bör förstås att exakt och korrekt formulering, även om den minskar sannolikheten för fel, inte på något sätt räddar dig från dem. Endast tekniska medel på serversidan gör att du kan få önskat resultat och undvika att ange felaktig information. Revision eller, som det också kallas, validering på klientsidan gör det möjligt för dig att snabbt kontrollera uppgifterna som användaren har angett för korrekthet, utan att skicka formuläret till servern. Detta sparar användaren tid och minskar belastningen på servern. Ur användbarhetssynpunkt finns det också fördelar - användaren får omedelbart ett meddelande om vilken information han angett felaktigt och kan rätta till sitt misstag.

Obligatoriskt fält

Vissa formulärfält måste fyllas i innan de skickas till servern. Det gäller till exempel registreringsformuläret där du måste ange inloggning och lösenord. För att ange obligatoriska fält, använd det obligatoriska attributet, som visas i exempel 1.

Exempel 1. Det obligatoriska attributet

HTML5 IE 10+ Cr Op Sa Fx

Obligatoriskt fält

Logga in:

Lösenord:

Obligatoriska fält måste fyllas i innan formuläret skickas, annars skickas formuläret inte till servern och webbläsaren kommer att varna om detta. Typen av meddelande beror på webbläsaren, till exempel visar Chrome ett verktygstips som visas i fig. 1.

Ris. 1. Obligatoriskt fält är inte ifyllt

Data korrekthet

Inledningsvis finns det två fält där användarinmatning kontrolleras automatiskt. Detta är en webbadress och en e-postadress. Chrome kontrollerar också kalenderfältet för giltighet, men bara för att det inte har ett klicka-till-kalender-gränssnitt. Följande regler gäller för dessa element.

  • Webbadress ( ) måste innehålla protokollet (http://, https://, ftp://).
  • E-postadress ( ) måste innehålla bokstäver eller siffror före @-symbolen, efter den, sedan en punkt och en förstanivådomän.

Webbläsare har lite olika policyer för att verifiera användardata. Opera infogar till exempel automatiskt http://-protokollet framför den inmatade texten, medan andra webbläsare väntar på det från användaren. Chrome och Opera kräver en punkt i e-postadressen, Firefox kräver det inte.

Exempel 2 visar ett formulär med obligatoriska fält där två fält valideras av webbläsaren.

Exempel 2: Datakorrekthet

HTML5 IE 10+ Cr Op Sa Fx

Data korrekthet

Fyll i formuläret (alla fält är obligatoriska)

Namn:

E-post:

Hemsida:

Opera kontrollerar bara ett formulärelement om det har ett namnattribut.

Vad som händer i Opera när du anger felaktig data visas i Fig. 2.

Ris. 2. Varning för felaktiga uppgifter

Inmatningsmall

Vissa data kan inte klassificeras i någon av formulärelementtyperna, så du måste använda ett textfält för det. Samtidigt läggs de in enligt en viss standard. Således innehåller en IP-adress fyra siffror separerade med en punkt (192.168.0.1), Rysslands postnummer är begränsat till sex siffror (124007), ett telefonnummer innehåller ett riktnummer och ett specifikt antal siffror, ofta separerade med en bindestreck (391 555-341-42), etc. Webbläsaren behöver ange en inmatningsmall så att den kontrollerar de data som användaren matat in enligt den. För att göra detta används mönsterattributet, och dess värde är ett reguljärt uttryck. Vissa typiska värden är listade i tabellen. 1.

Exempel 3 ber dig att ange ett hexadecimalt färgvärde (#ffcc00) och om det inte är inom detta intervall visar webbläsaren ett felmeddelande.

Exempel 3. Inmatningsmall

HTML5 IE 10+ Cr Op Sa Fx

Färginmatning

Ange det hexadecimala färgvärdet (måste börja med #)

I fig. Figur 3 visar en varning i webbläsaren Chrome.

Ris. 3. De angivna uppgifterna stämmer inte överens med mallen

Ogiltigförklaring

Validering krävs inte alltid för ett formulär, till exempel kommer en utvecklare att vilja använda en universell JavaScript-lösning och behöver inte längre en dubblettkontroll av webbläsaren. I sådana fall måste du inaktivera inbyggd validering. För att göra detta, använd novalidate-attributet för taggen

. Exempel 4 visar användningen av detta attribut.

Exempel 4: Ogiltigförklaring

HTML5 IE 10+ Cr Op Sa Fx

novalidate-attribut

För liknande ändamål används attributet formnovalidate, som läggs till knappen för att skicka formuläret, i detta fall till taggen . I det här fallet kommer formuläret från exempel 4 att se ut så här.