Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Greške
  • Izrada jednostavnog kontakt forme sa Angularjs i php. Sigurnost korisničkih podataka Zašto je ovaj obrazac instaliran?

Izrada jednostavnog kontakt forme sa Angularjs i php. Sigurnost korisničkih podataka Zašto je ovaj obrazac instaliran?

Vrlo je zgodno 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-cifrene strukture kao što je:

Zajedno, ovo formira naziv pune verzije (Major.Minor.Pathch.Build):

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

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

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

Evo jednostavnog interfejsa preko kojeg možete dobiti pun broj verzije programa u tekstualnom obliku ili kao jedinstveni celobrojni identifikator.

Sada ću dati sadržaj version.cpp:

#include #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 & verzija :: AsText () (statički const std :: string text = boost :: str (boost :: format ("% 1%.% 2%.% 3%.% 4%")) % static_cast< unsigned >(MAJOR)% MINOR% PATCH% 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 >(MAJOR)<< (size - sizeof (MAJOR) ) * 8 ) | (static_cast < uint64_t >(MALOLJETNI)<< (size - sizeof (MAJOR) - sizeof (MINOR) ) * 8 ) | (static_cast < uint64_t >(PATCH)<< (size - sizeof (MAJOR) - sizeof (MINOR) - sizeof (PATCH) ) * 8 ) | BUILD; return number; }

Ovdje je sve trivijalno i mislim da nije potrebno komentarisati. Poslednja stvar koja je preostala je mehanizam za promenu BUILD vrednosti 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 REQUIRED) Subversion_WC_INFO ($ (PROJECT_SOURCE_DIR) Repo) fajl (READ $ (VERSION_FILE) OLD_CODE) foreach (LINE $ (OLD_CODE)) "string = "BUILD_NUMBER $ (LINE)) if (BUILD_NUMBER) string (REGEX REPLACE" + $ "$ (Repo_WC_REVISION) LINE $ (LINE)) endif () set (NEW_CODE $ (NEW_CODE) $ (LINE)) endforeach ( LINE) fajl ( WRITE $ (VERSION_FILE) " $ (NEW_CODE) ")

Jedina suptilnost u skripti je u posljednjem redu, tačnije, navodnici u "$ (NEW_CODE)", bez njih će svi ";" biti uklonjeni.

Potrebne su nam sljedeće stranice:

  • Stranica za registraciju sa formularom za registraciju
  • Stranica za aktivaciju naloga
  • Stranica za oporavak lozinke
  • Stranica za poništavanje lozinke

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

Ovo je stranica za registraciju koju želimo da dobijemo:

Ovdje će tip računa odrediti u koju grupu ćemo registrirati korisnika. Također, polje za identifikaciju (korisničko ime) će biti email.

Dodajte isječak poziva na stranicu Registrirajte se:

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

Hvala na registraciji. Na Vaš email [[! + reg.e-mail]] poslana je e-poruka sa vezom za aktivaciju vašeg naloga. Slijedite ovaj link 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`]] [[! + Error.message: default = `[[! $ Register.Form]]`]]

Imajte na umu da su sve registracijske oznake potrebne obavezno poziv nije keširan. Ista pravila vrijede kada obrađujete obrasce s isječkom FormIta.

Analizirajmo parametre poziva:

& submitVar = `registar-btn`- specificira naziv atributa oznake unos... Odnosno, isječak će raditi samo ako je obrazac poslat pomoću dugmeta sa određenim imenom.

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

& activationEmailTpl = `Email.Aktivacija`- komad sa aktivacijskim pismom, o tome kasnije.

& placeholderPrefix = `reg.`- označava da svi čuvari mjesta, s rijetkim izuzecima (više o tome kasnije), koji su kreirani u ovom isječku, moraju početi sa "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 poruka će biti napisana na čuvaru mjesta [[! + error.message]]. Prilično čudno ime, a trenutno postoji greška u dokumentaciji. To piše tamo [[! + reg.error.message]], ali iz koda komponente proizlazi da to nije slučaj.

& korisničko imeField = `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 kreirati ručno.

& potvrditi- validatori su navedeni odvojeni zarezima za svako polje, a ako je za jedno polje potrebno više validatora, oni su također odvojeni 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 ostaviti prazno.

reg_type: valueIn = ^ Čitači; Pisci; Idlers ^- ograničavamo moguće grupe 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 ^- Lozinke se moraju podudarati.

email: potrebno: email- e-mail ne treba da bude prazan i da bude sama pošta.

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

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

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

Sada morate kreirati komad Register.Form ... U ovom slučaju, to će biti kako slijedi (koristeći Bootstrap 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, napomenuću nekoliko stvari o MODX-u:


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

Podešavanje vrijednosti od onih primljenih iz obrasca tako da u slučaju kvara korisnik ne mora ponovo sve unositi.

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

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


Sada ostaje kreirati komad Email.Activation sa pismom koje sajt šalje korisniku:

Hvala na registraciji! Da aktivirate svoj račun, slijedite sljedeći link:

Aktivirajte svoj račun na Example.Com

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

Ulogovati se:[[+ email]]

Lozinka:[[+ lozinka]]


Ovdje možete koristiti čuvare mjesta sa nazivima polja obrasca. Imajte na umu da su već napisani bez "reg." Dodan je i čuvar mjesta [[+ potvrdi URL]], u kojem je link za aktivaciju već generiran, ne morate ništa učiniti.


Posljednji dodir umjetnosti registracije novog računa pomoću komponente Ulogovati se kreirat će stranicu za aktivaciju. Za ovu stranicu koristimo prazan predložak, au sadržaju stranice samo trebamo navesti poziv oznake:

[[! ConfirmRegister? & redirectTo = `1`]]

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


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

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

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

Ovdje specificiramo dio sa formom za prijavu prikazanom iznad ( & loginTpl = `Auth.Login`), komad sa kodom koji se prikazuje ovlaštenim korisnicima ( & logoutTpl = `Auth.Logout`), mali komad s izlazom greške pri prijavi ( & errTpl = `Auth.Login.Error`). Parametri slijede:

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

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

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


Chunk Auth.Login :

[[! + greške]]

Obrazac se obrađuje na istoj stranici. Ako dođe do greške, ona će biti prikazana ispod obrasca u čuvaru mjesta [[! + greške]]. Također morate zapamtiti veze do resursa s registracijom i obnavljanjem lozinke. Imajte na umu da je u polju za ime e-pošte = "korisničko ime" - upravo u ovom polju isječak je duplirao mail Registrirajte se i jedinstven je za korisnike.


Chunk Auth.Logout:

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

Odjavite se sa 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 za prijavu nisu dovoljni. Možete napisati jednostavan isječak da biste dobili naziv grupe xPDO, ili možete koristiti gotov isječak pdoUsers uključeno u paket pdoTools... Parametri navedeni u ovom isječku:

& korisnici = `[[+ modx.user.id]]`- biramo 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 okvira ovog članka. Glavna stvar je da radi J.

& odaberite- JSON dodavanjem polja modUserGroup.name sa pseudonimom group_name u odabir.


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

Prijavljeni ste kao [[+ ime_grupe]][[+ puno ime]] Lični račun

Ako nam nije bila potrebna korisnička grupa, onda bi sadržaj ovog dijela mogao biti umetnut direktno u dio Auth.Logout ... Ovdje možete prikazati čuvare mjesta sa bilo kojim poljima modUser i modUserProfile plus korištenje pdoUsers je dodao polje ime_grupe.


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

[[+ poruka]]

Završili smo sa prijavom. U ovom trenutku, korisnik se može registrirati i uspješno prijaviti. Ali šta 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 naloga pristup na primjeru. Com` & resetResourceId = `29`]]

Analizirajmo parametre ovog poziva:

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

& submitVar = `zaboravio sam`- u slučaju isječka ForgotPassword, dovoljno je da parametar sa ovim imenom bude proslijeđen serveru, bez obzira sa kojom vrijednošću koja nije prazna.

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

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

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

& emailSubject= `Vraćanje pristupa nalogu na stranici Example.Com` - zaglavlje poruke.

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


Chunk Auth.ForgotPass.Form:

[[+ loginfp.errors]]

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

Auth.ForgotPass.Sent:

Informacije o oporavku računa su poslane na navedenu adresu e-pošte: [[+ email]].

Ovdje možete koristiti podatke iz gornjeg obrasca.


Email.ForgotPass:

[[+ puno ime]],

Za aktiviranje nove lozinke posjetite sljedeći link:

Želim novu lozinku

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

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

Lozinka:[[+ lozinka]]

hvala,
Administracija web-mjesta Primjer.Com

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


Posljednji dodir ostaje stvaranje resursa na koji će korisnik ići od pisma da ažurira lozinku. U ovom resursu nam je potreban poziv:

[[! ResetPassword: prazno = `

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

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

Ovaj kod će prikazati poruku ako iznenada neko ponovo zaluta na ovu stranicu ili samo slučajno. A ako je lozinka uspješno resetirana, 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 sa ovom lozinkom. Ne zaboravite to promijeniti u svom profilu.

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


1. Kreirajte stranicu za registraciju i dodajte joj isječak poziva Registrirajte se.

2. Kreirajte komade pomoću obrasca za registraciju Register.Form i aktivacijsko pismo Email.Activation.

3. Kreirajte stranicu za potvrdu registracije i uputite poziv isječka na nju ConfirmRegister.

4. Dodajte poziv s isječkom Ulogovati se gde želimo da postavimo formular za prijavu i bedž ovlašćenog korisnika.

5. Kreirajte dio sa formularom za prijavu Auth.Login , dio s informacijama o ovlaštenom korisniku Auth.Logout , komad s porukom o grešci Auth.Login.Error .

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

7. Kreirajte komad Auth.ForgotPass.Form sa obrascem za oporavak lozinke, komad Auth.ForgotPass.Sent sa porukom o uspješnom slanju pisma, komad Email.ForgotPass sa pismom za resetovanje lozinke.

8. Kreirajte resurs sa konačnim poništavanjem lozinke i postavite poziv isječka u njega Reset lozinke.

9. Kreirajte komad Auth.ForgotPass.Reset sa porukom o uspješnom resetovanju lozinke.

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

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

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

  1. Korisnik je slučajno napravio grešku, na primjer, nepažljivo je pročitao ono što treba da naznači.
  2. Na web stranici od njih se dvosmisleno traži da unesu podatke, tako da korisnik mora pogoditi i pretpostaviti šta zapravo želi od njega. U ovom slučaju, stavovi programera i korisnika ne poklapaju se uvijek.
  3. Postoji veliki broj ljudi koji uputstva shvataju kao izazov i pokušavaju da urade suprotno. Takvi korisnici rezonuju ovako: „Da, od mene se traži da unesem broj. Šta će se dogoditi ako naznačim slova?" Nakon toga traže očito netačne informacije i vide do čega će to dovesti.

Treba shvatiti da precizne i ispravne formulacije, iako smanjuju vjerovatnoću grešaka, ni na koji način vas ne spašavaju od njih. Samo tehnička sredstva na strani servera omogućavaju vam postizanje željenog rezultata i izbjegavanje unosa pogrešnih podataka. Ipak, revizija ili, kako se još naziva, validacija na strani klijenta omogućava vam da brzo provjerite ispravnost podataka koje je unio korisnik, bez slanja obrasca na server. Ovo štedi vrijeme korisnika i smanjuje opterećenje servera. Sa stanovišta upotrebljivosti, postoje i plusi - korisnik odmah dobija poruku o tome koje je podatke pogrešno naveo i može ispraviti svoju grešku.

obavezno polje

Neka polja obrasca moraju biti popunjena prije slanja na server. Ovo se, na primjer, odnosi na obrazac za registraciju, gdje se od vas traži da unesete korisničko ime i lozinku. Zahtevani atribut se koristi za specifikaciju obaveznih polja, kao što je prikazano u Primeru 1.

Primjer 1. Traženi atribut

HTML5 IE 10+ Cr Op Sa Fx

obavezno polje

Ulogovati se:

Lozinka:

Obavezna polja moraju biti popunjena prije slanja obrasca, inače obrazac neće biti poslan serveru i pretraživač će o tome izdati upozorenje. Tip poruke zavisi od pretraživača; na primer, Chrome prikazuje tooltip, kao što je prikazano na Sl. 1.

Rice. 1. Obavezno polje nije popunjeno

Ispravnost podataka

U početku postoje dva polja u koja se automatski provjeravaju podaci koje je unio korisnik. Ovo je web adresa i adresa e-pošte. Chrome pretraživač također provjerava ispravnost polja kalendarskih podataka, ali samo zato što nema interfejs kalendara sa klikom za odabir. Ove elemente karakteriziraju sljedeća pravila.

  • Web adresa ( ) mora sadržavati protokol (http: //, https: //, ftp: //).
  • E-mail adresa ( ) mora sadržavati slova ili brojeve prije simbola @, nakon njega, zatim tačku i domenu prvog nivoa.

Preglednici imaju malo drugačiju politiku za provjeru valjanosti korisničkih podataka. Na primjer, Opera automatski zamjenjuje http: // protokol ispred unesenog teksta, dok drugi pretraživači to očekuju od korisnika. Chrome i Opera zahtijevaju da tačka bude u poštanskoj adresi, to je opciono za Firefox.

Primjer 2 prikazuje obrazac sa obaveznim poljima u kojima su dva polja potvrđena od strane pretraživača.

Primjer 2. Ispravnost podataka

HTML5 IE 10+ Cr Op Sa Fx

Ispravnost podataka

Popunite formular (sva polja su obavezna)

ime:

Email:

Sajt:

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

Šta se dešava u Operi kada unesete netačne podatke prikazano je na Sl. 2.

Rice. 2. Upozorenje o netačnim podacima

Input Template

Neki podaci se ne mogu kategorizirati kao jedan tip elementa obrasca, tako da za njih morate koristiti okvir za tekst. Štaviše, njihov unos se odvija prema određenom standardu. Dakle, IP adresa sadrži četiri broja razdvojena tačkom (192.168.0.1), poštanski broj Rusije je ograničen na šest cifara (124007), telefon sadrži broj grada i određeni broj cifara često odvojenih crticom ( 391 555-341-42), itd. Pregledač treba navesti šablon za unos kako bi u skladu s njim proveravao korisnički unos. Za to se koristi atribut uzorka, a njegova vrijednost je regularni izraz. Neke tipične vrijednosti su navedene u tabeli. 1.

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

Primjer 3. Predložak unosa

HTML5 IE 10+ Cr Op Sa Fx

Unos boje

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

Na sl. 3 prikazuje upozorenje u Chrome pretraživaču.

Rice. 3. Uneseni podaci ne odgovaraju predlošku

Otkazivanje validacije

Validacija nije uvijek potrebna za obrazac, na primjer, programer želi da koristi univerzalno rješenje u JavaScript-u i ne treba mu duplikat validacije od strane pretraživača. U takvim slučajevima morate onemogućiti inline validaciju. Za ovo se primjenjuje novalidate atribut oznake.

... Primjer 4 pokazuje upotrebu 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 podnošenje obrasca, u ovom slučaju oznaci ... U ovom slučaju, obrazac iz primjera 4 će izgledati ovako.

Za bilo kog web developera još uvijek ne postoji ozbiljniji problem od potpune kompatibilnosti njegovog proizvoda sa različitim pretraživačima. Vjerovatno je to jedan od glavnih zadataka dobrog stručnjaka: osigurati da se njegova web stranica uvijek ispravno prikazuje u svim pretraživačima.

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

O bolnom, o Internet Exploreru

Za normalne pretraživače kao što su Firefox, Opera i Google Chrome, ovaj zadatak je relativno lak. Čak i starije verzije ovih pretraživača jednako dobro prikazuju html-kod, osim naravno ako se u njemu koristi neka nova tehnologija. Ali da bi se to postiglo u pretraživačima iz porodice Internet Explorer, potreban je ogroman trud.

Svaka verzija Internet Exlorer pretraživača 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 pretraživača.

Ne mogu da razumem zašto programeri pretraživača ne mogu jednostavno da se otvore i pročitaju W3C standarde za izgradnju sajtova.

Stoga, kao web programer, moram da se ponašam kao neka vrsta "sloja" između hirovitih pretraživača i posetilaca sajta koji zahtevaju znanje i naočare. I sjajno je što su web programeri do sada uspjeli.

Pa kako se od vas traži da radite u starijim verzijama IE-a?

JS nam dolazi u pomoć. Ranije to nisam mogao izdržati, ali sada ne vidim dalji put bez toga u prostranstvu "ispravnog" WEB-a.

Nisam sam izmislio rešenje ispod, već sam ga preuzeo sa 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čuje da ga postavite između html tagova HEAD 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 uticaj na brzinu učitavanja stranice.

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

Ova skripta radi vrlo jednostavno: nakon klika na dugme poslati, skripta provjerava sve ulaze na prisustvo traženog parametra i ako ga pronađe, onda u skladu s tim gleda unesenu vrijednost ovog polja. Ako se u takav unos ništa ne unese, pojavljuje se prozor upozorenja o potrebi unosa. Shodno tome, podaci se nikuda ne šalju.

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

Podijelite na društvenim mrežama mreže

Top srodni članci