Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Pogreške
  • Izrada jednostavnog obrasca za kontakt s Angularjsom i php. Sigurnost korisničkih podataka Zašto je ovaj obrazac instaliran?

Izrada jednostavnog obrasca za kontakt s Angularjsom i php. Sigurnost korisničkih podataka Zašto je ovaj obrazac instaliran?

Vrlo je prikladno uvijek znati koja je konkretna verzija ovog ili onog sklopa projekta. To se obično radi unosom broja verzije koji se sastoji od nekoliko znamenki. Ja sam zagovornik 4-znamenkaste strukture kao što je:

Zajedno, ovo tvori potpuno imenovanje verzije (Major.Minor.Pathch.Build):

Neki ljudi koriste jedinstvenu numeričku vrijednost kao građenje, koja se svaki put povećava, na primjer, tijekom noćne gradnje. Vjerujem da u tome nema smisla - mnogo je prikladnije ovaj broj vezati za reviziju u spremištu. Koristim Subverziju i CMake, pa ću demonstrirati kako pomoću ovih alata možete automatizirati objavljivanje verzije izrade.

Prvo morate projektu dodati datoteku zaglavlja (na primjer, version.h):

#uključiti #uključiti Verzija imenskog prostora (const std :: string & AsText (); boost :: uint64_t AsNumber ();)

Ovdje je jednostavno sučelje kroz koje možete dobiti puni broj verzije programa u tekstualnom obliku ili kao jedinstveni cjelobrojni identifikator.

Sada ću dati sadržaj version.cpp:

#uključiti #include "../version.h" imenski prostor (const boost :: uint8_t MAJOR = 4; const boost :: uint16_t MINOR = 6; const boost :: uint16_t PATCH = 12; const boost :: uint32_t BUILD = 589; // Ova vrijednost će se automatski promijeniti) const std :: string & Version :: AsText () (statički const std :: string text = boost :: str (boost :: format ("% 1%.% 2%.% 3%.% 4%")) % static_cast< unsigned >(MAJOR)% MANJI% ZAKRPA% IZGRADNJA); povratni tekst; ) boost :: uint64_t Verzija :: 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 >(GLAVNO)<< (size - sizeof (MAJOR) ) * 8 ) | (static_cast < uint64_t >(MANJI)<< (size - sizeof (MAJOR) - sizeof (MINOR) ) * 8 ) | (static_cast < uint64_t >(ZAKRPA)<< (size - sizeof (MAJOR) - sizeof (MINOR) - sizeof (PATCH) ) * 8 ) | BUILD; return number; }

Ovdje je sve trivijalno i, mislim, ne zahtijeva komentare. Posljednje što je ostalo je mehanizam za promjenu vrijednosti BUILD u broj revizije u spremištu. CMake će ovo riješiti sasvim dobro, samo dodajte sljedeći kod u CMakeLists.txt:

set (VERSION_FILE ../ common / sources / version.cpp) find_package (Subversion POTREBNA) Subversion_WC_INFO ($ (PROJECT_SOURCE_DIR) Repo) datoteka (READ $ (VERSION_FILE) OLD_CODE) foreach (LINE $ (OLD_CODEX) (+) "string "BUILD_NUMBER $ (LINE)) if (BUILD_NUMBER) string (REGEX REPLACE" + $ "$ (Repo_WC_REVISION) LINE $ (LINE)) endif () set (NEW_CODE $ (NEW_CODE) $ (LINE)) endforeach ( LINE) file ( WRITE $ (VERSION_FILE) " $ (NEW_CODE) ")

Jedina suptilnost u skripti je u zadnjem retku, točnije, navodnici u "$ (NEW_CODE)", bez njih će svi ";" biti uklonjeni.

Potrebne su nam sljedeće stranice:

  • Stranica za registraciju s obrascem za registraciju
  • Stranica za aktivaciju računa
  • Stranica za oporavak lozinke
  • Stranica za poništavanje lozinke

Obrazac za prijavu na web mjesto bit će postavljen na sve stranice stranice (na primjer, u zaglavlju).

Ovo je stranica za registraciju koju želimo primiti:

Ovdje će vrsta računa odrediti u koju grupu registriramo korisnika. Također, polje za identifikaciju (korisničko ime) bit će email.

Dodajte isječak poziva na stranicu Registar:

[[! Registar? & submitVar = `register-btn` & activationResourceId =` 27` & activationEmailTpl = `Email.Activation` & activationEmailSubject =` Registrirani ste na example.com` & placeholderPrefix = `reg.` & successMsg =`

Hvala na registraciji. Na svoju e-poštu [[! + reg.e-mail]] poslana je e-pošta s vezom za aktivaciju vašeg računa. Slijedite ovu poveznicu kako biste dovršili registraciju.
`& usernameField =` email` & usergroupsField = `reg_type` & customValidators =` valueIn` & validate = `username: blank, reg_type: valueIn = ^ Readers; Writers; Idlers ^, fullname: obavezno: minLength = ^ 6 ^, lozinka : potrebno: minLength = ^ 6 ^, password_confirm: password_confirm = ^ lozinka ^, email: potrebno: email`]] [[! + Poruka o pogrešci: zadana postavka = `[[! $ Register.Form]]`]]

Imajte na umu da su potrebne sve oznake za registraciju nužno poziv nije predmemoran. Ista pravila vrijede za obradu obrazaca s isječkom FormIta.

Analizirajmo parametre poziva:

& submitVar = `registar-btn`- specificira naziv atributa oznake ulazni... Odnosno, isječak će funkcionirati samo ako je obrazac poslan gumbom s određenim nazivom.

& activationResourceId = "42".- gledajući unaprijed, 42 je identifikator stranice na kojoj ćemo aktivirati korisnika.

& activationEmailTpl = `E-pošta.Aktivacija`- komad s aktivacijskim pismom, o tome kasnije.

& placeholderPrefix = `reg.`- označava da svi rezervirani mjesta, uz rijetke iznimke (o tome više kasnije), koji su kreirani u ovom isječku, moraju početi s "reg."

& uspjehMsg- poruka koja će se prikazati nakon uspješnog slanja obrasca. Imajte na umu da možete odrediti vrijednosti iz obrasca i bilo koje druge oznake u njemu. Ova će poruka biti napisana rezerviranom mjestu [[! + error.message]]. Prilično čudan naziv, a trenutno postoji greška u dokumentaciji. Tamo je zapisano [[! + reg.error.message]], ali iz koda komponente proizlazi da to nije tako.

& polje korisničkog imena = `e-pošta`- označava da će se polje e-pošte koristiti kao korisničko ime.

& usergroupsField = `reg_type`- definira polje koje postavlja grupu u koju će se dodati novi korisnik.

& customValidators = `valueIn`- označava dodatne validatore koje treba izraditi ručno.

& potvrditi- validatori se postavljaju odvojeni zarezima za svako polje, a ako je za jedno polje potrebno više validatora, onda se i oni odvajaju dvotočkom. Analizirajmo ih zasebno:

korisničko ime: prazno To je jednostavna zamka neželjene pošte, što znači da polje korisničkog imena treba ostati prazno.

reg_type: valueIn = ^ Čitatelji; Pisci; Idlers ^- ograničavamo moguće skupine na tri navedene. U početnoj isporuci to nije slučaj, a zli hakeri se mogu registrirati, na primjer, pod grupom Administrator (ako je niste preimenovali).

puno ime: potrebno: minLength = ^ 6 ^- polje punog imena ne smije biti prazno i ​​sadržavati najmanje 6 znakova.

lozinka: potrebna: minLength = ^ 6 ^- slično za lozinku.

password_confirm: password_confirm = ^ lozinka ^- lozinka mora odgovarati.

email: potrebno: email- e-mail ne smije biti prazan i biti sam pošta.

Oblikovati [[! + error.message: default = `[[! $ Register.Form]]`]] prikazuje poruku o uspješnom slanju obrasca ili dijelu obrasca ako ste upravo posjetili stranicu ili ste je pogrešno ispunili.

Kreirajmo gornji validator vrijednostU... Da biste to učinili, stvorite isječak s imenom vrijednostU i sljedeći kod:

$ valueIn = eksplodirati (";", $ param); vratiti in_array ($ vrijednost, $ valueIn);

Sada morate stvoriti komad Registrirajte se.Obrazac ... U ovom slučaju, to će biti kako slijedi (pomoću Bootstrapa 3):

[[! + 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]]
`]]

Sva polja su obavezna

U ovom obliku, zabilježit ću nekoliko stvari o MODX-u:


- obrazac se obrađuje na istoj stranici na kojoj je prikazan.

Postavljanje vrijednosti od onih dobivenih iz obrasca tako da u slučaju neuspjeha korisnik ne mora ponovno sve unositi.

[[! + reg.error.email: notempty = `[[! + reg.error.email]]`]]- opet, u slučaju kvara, ispod polja će se prikazati poruka o pogrešci.

- obavezno naznačite naziv gumba ako ste prethodno postavili svojstvo & submitVar.


Sada ostaje stvoriti komad Email.Aktivacija s pismom koje stranica šalje korisniku:

Hvala na registraciji! Da biste aktivirali svoj račun, slijedite sljedeću poveznicu:

Aktivirajte svoj račun na Example.Com

Nakon aktivacije, moći ćete se prijaviti unosom svoje e-pošte i lozinke:

Prijaviti se:[[+ e-pošta]]

Zaporka:[[+ zaporka]]


Ovdje možete koristiti rezervirana mjesta s nazivima polja obrasca. Imajte na umu da su već napisani bez "reg." Dodano je i rezervirano mjesto [[+ potvrdi URL]], u kojem je aktivacijska poveznica već generirana, ne morate ništa učiniti.


Završni dodir umjetnosti registracije novog računa pomoću komponente Prijaviti se stvorit će stranicu za aktivaciju. Za ovu stranicu koristimo prazan predložak, a u sadržaju stranice samo trebamo navesti poziv oznake:

[[! Potvrditi registraciju? & preusmjeravanje na = `1`]]

gdje je 1 identifikator stranice na koju će korisnik biti preusmjeren u slučaju uspješne aktivacije. U tom slučaju on će već biti prijavljen.


Počnimo konfigurirati prijavu na korisnički profil. Obrazac autorizacije bit će jednostavan:

Dodajmo ga tako što ćemo ga nazvati na pravom mjestu:

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

Ovdje specificiramo dio s gore prikazanim obrascem za prijavu ( & loginTpl = `Auth.Login`), dio s kodom koji se prikazuje ovlaštenim korisnicima ( & logoutTpl = `Auth.Logout`), mali dio s izlazom pogreške prijave ( & errTpl = `Auth.Login.Error`). Parametri slijede:

& actionKey = `radnja` i & loginKey = `prijava`- glavni identifikatori za obradu zahtjeva. Prvi označava naziv parametra u POST zahtjevu, a drugi njegovu vrijednost. To jest, obrazac mora proći vrijednost $ _POST ["action"] = "login" tako da isječak Prijaviti se obradio ga.

& redirectToPrior = `1`- znači da ćemo nakon prijave biti preusmjereni na istu stranicu s koje smo se prijavili.

& logoutResourceId = `1`- prilikom napuštanja profila, idemo na stranicu s identifikatorom 1.


Chunk Auth.Prijava :

[[! + pogreške]]

Obrazac se obrađuje na istoj stranici. Ako dođe do pogreške, ona će se prikazati ispod obrasca u rezerviranom mjestu [[! + pogreške]]. Također morate zapamtiti veze na resurse s registracijom i obnavljanjem lozinke. Imajte na umu da je u polju za ime e-pošte = "korisničko ime" - u tom polju isječak duplicirao poštu Registar i jedinstven je za korisnike.


Chunk Auth.Odjava:

[] `& 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")) `]]

Odjavite se s profila

Ovaj dio nije obavezan ako su svi korisnici u istoj grupi. Ali za prikaz korisničke grupe, standardni isječci uključeni u komponentu Prijava nisu dovoljni. Možete napisati jednostavan isječak da biste dobili naziv grupe xPDO, ili možete koristiti gotovi isječak pdoKorisnici uključeno u paket pdoAlati... Parametri navedeni u ovom isječku:

& korisnici = `[[+ modx.user.id]]`- odabiremo samo trenutnog ovlaštenog korisnika.

& tpl = `User.HeaderBadge`- dio u kojem ćemo prikazati kratke informacije o korisniku.

& innerJoin- JSON sa spojevima tablica korisničkih grupa, opis je izvan dosega ovog članka. Glavna stvar je da djeluje J.

& Izaberi- JSON dodaje polje modUserGroup.name s aliasom group_name u odabir.


Komad s korisničkom značkom User.HeaderBadge :

Prijavljeni ste kao [[+ naziv_grupe]][[+ puno ime]] Osobni račun

Ako nam nije potrebna korisnička grupa, tada bi se sadržaj ovog dijela mogao umetnuti izravno u dio Auth.Odjava ... Ovdje možete prikazati rezervirana mjesta s bilo kojim poljima modUser i modUserProfile plus korištenje pdoKorisnici dodao polje grupno ime.


U komadu Auth.Login.Error jednostavan izlaz pogreške:

[[+ poruka]]

Završili smo s prijavom. U ovom trenutku, korisnik se može registrirati i uspješno prijaviti. Ali što ako je zaboravio svoju lozinku? U tom slučaju on klikne na vezu "Zaboravili ste lozinku?" i ide na stranicu za oporavak lozinke koju unaprijed kreiramo i tamo upućujemo poziv:

[[! Zaboravili ste lozinku? & tpl = `Auth.ForgotPass.Form` & submitVar =` forgotpass` & errTpl = `Auth.Login.Error` & sentTpl =` Auth.ForgotPass.Sent` & emailTpl = `Email.ForgotPass` & emailSubject =` Vraćanje računa pristup na primjeru. Com` & resetResourceId = `29`]]

Analizirajmo parametre ovog poziva:

& tpl = `Auth.ForgotPass.Form`- dio obrasca u kojem korisnik unosi svoj email.

& submitVar = `zaboravio sam`- u slučaju isječka ForgotPassword dovoljno je da parametar s ovim imenom bude proslijeđen poslužitelju, bez obzira s kojom nepraznom vrijednošću.

& errTpl = `Auth.Login.Error`- izlaz pogreške sličan je isječku za prijavu

& sentTpl = `Auth.ForgotPass.Sent`- ovaj dio sadrži sadržaj koji će se prikazati u slučaju uspješnog slanja pisma za promjenu lozinke.

& emailTpl = `Email.ForgotPass`- samo se pismo nalazi ovdje.

& Predmet e-pošte= `Vraćanje pristupa računu na stranici Example.Com` - zaglavlje poruke.

& resetResourceId = `29`- identifikator resursa na kojem će se lozinka vratiti na novu.


Komad Auth.ForgotPass.Form:

[[+ loginfp.errors]]

Ono što je ovdje novo je samo još jedan način prikazivanja pogrešaka u rezerviranom mjestu [[+ loginfp.errors]] i prosljeđivanje parametra da je ovaj obrazac taj koji poništava lozinku: .

Auth.ForgotPass.Sent:

Podaci za oporavak računa poslani su na navedenu adresu e-pošte: [[+ e-pošta]].

Ovdje možete koristiti podatke iz gornjeg obrasca.


Email.ForgotPass:

[[+ puno ime]],

Za aktiviranje nove lozinke posjetite sljedeću poveznicu:

Želim novu lozinku

Ako je sve prošlo dobro, moći ćete se prijaviti na svoj profil sa sljedećim podacima:

Prijaviti se:[[+ korisničko ime]]

Zaporka:[[+ zaporka]]

Hvala vam,
Primjer administracije web-mjesta.Com

Sve je vrlo slično dijelu pisma za aktivaciju, samo se lozinka generira ovdje u isječku.


Posljednji dodir ostaje stvoriti resurs na koji će korisnik prijeći od pisma da ažurira lozinku. U ovom resursu trebamo poziv:

[[! ResetPassword: prazno = `

Niste naručili poništavanje lozinke. Možda imate pogrešnu adresu. Možete otići na glavnu stranicu stranice ili koristiti gornji izbornik.

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

Ovaj kod će prikazati poruku ako iznenada netko ponovno zaluta na ovu stranicu ili samo slučajno. A ako je lozinka uspješno poništena, prikazat će se poruka iz dijela Auth.ForgotPass.Reset:

Vaša lozinka je uspješno vraćena na onu navedenu u pismu. Sada se možete prijaviti s ovom lozinkom. Ne zaboravite to promijeniti u svom profilu.

Sada imamo potpuno funkcionalan sustav autorizacije i registracije korisnika. Promjena profila ovlaštenih korisnika ostaje izvan okvira članka.


1. Napravite stranicu za registraciju i dodajte joj isječak poziva Registar.

2. Napravite dijelove s obrascem za registraciju Registrirajte se.Obrazac i aktivacijsko pismo Email.Aktivacija.

3. Napravite stranicu za potvrdu registracije i uputite poziv isječkom na nju Potvrdite registraciju.

4. Dodajte poziv s isječkom Prijaviti se gdje želimo postaviti obrazac za prijavu i bedž ovlaštenog korisnika.

5. Napravite dio s obrascem za prijavu Auth.Login , dio s podacima o ovlaštenom korisniku Auth.Odjava , dio s porukom o pogrešci Auth.Login.Error .

6. Napravite stranicu za oporavak lozinke i uputite poziv isječka na nju Zaboravili ste lozinku.

7. Napravite komad Auth.ForgotPass.Form s obrascem za oporavak lozinke, komad Auth.ForgotPass.Sent s porukom o uspješnom slanju pisma, komad Email.ForgotPass sa slovom za poništavanje lozinke.

8. Stvorite resurs s konačnim poništavanjem lozinke i postavite poziv isječka u njega Resetiranje lozinke.

9. Napravite komad Auth.ForgotPass.Reset s porukom o uspješnom poništavanju lozinke.

To je sve. Bit će mi drago svim dopunama i komentarima.

Foolproof je skup mjera za sprječavanje unosa netočnih podataka u obrazac. Na primjer, ako trebate unijeti pozitivan broj od 0 do 10 u polje, tada trebate provjeriti da korisnik ne unosi tekst ili broj koji ne leži u navedenom rasponu, tj. broj ne smije biti manji od nule niti veći od deset.

Zašto se unose netočni podaci? To je uglavnom zbog tri razloga.

  1. Korisnik je slučajno pogriješio, na primjer, nepažljivo je pročitao ono što treba naznačiti.
  2. Na web stranici od njih se dvosmisleno traži da unesu podatke, pa korisnik mora pogoditi i pretpostaviti što zapravo želi od njega. U ovom slučaju, stavovi programera i korisnika ne podudaraju se uvijek.
  3. Postoji niz ljudi koji upute shvaćaju kao izazov i pokušavaju učiniti suprotno. Takvi korisnici rezoniraju ovako: „Da, od mene se traži da unesem broj. Što će se dogoditi ako navedem slova?" Nakon toga traže očito netočne informacije i vide do čega će to dovesti.

Treba shvatiti da precizne i ispravne formulacije, iako smanjuju vjerojatnost pogrešaka, ni na koji način vas ne spašavaju od njih. Samo tehnička sredstva na strani poslužitelja omogućuju postizanje željenog rezultata i izbjegavanje unosa netočnih podataka. Ipak, revizija ili, kako se još naziva, validacija na strani klijenta omogućuje vam brzu provjeru ispravnosti podataka koje je unio korisnik, bez slanja obrasca na poslužitelj. Time se štedi vrijeme korisnika i smanjuje opterećenje poslužitelja. Sa stajališta upotrebljivosti, tu su i plusi - korisnik odmah dobiva poruku o tome koje je podatke netočno naveo i može ispraviti svoju pogrešku.

Obavezno polje

Neka polja obrasca moraju se ispuniti prije slanja na poslužitelj. To se, na primjer, odnosi na obrazac za registraciju, gdje morate unijeti korisničko ime i lozinku. Potrebni atribut se koristi za određivanje obveznih polja, kao što je prikazano u primjeru 1.

Primjer 1. Traženi atribut

HTML5 IE 10+ Cr Op Sa Fx

Obavezno polje

Prijaviti se:

Zaporka:

Obavezna polja moraju biti popunjena prije slanja obrasca, inače obrazac neće biti poslan poslužitelju i preglednik će o tome izdati upozorenje. Vrsta poruke ovisi o pregledniku; na primjer, Chrome prikazuje opis alata, kao što je prikazano na Sl. jedan.

Riža. 1. Obavezno polje nije popunjeno

Ispravnost podataka

U početku postoje dva polja u koja se automatski provjeravaju podaci koje je korisnik unio. Ovo je web adresa i adresa e-pošte. Preglednik Chrome također provjerava valjanost polja kalendarskih podataka, ali samo zato što nema kalendarsko sučelje klikni za odabir. Ove elemente karakteriziraju sljedeća pravila.

  • Web adresa ( ) mora sadržavati protokol (http: //, https: //, ftp: //).
  • Email adresa ( ) mora sadržavati slova ili brojeve prije simbola @, nakon njega, zatim točku i domenu prve razine.

Preglednici imaju malo drugačija pravila za provjeru valjanosti korisničkih podataka. Na primjer, Opera automatski zamjenjuje http: // protokol ispred unesenog teksta, dok drugi preglednici to očekuju od korisnika. Chrome i Opera zahtijevaju da točka bude u poštanskoj adresi, to nije obavezno za Firefox.

Primjer 2 prikazuje obrazac sa obaveznim poljima u kojem preglednik provjerava valjanost dva polja.

Primjer 2. Točnost podataka

HTML5 IE 10+ Cr Op Sa Fx

Ispravnost podataka

Ispunite obrazac (sva polja su obavezna)

Ime:

e-pošta:

stranica:

Opera provjerava valjanost elementa obrasca samo ako je prisutan atribut name.

Što se događa u Operi kada unesete netočne podatke prikazano je na Sl. 2.

Riža. 2. Upozorenje o netočnim podacima

Predložak za unos

Neki se podaci ne mogu kategorizirati kao jedna vrsta elementa obrasca, pa za njih morate koristiti tekstualni okvir. Štoviše, njihov se unos odvija prema određenom standardu. Dakle, IP adresa sadrži četiri broja odvojena točkom (192.168.0.1), poštanski broj Rusije ograničen je na šest znamenki (124007), telefon sadrži broj grada i određeni broj znamenki često odvojenih crticom ( 391 555-341-42), itd. Preglednik mora navesti predložak za unos kako bi u skladu s njim potvrdio korisnički unos. Za to se koristi atribut uzorka, a njegova vrijednost je regularni izraz. Neke tipične vrijednosti navedene su u tablici. jedan.

Primjer 3 traži heksadecimalnu vrijednost boje (# ffcc00) i ako nije u ovom rasponu, preglednik prikazuje poruku o pogrešci.

Primjer 3. Ulazni predložak

HTML5 IE 10+ Cr Op Sa Fx

Unos boje

Unesite heksadecimalnu vrijednost boje (mora početi s #)

Na sl. 3 prikazuje upozorenje u pregledniku Chrome.

Riža. 3. Uneseni podaci ne odgovaraju predlošku

Otkazivanje validacije

Validacija nije uvijek potrebna za obrazac, na primjer, programer želi koristiti univerzalno rješenje u JavaScriptu i ne treba mu duplikat provjere valjanosti od strane preglednika. U takvim slučajevima morate onemogućiti inline provjeru valjanosti. Za to se primjenjuje novalidate atribut oznake.

... Primjer 4 pokazuje korištenje ovog atributa.

Primjer 4. Otkazivanje validacije

HTML5 IE 10+ Cr Op Sa Fx

Novalidate atribut

U sličnu svrhu koristi se atribut formnovalidate koji se dodaje gumbu za slanje obrasca, u ovom slučaju oznaci ... U ovom slučaju, obrazac iz primjera 4 će izgledati ovako.

Za bilo kojeg web developera još ne postoji ozbiljniji problem od potpune kompatibilnosti njegovog proizvoda s više preglednika. Vjerojatno je to jedan od glavnih zadataka dobrog stručnjaka: osigurati da se njegova stranica uvijek ispravno prikazuje u svim preglednicima.

Parametar potreban koji se ponekad koristi za unos ne radi u drevnom IE-u, koji se jednostavno ne može ostaviti na taj način. Umirovljeni korisnici koji još uvijek koriste IE6 trebali bi biti jednako jednostavni na vašoj web-lokaciji kao i korisnici najnovije verzije Google Chromea. Tko osim web programera može brinuti o njima.

O bolnom, o Internet Exploreru

Za normalne preglednike kao što su Firefox, Opera i Google Chrome, ovaj zadatak je relativno jednostavan. Čak i starije verzije ovih preglednika jednako dobro prikazuju html-kod, osim naravno ako se u njemu ne koristi neka nova tehnologija. Ali da bi se to postiglo u preglednicima obitelji Internet Explorer, potreban je ogroman trud.

Svaka verzija preglednika Internet Exlorer ima svoju jedinstvenu glupost. Ono što radi u IE6 možda neće raditi ispravno u IE7, i obrnuto. Ovaj Microsoftov zoološki vrt nije uspio nadvladati ni u najnovijoj verziji svog preglednika.

Ne mogu razumjeti zašto programeri preglednika ne mogu jednostavno otvoriti i pročitati W3C standarde za izradu web stranica.

Stoga, kao web developer, moram djelovati kao svojevrsni "sloj" između hirovitih preglednika i posjetitelja stranice koji zahtijevaju znanje i naočale. I super je što su web programeri dosad uspjeli.

Dakle, kako se od vas zahtijeva da radite u starijim verzijama IE-a?

JS nam dolazi u pomoć. Prije to nisam mogao podnijeti, ali sada ne vidim daljnji put bez toga u prostranstvu "ispravnog" WEB-a.

Nisam sam izmislio rješenje ispod, nego sam ga preuzeo s buržoaskog bloga. Pošto sam pohlepan, a blog je buržoaski, neću linkovati na njega.

Funkcija će biti odgovorna za sve. fnCheckFields ()... Postavite JS kod na svoju web stranicu:

Obično se preporuča postaviti između html oznaka GLAVA na početku stranice, ali bih ipak preporučio da ga postavite na sam dno stranice prije završne oznake TIJELO... Dakle, JS ima manji utjecaj na brzinu učitavanja stranice.

Prozor za unos, u koji se mora unijeti traženi parametar, trebao bi izgledati ovako u html jeziku:

Ova skripta radi vrlo jednostavno: nakon klika na gumb poslati, skripta provjerava sve ulaze na prisutnost traženog parametra i ako ga pronađe, onda prema tome gleda unesenu vrijednost ovog polja. Ako se u takav unos ništa ne unese, prikazuje se prozor s upozorenjem o potrebi unosa. Sukladno tome, podaci se nikamo ne šalju.

Također je sjajno da ako imate normalan preglednik koji je već naučio razumjeti ovaj parametar kako se očekuje, takav prozor s upozorenjem neće iskočiti i standardni alati za obradu potrebnog parametra za vaš preglednik će raditi.

Podijelite na društvenim mrežama mreže

Vrhunski povezani članci