Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Gabimet
  • Ndërtimi i një formulari të thjeshtë kontakti me Angularjs dhe php. Siguria e të dhënave të përdoruesit Pse u instalua ky formular?

Ndërtimi i një formulari të thjeshtë kontakti me Angularjs dhe php. Siguria e të dhënave të përdoruesit Pse u instalua ky formular?

Është shumë e përshtatshme të dini gjithmonë se cili version specifik është ky apo ai asamble i projektit. Kjo zakonisht bëhet duke futur një numër versioni të përbërë nga disa shifra. Unë jam një ithtar i një strukture 4-shifrore si:

Së bashku, kjo formon emërtimin e versionit të plotë (Major.Minor.Pathch.Build):

Disa njerëz përdorin një vlerë numerike unike si ndërtim, e cila rritet çdo herë, për shembull, gjatë një ndërtimi natën. Unë besoj se nuk ka asnjë pikë në këtë - është shumë më i përshtatshëm ta lidhni këtë numër me një rishikim në depo. Unë përdor Subversion dhe CMake, kështu që do të demonstroj se si mund të automatizoni postimin e një versioni të ndërtuar me këto mjete.

Së pari, duhet të shtoni një skedar kokë në projekt (për shembull, version.h):

#përfshi #përfshi Versioni i hapësirës së emrave (const std :: string & AsText (); boost :: uint64_t AsNumber ();)

Këtu është një ndërfaqe e thjeshtë përmes së cilës mund të merrni numrin e plotë të versionit nga programi në formë teksti ose si një identifikues unik i numrit të plotë.

Tani do të jap përmbajtjen e version.cpp:

#përfshi #include "../version.h" hapësirën e emrave (përmirësimi i konstit :: uint8_t MAJOR = 4; rritja e konstit :: uint16_t MINOR = 6; rritja e konstit :: uint16_t PATCH = 12; rritja e vazhdueshme :: uint32_t BUILD = 58; // Kjo vlerë do të ndryshohet automatikisht) const std :: string & Version :: AsText () (static const std :: string text = boost :: str (përforcim :: format ("% 1%.% 2%.% 3%.% 4%") % static_cast< unsigned >(MAJOR)% MINOR% PATCH% BUILD); teksti i kthimit; ) boost :: uint64_t Versioni :: AsNumber () (BOOST_STATIC_ASSERT (BUILD< 0xFFFFFF ) ; using namespace boost; const size_t size = sizeof (uint64_t ) ; static const boost:: uint64_t number = (static_cast < uint64_t >(I MADH)<< (size - sizeof (MAJOR) ) * 8 ) | (static_cast < uint64_t >(E MIRE)<< (size - sizeof (MAJOR) - sizeof (MINOR) ) * 8 ) | (static_cast < uint64_t >(PATCH)<< (size - sizeof (MAJOR) - sizeof (MINOR) - sizeof (PATCH) ) * 8 ) | BUILD; return number; }

Gjithçka është e parëndësishme këtu dhe, mendoj, nuk kërkon komente. Gjëja e fundit që ka mbetur është mekanizmi për ndryshimin e vlerës BUILD në numrin e rishikimit në depo. CMake do ta trajtojë këtë mirë, thjesht shtoni kodin e mëposhtëm në CMakeLists.txt:

vendosur (VERSION_FILE ../ të zakonshme / burime / version.cpp) find_package (KËRKOHET Subversion) Subversion_WC_INFO ($ (PROJECT_SOURCE_DIR) Repo) skedari (LEXO $ (VERSION_FILE) OLD_CODE) foreach (LINE $ (OLD_COD) = EX) "BUILD_NUMBER $ (LINE)) nëse (BUILD_NUMBER) varg (REGEX REPLACE" + $ "$ (Repo_WC_REVISION) LINE $ (LINE)) endif () vendosur (NEW_CODE $ (NEW_CODE) $ (LINE)) endforeach (LINE) skedar ( SHKRUAJ $ (VERSION_FILE) " $ (KODI I RI) ")

E vetmja hollësi në skenar është në rreshtin e fundit, dhe më konkretisht, thonjëzat në "$ (NEW_CODE)", pa të gjitha ";" do të hiqen.

Na duhen faqet e mëposhtme:

  • Faqja e regjistrimit me formularin e regjistrimit
  • Faqja e aktivizimit të llogarisë
  • Faqja e rikuperimit të fjalëkalimit
  • Faqja e rivendosjes së fjalëkalimit

Formulari i hyrjes në faqe do të vendoset në të gjitha faqet e faqes (për shembull, në kokë).

Kjo është faqja e regjistrimit që duam të marrim:

Këtu, lloji i llogarisë do të përcaktojë se me cilin grup e regjistrojmë përdoruesin. Gjithashtu, fusha për identifikim (emri i përdoruesit) do të jetë email.

Shtoni një telefonatë fragment në faqe Regjistrohu:

[[! Regjistrohu? & submitVar = `register-btn` & activationResourceId =` 27` & activationEmailTpl = `Email.Activation` & activationEmailSubject =` Jeni regjistruar në example.com` & placeholderPrefix = `reg.` & successMsg =`

Faleminderit për regjistrimin. Në emailin tuaj [[! + reg.email]]është dërguar një email me një lidhje për të aktivizuar llogarinë tuaj. Ndiqni këtë lidhje për të përfunduar regjistrimin tuaj.
`& usernameField =` email` & usergroupsField = `reg_type` & customValidators =` valueIn` & validate = `emri i përdoruesit: bosh, reg_type: valueIn = ^ Readers; Writers; Idlers ^, emri i plotë: kërkohet: minLength = ^ 6 ^, fjalëkalim : kërkohet: minGjatësia = ^ 6 ^, fjalëkalimi_konfirmimi: fjalëkalimi_konfirmimi = ^ fjalëkalimi ^, emaili: kërkohet: emaili`]] [[! + Mesazhi i gabimit: parazgjedhja = `[[! $ Regjistrohu. Formulari]`]]

Ju lutemi vini re se nevojiten të gjitha etiketat e regjistrimit detyrimisht thirrja e pacaktuar. Të njëjtat rregulla zbatohen kur përpunohen formularët me fragmentin FormIt.

Le të analizojmë parametrat e thirrjes:

& submitVar = `register-btn`- specifikon atributin e emrit të etiketës hyrje... Kjo do të thotë, fragmenti do të funksionojë vetëm nëse formulari dorëzohet nga një buton me një emër specifik.

& activationResourceId = `42`- duke parë përpara, 42 është identifikuesi i faqes në të cilën do të aktivizojmë përdoruesin.

& activationEmailTpl = `Email.Aktivizimi`- copë me një letër aktivizimi, në lidhje me të më vonë.

& placeholderPrefiks = `reg.`- tregon se të gjithë mbajtësit e vendeve, me përjashtime të rralla (më shumë për këtë më vonë), të cilat janë krijuar në këtë fragment, duhet të fillojnë me "reg".

& SuksesMsg- mesazhi që do të shfaqet pas paraqitjes së suksesshme të formularit. Vini re se mund të specifikoni vlerat nga forma dhe çdo etiketë tjetër në të. Ky mesazh do t'i shkruhet mbajtësit të vendit [[! + gabim.mesazh]]. Një emër mjaft i çuditshëm, dhe ka një gabim në dokumentacion për momentin. Aty shkruhet [[! + reg.error.mesazh]], por nga kodi i komponentit del se nuk është kështu.

& usernameField = `email`- tregon se fusha e emailit do të përdoret si emër përdoruesi.

&Grupet e përdoruesveFusha = `lloji_regjig`- përcakton fushën që përcakton grupin në të cilin do të shtohet përdoruesi i ri.

& customValidators = `valueIn`- tregon vërtetues shtesë që do të krijohen manualisht.

& vërtetoj- Validuesit vendosen të ndarë me presje për secilën fushë, dhe nëse kërkohen disa validatorë për një fushë, atëherë ato ndahen edhe me dy pika. Le t'i analizojmë ato veçmas:

emri i përdoruesit: boshËshtë një kurth i thjeshtë spam, që do të thotë se fusha e emrit të përdoruesit duhet të lihet bosh.

reg_type: valueIn = ^ Readers; Writers; Idlers ^- ne i kufizojmë grupet e mundshme në tre të treguara. Në dorëzimin fillestar, ky nuk është rasti, dhe hakerat e këqij mund të regjistrohen, për shembull, nën grupin Administrator (nëse nuk e keni riemërtuar).

emri i plotë: kërkohet: minGjatësia = ^ 6 ^- fusha e emrit të plotë nuk duhet të jetë bosh dhe të përmbajë të paktën 6 karaktere.

fjalëkalimi: kërkohet: MinLength = ^ 6 ^- në mënyrë të ngjashme për fjalëkalimin.

password_confirm: password_confirm = ^ password ^- fjalekalimet duhet te perputhen.

email: kërkohet: email- E-mail nuk duhet të jetë bosh dhe të jetë vetë posta.

Dizajn [[! + error.message: default = `[[! $ Regjistrohu.Forma]]`]] shfaq një mesazh në lidhje me paraqitjen e suksesshme të formularit ose një copë formulari nëse sapo keni vizituar faqen ose e keni plotësuar gabimisht.

Le të krijojmë vërtetuesin e mësipërm vlerëNë... Për ta bërë këtë, krijoni një fragment me emrin vlerëNë dhe kodin e mëposhtëm:

$ valueIn = shpërthejnë (";", $ param); kthimi në_array ($ vlera, $ valueIn);

Tani ju duhet të krijoni një copë Regjistrohu.Formulari ... Në këtë rast, do të jetë si më poshtë (duke përdorur Bootstrap 3):

[[! + reg.error.emri i plotë: notempty = `
[[! + reg.error.emri i plotë]]
`]]
[[! + reg.error.email: notempty = `
[[! + reg.error.email]]
`]]
[[! + reg.error.password: notempty = `
[[! + reg.error.fjalëkalimi]]
`]]
[[! + reg.error.password_confirm: notempty = `
[[! + reg.error.password_confirm]]
`]]

Të gjitha fushat janë të nevojshme

Në këtë formë, unë do të shënoj disa gjëra në lidhje me MODX:


- formulari përpunohet në të njëjtën faqe në të cilën shfaqet.

Vendosja e vlerës nga ato të marra nga formulari në mënyrë që në rast dështimi përdoruesi të mos duhet të fusë gjithçka përsëri.

[[! + reg.error.email: notempty = `[[! + reg.error.email]]`]]- përsëri, në rast dështimi, një mesazh gabimi do të shfaqet poshtë fushës.

- Sigurohuni që të tregoni emrin e butonit nëse keni vendosur më parë pronën & paraqesVar.


Tani mbetet për të krijuar një copë Email.Aktivizimi me letrën që faqja i dërgon përdoruesit:

Faleminderit për regjistrimin! Për të aktivizuar llogarinë tuaj, ju lutemi ndiqni lidhjen e mëposhtme:

Aktivizoni llogarinë tuaj në Example.Com

Pas aktivizimit, do të mund të identifikoheni duke futur emailin dhe fjalëkalimin tuaj:

Identifikohu:[[+ email]]

Fjalëkalimi:[[+ fjalëkalim]]


Këtu mund të përdorni mbajtëset e vendeve me emrat e fushave të formularit. Vini re se ato janë shkruar tashmë pa "reg". Shtohet gjithashtu një mbajtës vendi [[+ URL konfirmimi]], në të cilën tashmë është krijuar lidhja e aktivizimit, as nuk keni nevojë të bëni asgjë.


Prekja e fundit në artin e regjistrimit të një llogarie të re duke përdorur një komponent Identifikohu do të krijojë një faqe aktivizimi. Ne përdorim një shabllon bosh për këtë faqe dhe në përmbajtjen e faqes, thjesht duhet të specifikojmë një thirrje në etiketën:

[[! Konfirmo Regjistrohu? & ridrejtojTe = `1`]]

ku 1 është identifikuesi i faqes në të cilën përdoruesi do të ridrejtohet në rast aktivizimi të suksesshëm. Në këtë rast, ai tashmë do të jetë i identifikuar.


Le të fillojmë konfigurimin e hyrjes në profilin e përdoruesit. Formulari i autorizimit do të jetë i thjeshtë:

Le ta shtojmë duke e thirrur në vendin e duhur:

[[! Identifikohu? & loginTpl = `Auth.Login` & logoutTpl =` Auth.Logout` & errTpl = `Auth.Login.Error` & actionKey =` veprim` & loginKey = `login` & ridrejtoToPrior =` 1` & logoutResourceId = `1` ]]

Këtu ne specifikojmë një pjesë me formën e hyrjes të treguar më sipër ( & loginTpl = `Auth.Login`), një pjesë me një kod të treguar për përdoruesit e autorizuar ( & logoutTpl = `Auth.Dalje`), një pjesë e vogël me daljen e një gabimi identifikimi ( & errTpl = `Auth.Login.Error`). Parametrat vijojnë:

& actionKey = `veprim` dhe & loginKey = `hyrja`- identifikuesit kryesorë për përpunimin e kërkesës. E para nënkupton emrin e parametrit në kërkesën POST, dhe e dyta nënkupton vlerën e tij. Kjo do të thotë, formulari duhet të kalojë vlerën $ _POST ["action"] = "login" në mënyrë që fragmenti Identifikohu e përpunoi atë.

& ridrejtojToPrior = `1`- do të thotë që pas hyrjes ne do të ridrejtohemi në të njëjtën faqe nga e cila jemi identifikuar.

& logoutResourceId = `1`- kur largohemi nga profili, do të shkojmë në faqen me identifikuesin 1.


Çunk Auth.Identifikohu :

[[! + gabime]]

Formulari përpunohet në të njëjtën faqe. Nëse ndodh një gabim, ai do të shfaqet poshtë formularit në mbajtësin e vendeve [[! + gabime]]. Ju gjithashtu duhet të mbani mend lidhjet me burimet me Regjistrimin dhe rikuperimin e fjalëkalimit. Vini re se në fushën për emrin e postës elektronike = "username" - ishte në këtë fushë që fragmenti kopjoi postën Regjistrohu dhe është unik për përdoruesit.


Çunk Auth.Dalje:

[] `& tpl =` User.HeaderBadge` & innerJoin = `(" modUserGroupMember ":(" alias ":" modUserGroupMember "," on ":" modUser.id = modUserGroupMember.member ")," modUserGroup ":(" pseudonimi " : "modUserGroup", "on": "modUserGroupMember.user_group = modUserGroup.id")) `& zgjidhni =` ("modUserGroup" :( "emri_grupi": "modUserGroup.emri")) `]]

Dil nga profili

Kjo pjesë është opsionale nëse të gjithë përdoruesit janë në të njëjtin grup. Por për të shfaqur një grup përdoruesish, copat standarde të përfshira në komponentin Login nuk janë të mjaftueshme. Mund të shkruani një fragment të thjeshtë për të vendosur emrin e grupit xPDO, ose mund të përdorni një fragment të gatshëm pdoPërdoruesit të përfshira në paketë pdoTools... Parametrat e specifikuar në këtë fragment:

& përdoruesit = `[[+ modx.user.id]]`- ne zgjedhim vetëm përdoruesin aktual të autorizuar.

& tpl = `Përdoruesi.HeaderBadge`- një pjesë në të cilën ne do të shfaqim informacion të shkurtër rreth përdoruesit.

& InnerJoin- JSON me bashkime të tabelave të grupeve të përdoruesve, përshkrimi është përtej qëllimit të këtij artikulli. Gjëja kryesore është se funksionon J.

& zgjidhni- JSON duke shtuar në përzgjedhje fushën modUserGroup.name me pseudonimin e emrit të grupit.


Copë me distinktivin e përdoruesit User.HeaderBadge :

Ju jeni identifikuar si [[+ emri_grupi]][[+ emri i plotë]] Llogari personale

Nëse nuk do të kishim nevojë për një grup përdoruesish, atëherë përmbajtja e kësaj pjese mund të futet direkt në atë pjesë Auth.Dalje ... Këtu mund të shfaqni mbajtëset e vendeve me çdo fushë modUser dhe modUserProfile plus duke përdorur pdoPërdoruesit shtoi një fushë Emri i grupit.


Në një copë Auth.Login.Gabim dalje e thjeshtë e gabimit:

[[+ mesazh]]

Kemi mbaruar me hyrjen. Në këtë pikë, përdoruesi mund të regjistrohet dhe të identifikohet me sukses. Por çfarë nëse ai harron fjalëkalimin e tij? Në këtë rast, ai klikon në lidhjen "Keni harruar fjalëkalimin tuaj?" dhe shkon në faqen e rikuperimit të fjalëkalimit, të cilën ne e krijojmë paraprakisht dhe e bëjmë thirrjen atje:

[[! Keni harruar fjalëkalimin? & tpl = `Auth.ForgotPass.Form` & submitVar =` forgotpass` & errTpl = `Auth.Login.Error` & sentTpl =` Auth.ForgotPass.Sent` & emailTpl = `Email.ForgotPass` & Email Subject =` Po rivendos llogari qasja në Shembull. Com` & ResetResourceId = `29`]]

Le të analizojmë parametrat e kësaj thirrjeje:

& tpl = `Auth.ForgotPass.Form`- një pjesë e formularit në të cilin përdoruesi fut emailin e tij.

& submitVar = `harruar kalimin`- në rastin e fragmentit ForgotPassword, mjafton që parametri me këtë emër të kalojë në server, pavarësisht se me cilën vlerë jo boshe.

& errTpl = `Auth.Login.Gabim`- Dalja e gabimit është e ngjashme me fragmentin e hyrjes

& sentTpl = `Auth.ForgotPass.Sent`- kjo pjesë përmban përmbajtje që do të shfaqet në rast të dërgimit të suksesshëm të një letre për ndryshimin e fjalëkalimit.

& emailTpl = `Email.ForgotPass`- vetë letra gjendet këtu.

& Tema e emailit= `Rivendosja e aksesit në një llogari në faqen Example.Com` - kreu i mesazhit.

& resetResourceId = `29`- identifikuesi i burimit në të cilin fjalëkalimi do të rivendoset në një të ri.


Copë Auth.ForgotPass.Form:

[[+ loginfp.errors]]

Ajo që ka të re këtu është vetëm një mënyrë tjetër për të shfaqur gabimet në mbajtësin e vendeve [[+ loginfp.errors]] dhe duke kaluar një parametër që është kjo formë që rivendos fjalëkalimin: .

Auth.ForgotPass.Sent:

Informacioni i rikuperimit të llogarisë është dërguar në adresën e specifikuar të emailit: [[+ email]].

Këtu mund të përdorni të dhënat nga formulari i mësipërm.


Email.ForgotPass:

[[+ emri i plotë]],

Për të aktivizuar fjalëkalimin tuaj të ri, ju lutemi vizitoni lidhjen e mëposhtme:

Unë dua një fjalëkalim të ri

Nëse gjithçka shkoi mirë, do të jeni në gjendje të hyni në profilin tuaj me informacionin e mëposhtëm:

Identifikohu:[[+ emri i përdoruesit]]

Fjalëkalimi:[[+ fjalëkalim]]

Faleminderit,
Shembull i Administrimit të Faqes.Com

Gjithçka është shumë e ngjashme me pjesën e letrës së aktivizimit, këtu në fragment krijohet vetëm fjalëkalimi.


Prekja e fundit mbetet për të krijuar një burim në të cilin përdoruesi do të shkojë nga letra për të përditësuar fjalëkalimin. Në këtë burim, na duhet një telefonatë:

[[! Rivendos fjalëkalimin: bosh = `

Nuk keni porositur një rivendosje të fjalëkalimit. Ndoshta ju keni adresën e gabuar. Mund të shkoni në faqen kryesore të faqes ose të përdorni menunë e mësipërme.

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

Ky kod do të shfaqë një mesazh nëse papritmas dikush endet përsëri në këtë faqe ose thjesht rastësisht. Dhe nëse fjalëkalimi rivendoset me sukses, do të shfaqet një mesazh nga pjesa Auth.ForgotPass.Rivendos:

Fjalëkalimi juaj është rivendosur me sukses në atë të specifikuar në letër. Tani mund të identifikoheni me këtë fjalëkalim. Mos harroni ta ndryshoni atë në profilin tuaj.

Tani kemi një sistem plotësisht funksional të autorizimit dhe regjistrimit të përdoruesve. Ndryshimi i profilit të përdoruesve të autorizuar do të lihet jashtë objektit të artikullit.


1. Krijoni një faqe regjistrimi dhe shtoni një thirrje në të Regjistrohu.

2. Krijo copa me një formular regjistrimi Regjistrohu.Formulari dhe letrën e aktivizimit Email.Aktivizimi.

3. Krijoni një faqe konfirmimi të regjistrimit dhe vendosni një telefonatë fragment në të Konfirmo Regjistrohu.

4. Shto një telefonatë fragment Identifikohu ku duam të vendosim formularin e hyrjes dhe distinktivin e përdoruesit të autorizuar.

5. Krijo një copë me një formular identifikimi Auth.Identifikohu , copë me informacione rreth përdoruesit të autorizuar Auth.Dalje , copë me mesazh gabimi Auth.Login.Gabim .

6. Krijoni një faqe rikuperimi të fjalëkalimit dhe vendosni një telefonatë të fragmentit në të Keni harruar fjalëkalimin.

7. Krijo një copë Auth.ForgotPass.Form me një formular të rikuperimit të fjalëkalimit, copë Auth.ForgotPass.Dërguar me një mesazh për dërgimin me sukses të letrës, copë Email.ForgotPass me një letër për të rivendosur fjalëkalimin.

8. Krijoni një burim me një rivendosje përfundimtare të fjalëkalimit dhe vendosni një thirrje në të Rivendosni fjalëkalimin.

9. Krijo një copë Auth.ForgotPass.Rivendos me një mesazh për rivendosjen e suksesshme të fjalëkalimit.

Kjo eshte e gjitha. Do të jem i lumtur për çdo shtesë dhe koment.

I pagabueshëm është një grup masash për të parandaluar futjen e informacionit të pasaktë në një formular. Për shembull, nëse duhet të futni një numër pozitiv nga 0 në 10 në një fushë, atëherë duhet të kontrolloni që përdoruesi të mos futë tekst ose një numër që nuk shtrihet në intervalin e specifikuar, d.m.th. numri nuk duhet të jetë më i vogël se zero ose më shumë se dhjetë.

Pse futen informacione të pasakta? Kjo është kryesisht për shkak të tre arsyeve.

  1. Përdoruesi bëri një gabim rastësisht, për shembull, lexoi pa vëmendje atë që duhet të tregojë.
  2. Në një faqe në internet, atyre u kërkohet në mënyrë të paqartë të fusin të dhëna, kështu që përdoruesi duhet të hamendësojë dhe të bëjë një supozim se çfarë duan me të vërtetë prej tij. Në këtë rast, pikëpamjet e zhvilluesit dhe përdoruesit nuk përkojnë gjithmonë.
  3. Ka një numër njerëzish që i marrin udhëzimet si sfidë dhe përpiqen të bëjnë të kundërtën. Përdorues të tillë arsyetojnë kështu: “Po, më kërkohet të fus një numër. Çfarë ndodh nëse tregoj shkronjat? " Pas kësaj, ata kërkojnë informacion dukshëm të pasaktë dhe shohin se çfarë do të çojë.

Duhet kuptuar që formulimet e sakta dhe korrekte, megjithëse zvogëlojnë gjasat e gabimeve, në asnjë mënyrë nuk ju shpëtojnë prej tyre. Vetëm mjetet teknike në anën e serverit ju lejojnë të merrni rezultatin e dëshiruar dhe të shmangni futjen e informacionit të pasaktë. Sidoqoftë, rishikimi ose, siç quhet edhe ai, vlefshmëria nga ana e klientit ju lejon të kontrolloni shpejt të dhënat e futura nga përdoruesi për korrektësi, pa e dorëzuar formularin në server. Kjo kursen kohën e përdoruesit dhe zvogëlon ngarkesën në server. Nga pikëpamja e përdorshmërisë, ka edhe pluse - përdoruesi menjëherë merr një mesazh se çfarë informacioni ka treguar gabimisht dhe mund të korrigjojë gabimin e tij.

Fusha e kërkuar

Disa fusha formulari duhet të plotësohen përpara se t'i dërgoni në server. Kjo, për shembull, vlen për formularin e regjistrimit, ku ju kërkohet të vendosni një emër përdoruesi dhe fjalëkalim. Atributi i kërkuar përdoret për të specifikuar fushat e kërkuara, siç tregohet në Shembullin 1.

Shembull 1. Atributi i kërkuar

HTML5 IE 10+ Cr Op Sa Fx

Fusha e kërkuar

Identifikohu:

Fjalëkalimi:

Fushat e kërkuara duhet të plotësohen përpara se të dërgoni formularin, përndryshe formulari nuk do të dërgohet në server dhe shfletuesi do të lëshojë një paralajmërim për këtë. Lloji i mesazhit varet nga shfletuesi; për shembull, Chrome shfaq një këshillë veglash, siç tregohet në Fig. 1.

Oriz. 1. Fusha e kërkuar nuk është e plotësuar

Korrektësia e të dhënave

Fillimisht, ekzistojnë dy fusha në të cilat të dhënat e futura nga përdoruesi kontrollohen automatikisht. Kjo është adresa e internetit dhe adresa e emailit. Shfletuesi Chrome kontrollon gjithashtu fushën e të dhënave të kalendarit për vlefshmëri, por vetëm sepse nuk ka një ndërfaqe kalendarike klikoni për të zgjedhur. Këto elemente karakterizohen nga rregullat e mëposhtme.

  • Faqe interneti ( ) duhet të përmbajë protokollin (http: //, https: //, ftp: //).
  • Adresa e emailit ( ) duhet të përmbajë shkronja ose numra përpara simbolit @, pas tij, pastaj një pikë dhe një domen të nivelit të parë.

Shfletuesit kanë politika paksa të ndryshme për vërtetimin e të dhënave të përdoruesit. Për shembull, Opera zëvendëson automatikisht protokollin http: // përpara tekstit të futur, ndërsa shfletuesit e tjerë e presin atë nga përdoruesi. Chrome dhe Opera kërkojnë që një pikë të jetë në adresën e postës, është opsionale për Firefox-in.

Shembulli 2 tregon një formë me fushat e kërkuara në të cilën dy fusha janë të vërtetuara nga shfletuesi.

Shembulli 2. Korrektësia e të dhënave

HTML5 IE 10+ Cr Op Sa Fx

Korrektësia e të dhënave

Plotësoni formularin (të gjitha fushat janë të nevojshme)

Emri:

Email:

Faqja:

Opera vërteton një element formular vetëm nëse atributi emri është i pranishëm.

Çfarë ndodh në Opera kur futni të dhëna të pasakta tregohet në Fig. 2.

Oriz. 2. Paralajmërim për të dhëna të pasakta

Modeli i hyrjes

Disa të dhëna nuk mund të kategorizohen si një lloj elementi i formës, kështu që ju duhet të përdorni një kuti teksti për të. Për më tepër, futja e tyre bëhet sipas një standardi të caktuar. Pra, adresa IP përmban katër numra të ndarë me një pikë (192.168.0.1), kodi postar i Rusisë është i kufizuar në gjashtë shifra (124007), telefoni përmban një kod qyteti dhe një numër specifik shifrash të ndara shpesh me vizë ( 391 555-341-42), etj. Shfletuesi duhet të specifikojë një shabllon të hyrjes në mënyrë që të vërtetojë hyrjen e përdoruesit sipas tij. Për këtë, përdoret atributi model, dhe vlera e tij është një shprehje e rregullt. Disa vlera tipike janë renditur në tabelë. 1.

Shembulli 3 kërkon një vlerë heksadecimal ngjyrash (# ffcc00) dhe nëse nuk është në këtë interval, shfletuesi shfaq një mesazh gabimi.

Shembulli 3. Modeli hyrës

HTML5 IE 10+ Cr Op Sa Fx

Hyrja e ngjyrave

Fut një vlerë heksadecimal të ngjyrës (duhet të fillojë me #)

Në fig. 3 tregon një paralajmërim në shfletuesin Chrome.

Oriz. 3. Të dhënat e futura nuk përputhen me shabllonin

Anulimi i vlefshmërisë

Verifikimi nuk kërkohet gjithmonë për një formular, për shembull, një zhvillues dëshiron të përdorë një zgjidhje universale në JavaScript dhe ai nuk ka nevojë për vërtetim të dyfishtë nga shfletuesi. Në raste të tilla, duhet të çaktivizoni vërtetimin inline. Për këtë, aplikohet atributi novalidate i etiketës.

... Shembulli 4 tregon përdorimin e këtij atributi.

Shembulli 4. Anulimi i vlefshmërisë

HTML5 IE 10+ Cr Op Sa Fx

Novalidoni atributin

Për një qëllim të ngjashëm, përdoret atributi formnovalidate, i cili shtohet në butonin për dërgimin e formularit, në këtë rast në etiketë ... Në këtë rast, forma nga shembulli 4 do të duket kështu.

Për çdo zhvillues të uebit, nuk ka ende problem më serioz sesa pajtueshmëria e plotë e produktit të tij me ndërshfletues. Ndoshta, kjo është një nga detyrat kryesore të një specialisti të mirë: të sigurojë që faqja e tij të shfaqet gjithmonë saktë në të gjithë shfletuesit.

Parametri kërkohet e cila ndonjëherë përdoret për hyrje nuk funksionon në IE të lashtë, e cila thjesht nuk mund të lihet në atë mënyrë. Përdoruesit në pension që ende përdorin IE6 duhet të jenë po aq të lehtë në faqen tuaj sa përdoruesit e versionit më të fundit të Google Chrome. Kush përveç zhvilluesve të uebit mund të kujdeset për ta.

Rreth e dhimbshme, për Internet Explorer

Për shfletuesit normalë si Firefox, Opera dhe Google Chrome, kjo detyrë është relativisht e lehtë. Edhe versionet më të vjetra të këtyre shfletuesve e japin kodin html po aq mirë, përveç nëse sigurisht që përdoret ndonjë teknologji e re në të. Por për ta arritur këtë në shfletuesit e familjes Internet Explorer, duhet një përpjekje e madhe.

Çdo version i shfletuesit Internet Exlorer ka marrëzinë e tij unike. Ajo që funksionon në IE6 mund të mos funksionojë siç duhet në IE7 dhe anasjelltas. Ky kopsht zoologjik i Microsoft-it nuk ka mundur ta kapërcejë as në versionin më të fundit të shfletuesit të tij.

Nuk mund ta kuptoj pse zhvilluesit e shfletuesit nuk mund të hapin dhe lexojnë standardet e W3C për ndërtimin e faqeve.

Prandaj, si një zhvillues ueb, më duhet të veproj si një lloj "shtrese" midis shfletuesve kapriçioz dhe vizitorëve të faqes që kërkojnë njohuri dhe spektakle. Dhe është e mrekullueshme që zhvilluesit e uebit kanë pasur sukses deri më tani.

Pra, si ju kërkohet të punoni në versionet më të vjetra të IE?

JS na vjen në shpëtim. Më parë, nuk mund ta duroja, por tani nuk shoh një rrugë tjetër pa të në pafundësinë e WEB-it "korrekt".

Zgjidhjen më poshtë nuk e shpika unë, por e mora nga një blog borgjez. Meqenëse jam i pangopur dhe blogu është borgjez, nuk do të lidhem me të.

Funksioni do të jetë përgjegjës për gjithçka. fnCheckFields ()... Vendosni kodin JS në faqen tuaj të internetit:

Zakonisht rekomandohet vendosja e tij midis etiketave html KOKË në fillim të faqes, por gjithsesi do të rekomandoja vendosjen e saj në fund të faqes përpara etiketës mbyllëse TRUPI... Kështu, JS ka më pak ndikim në shpejtësinë e ngarkimit të faqes.

Dritarja e hyrjes, ku duhet të futet parametri i kërkuar, duhet të duket kështu në gjuhën html:

Ky skenar funksionon shumë thjesht: pasi të klikoni butonin dërgoni, skripti kontrollon të gjitha hyrjet për praninë e parametrit të kërkuar dhe nëse e gjen atë, atëherë shikon vlerën e futur të kësaj fushe në përputhje me rrethanat. Nëse asgjë nuk është futur në një hyrje të tillë, atëherë shfaqet një dritare paralajmëruese për nevojën për të dhëna. Prandaj, të dhënat nuk dërgohen askund.

Është gjithashtu e jashtëzakonshme që nëse keni një shfletues normal që tashmë ka mësuar ta kuptojë këtë parametër siç pritej, një dritare e tillë paralajmëruese nuk do të shfaqet dhe mjetet standarde për përpunimin e parametrit të kërkuar për shfletuesin tuaj do të funksionojnë.

Shpërndaje në rrjetet sociale rrjeteve

Artikujt kryesorë të lidhur