Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Erori
  • Crearea unui formular de contact simplu cu Angularjs și php. Securitatea datelor utilizatorilor De ce a fost instalat acest formular?

Crearea unui formular de contact simplu cu Angularjs și php. Securitatea datelor utilizatorilor De ce a fost instalat acest formular?

Este foarte convenabil să știți întotdeauna ce versiune specifică este acest sau acel ansamblu al proiectului. Acest lucru se face de obicei prin introducerea unui număr de versiune format din mai multe cifre. Sunt un susținător al unei structuri de 4 cifre precum:

Împreună, aceasta formează denumirea completă a versiunii (Major.Minor.Pathch.Build):

Unii oameni folosesc o valoare numerică unică ca build, care este incrementată de fiecare dată, de exemplu, în timpul unei build nocturne. Cred că nu are rost în acest sens - este mult mai convenabil să legați acest număr la o revizuire în depozit. Folosesc Subversion și CMake, așa că voi demonstra cum puteți automatiza postarea unei versiuni de compilare cu aceste instrumente.

Mai întâi, trebuie să adăugați un fișier antet la proiect (de exemplu, version.h):

#include #include Versiune de spațiu de nume (const std :: șir și AsText (); boost :: uint64_t AsNumber ();)

Iată o interfață simplă prin care puteți obține numărul complet al versiunii din program sub formă de text sau ca un identificator unic întreg.

Acum voi da conținutul version.cpp:

#include #include spațiu de nume „../version.h” (const boost :: uint8_t MAJOR = 4; const boost :: uint16_t MINOR = 6; const boost :: uint16_t PATCH = 12; const boost :: uint32_t BUILD = 589; // Această valoare va fi schimbată automat) const std :: string & Version :: AsText () (static const std :: string text = boost :: str (boost :: format ("% 1%.% 2%.% 3%.% 4%)") % static_cast< unsigned >(MAJOR)% MINOR% PATCH% CONSTRUIRE); returnează text; ) boost :: uint64_t Versiune :: 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 >(MINOR)<< (size - sizeof (MAJOR) - sizeof (MINOR) ) * 8 ) | (static_cast < uint64_t >(PLASTURE)<< (size - sizeof (MAJOR) - sizeof (MINOR) - sizeof (PATCH) ) * 8 ) | BUILD; return number; }

Totul este banal aici și, cred, nu necesită comentarii. Ultimul lucru rămas este mecanismul de schimbare a valorii BUILD la numărul de revizuire din depozit. CMake se va descurca bine, doar adăugați următorul cod la CMakeLists.txt:

set (VERSION_FILE ../ common / sources / version.cpp) find_package (Subversion REQUIRED) Subversion_WC_INFO ($ (PROJECT_SOURCE_DIR) Repo) fișier (READ $ (VERSION_FILE) OLD_CODE) foreach (LINE $ (OLD_CODEX)) "șir = (+) „BUILD_NUMBER $ (LINE)) if (BUILD_NUMBER) șir (REGEX REPLACE” + $ „$ (Repo_WC_REVISION) LINE $ (LINE)) endif () set (NEW_CODE $ (NEW_CODE) $ (LINE)) fișier endforeach ( LINE) ( SCRIE $ (VERSION_FILE) " $ (NEW_CODE) ")

Singura subtilitate din script este în ultima linie și, mai precis, ghilimele din „$ (NEW_CODE)”, fără ca toate „;” să fie eliminate.

Avem nevoie de următoarele pagini:

  • Pagina de înregistrare cu formular de înregistrare
  • Pagina de activare a contului
  • Pagina de recuperare a parolei
  • Pagina de resetare a parolei

Formularul de conectare la site va fi plasat pe toate paginile site-ului (de exemplu, în antet).

Aceasta este pagina de înregistrare pe care dorim să o primim:

Aici, tipul de cont va determina cu ce grup înregistrăm utilizatorul. De asemenea, câmpul de identificare (nume utilizator) va fi e-mail.

Adăugați un fragment de apel la pagină Inregistreaza-te:

[[! Inregistreaza-te? & submitVar = `register-btn` & activationResourceId =` 27` & activationEmailTpl = `Email.Activation` & activationEmailSubject =` Sunteți înregistrat pe example.com` & placeholderPrefix = `reg.` & successMsg =`

Multumim pentru inregistrare. La adresa ta de e-mail [[! + reg.email]] a fost trimis un e-mail cu un link pentru a vă activa contul. Urmați acest link pentru a vă finaliza înregistrarea.
`& usernameField =` email` & usergroupsField = `reg_type` & customValidators =` valueIn` & validate = `nume utilizator: necompletat, reg_type: valueIn = ^ Cititori; Scriitori; Idlers ^, nume complet: necesar: minLength = ^ 6 ^, parola : obligatoriu: minLength = ^ 6 ^, password_confirm: password_confirm = ^ parola ^, e-mail: obligatoriu: email`]] [[! + Error.message: default = `[[! $ Register.Form]]`]]

Vă rugăm să rețineți că toate etichetele de înregistrare au nevoie neapărat apel necacheat. Aceleași reguli se aplică la procesarea formularelor cu fragmentul FormIt.

Să analizăm parametrii apelului:

& submitVar = `register-btn`- specifică atributul numelui etichetei intrare... Adică, fragmentul va funcționa numai dacă formularul este trimis printr-un buton cu un nume specific.

& activationResourceId = `42`- privind in fata, 42 este identificatorul paginii pe care vom activa utilizatorul.

& activationEmailTpl = `E-mail.Activare`- bucată cu o scrisoare de activare, despre asta mai târziu.

& placeholderPrefix = `reg.`- indică faptul că toți substituenții, cu rare excepții (mai multe despre asta mai târziu), care sunt creați în acest fragment, trebuie să înceapă cu „reg.”

& succesMsg- mesajul care va fi afișat la trimiterea cu succes a formularului. Rețineți că puteți specifica valori din formular și orice alte etichete din acesta. Acest mesaj va fi scris substituentului [[! + mesaj.de eroare]]. Un nume destul de ciudat și există o eroare în documentație în acest moment. E scris acolo [[! + reg.error.message]], dar din codul componentelor rezultă că nu este cazul.

& usernameField = `email`- indică faptul că câmpul de e-mail va fi folosit ca nume de utilizator.

& usergroupsField = `reg_type`- definește câmpul care stabilește grupul la care va fi adăugat noul utilizator.

& customValidators = `valueIn`- indică validatori suplimentari care trebuie creați manual.

& validare- validatorii sunt setati separati prin virgula pentru fiecare camp, iar daca sunt necesari mai multi validatori pentru un singur camp, atunci acestea sunt separate prin doua puncte. Să le analizăm separat:

nume de utilizator: gol Este o simplă capcană pentru spam, ceea ce înseamnă că câmpul pentru numele de utilizator trebuie lăsat necompletat.

reg_type: valueIn = ^ Cititori; Scriitori; Inactivi ^- limităm grupurile posibile la cele trei indicate. În livrarea inițială, acesta nu este cazul, iar hackerii răi se pot înregistra, de exemplu, în grupul Administrator (dacă nu l-ați redenumit).

nume complet: obligatoriu: minLength = ^ 6 ^- câmpul pentru numele complet nu trebuie să fie gol și să conțină cel puțin 6 caractere.

parola: obligatorie: minLength = ^ 6 ^- la fel pentru parola.

password_confirm: password_confirm = ^ parola ^- Parolele trebuie să se potrtivească.

email: obligatoriu: email- e-mailul nu trebuie să fie gol și să fie e-mailul în sine.

Proiecta [[! + error.message: implicit = `[[! $ Register.Form]]`]] afișează un mesaj despre trimiterea cu succes a formularului sau fragmentul de formular dacă tocmai ați vizitat pagina sau ați completat-o ​​incorect.

Să creăm validatorul de mai sus valueIn... Pentru a face acest lucru, creați un fragment cu numele valueIn si urmatorul cod:

$ valueIn = explode (";", $ param); return in_array ($ valoare, $ valueIn);

Acum trebuie să creați o bucată Înregistrare.Formular ... În acest caz, va fi după cum urmează (folosind Bootstrap 3):

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

Toate campurile sunt necesare

În această formă, voi nota câteva lucruri despre MODX:


- formularul este procesat pe aceeași pagină pe care este afișat.

Setarea valorii din cele primite din formular astfel incat in caz de esec utilizatorul sa nu fie nevoit sa introduca din nou totul.

[[! + reg.error.email: notempty = `[[! + reg.error.email]]`]]- din nou, în caz de defecțiune, sub câmp va fi afișat un mesaj de eroare.

- asigurați-vă că indicați numele butonului dacă ați setat anterior proprietatea & submitVar.


Acum rămâne să creăm o bucată E-mail.Activare cu scrisoarea pe care site-ul o trimite utilizatorului:

Multumim pentru inregistrare! Pentru a vă activa contul, vă rugăm să urmați următorul link:

Activează-ți contul pe Example.Com

După activare, vă veți putea autentifica introducând adresa de e-mail și parola:

Autentificare:[[+ e-mail]]

Parola:[[+ parola]]


Aici puteți folosi substituenți cu numele câmpurilor de formular. Rețineți că sunt deja scrise fără „reg”. Este adăugat și un substituent [[+ confirmUrl]], în care linkul de activare a fost deja generat, nici nu trebuie să faci nimic.


Atingerea finală a artei înregistrării unui cont nou folosind o componentă Autentificare va crea o pagină de activare. Folosim un șablon gol pentru această pagină, iar în conținutul paginii, trebuie doar să specificăm un apel către etichetă:

[[! Confirmați înregistrarea? & redirectTo = `1`]]

unde 1 este identificatorul paginii către care utilizatorul va fi redirecționat în cazul activării cu succes. În acest caz, el va fi deja autentificat.


Să începem configurarea autentificarii la profilul utilizatorului. Formularul de autorizare va fi simplu:

Să-l adăugăm numindu-l în locul potrivit:

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

Aici specificăm o bucată cu formularul de autentificare prezentat mai sus ( & loginTpl = `Auth.Login`), o bucată cu un cod afișat utilizatorilor autorizați ( & logoutTpl = `Auth.Logout`), o bucată mică cu rezultatul unei erori de conectare ( & errTpl = `Auth.Login.Error`). Urmează parametrii:

& actionKey = `acțiune`și & loginKey = `login`- identificatorii principali pentru procesarea cererii. Primul înseamnă numele parametrului din cererea POST, iar al doilea înseamnă valoarea acestuia. Adică, formularul trebuie să treacă valoarea $ _POST ["action"] = "login", astfel încât fragmentul Autentificare l-a procesat.

& redirectToPrior = `1`- înseamnă că după autentificare, vom fi redirecționați către aceeași pagină de pe care ne-am autentificat.

& logoutResourceId = `1`- la iesirea din profil vom merge la pagina cu identificatorul 1.


Autentificare bloc :

[[! + erori]]

Formularul este procesat pe aceeași pagină. Dacă apare o eroare, aceasta va fi afișată sub formular în substituent [[! + erori]]. De asemenea, trebuie să vă amintiți linkurile către resurse cu Înregistrare și recuperare parole. Rețineți că în câmpul pentru nume de e-mail = „nume utilizator” - în acest câmp fragmentul a duplicat e-mailul Inregistreaza-teși este unic pentru utilizatori.


Auth.Logout bloc:

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

Deconectați-vă de la profil

Această parte este opțională dacă toți utilizatorii sunt în același grup. Dar pentru a afișa un grup de utilizatori, fragmentele standard incluse în componenta Login nu sunt suficiente. Puteți scrie un fragment simplu pentru a obține numele grupului xPDO, sau puteți folosi un fragment gata făcut pdoUtilizatori incluse in pachet pdoTools... Parametrii specificați în acest fragment:

& utilizatori = `[[+ modx.user.id]]`- selectam doar utilizatorul autorizat curent.

& tpl = `Utilizator.HeaderBadge`- o bucată în care vom afișa informații scurte despre utilizator.

& innerJoin- JSON cu îmbinări ale tabelelor de grupuri de utilizatori, descrierea depășește domeniul de aplicare al acestui articol. Principalul lucru este că funcționează J.

& Selectați- JSON adăugând câmpul modUserGroup.name cu aliasul group_name la selecție.


Bucățiune cu insigna utilizatorului User.HeaderBadge :

Sunteți autentificat ca [[+ group_name]][[+ nume complet]] Cont personal

Dacă nu aveam nevoie de un grup de utilizatori, atunci conținutul acestei părți ar putea fi inserat direct în fragment Auth.Logout ... Aici puteți afișa substituenți cu orice câmpuri modUser și modUserProfile plus utilizarea pdoUtilizatori a adăugat un câmp numele Grupului.


Într-o bucată Auth.Login.Errore ieșire de eroare simplă:

[[+ mesaj]]

Am terminat cu autentificarea. În acest moment, utilizatorul se poate înregistra și se poate autentifica cu succes. Dar dacă și-a uitat parola? În acest caz, el face clic pe linkul „Ați uitat parola?” și merge la pagina de recuperare a parolei, pe care o pre-creăm și plasăm apelul acolo:

[[! Ați uitat parola? & tpl = `Auth.ForgotPass.Form` & submitVar =` forgotpass` & errTpl = `Auth.Login.Error` & sentTpl =` Auth.ForgotPass.Sent` & emailTpl = `Email.ForgotPass` & emailSubject =` Restaurarea contului acces pe Exemplu. Com` & resetResourceId = `29`]]

Să analizăm parametrii acestui apel:

& tpl = `Auth.ForgotPass.Form`- bucată din formularul în care utilizatorul își introduce e-mailul.

& submitVar = `forgotpass`- în cazul fragmentului ForgotPassword, este suficient ca parametrul cu acest nume să fie transmis serverului, indiferent cu ce valoare nevide.

& errTpl = `Auth.Login.Error`- ieșirea erorii este similară cu fragmentul de conectare

& sentTpl = `Auth.ForgotPass.Sent`- această bucată conține conținut care va fi afișat în cazul trimiterii cu succes a unei scrisori de schimbare a parolei.

& emailTpl = `E-mail.ForgotPass`- scrisoarea în sine este conținută aici.

& Subiectul emailului= `Restabilirea accesului la un cont pe site-ul Example.Com` - antetul mesajului.

& resetResourceId = `29`- identificatorul resursei pe care parola va fi resetată la una nouă.


Bucată mare Auth.ForgotPass.Form:

[[+ loginfp.errors]]

Ceea ce este nou aici este doar un alt mod de a afișa erorile în substituent [[+ loginfp.errors]]și trecând un parametru că este această formă care reseta parola: .

Auth.ForgotPass.Sent:

Informațiile de recuperare a contului au fost trimise la adresa de e-mail specificată: [[+ e-mail]].

Aici puteți folosi datele din formularul de mai sus.


Email.ForgotPass:

[[+ nume complet]],

Pentru a vă activa noua parolă, vă rugăm să accesați următorul link:

Vreau o nouă parolă

Dacă totul a mers bine, vă veți putea conecta la profilul dvs. cu următoarele informații:

Autentificare:[[+ nume de utilizator]]

Parola:[[+ parola]]

Mulțumiri,
Administrarea site-ului Exemplu.Com

Totul este foarte asemănător cu partea din scrisoarea de activare, doar parola este generată aici în fragment.


Atingerea finală rămâne crearea unei resurse la care utilizatorul va merge de la scrisoare pentru a actualiza parola. În această resursă, avem nevoie de un apel:

[[! ResetPassword: empty = `

Nu ați comandat o resetare a parolei. Poate ai adresa greșită. Puteți accesa pagina principală a site-ului sau puteți utiliza meniul de mai sus.

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

Acest cod va afișa un mesaj dacă dintr-o dată cineva intră din nou pe această pagină sau doar din întâmplare. Și dacă parola este resetată cu succes, va fi afișat un mesaj de la bucată Auth.ForgotPass.Reset:

Parola dvs. a fost resetată cu succes la cea specificată în scrisoare. Acum vă puteți autentifica cu această parolă. Nu uita să-l schimbi în profilul tău.

Acum avem un sistem complet funcțional de autorizare și înregistrare a utilizatorilor. Modificarea profilului utilizatorilor autorizați va fi lăsată în afara domeniului de aplicare al articolului.


1. Creați o pagină de înregistrare și adăugați-i un fragment de apel Inregistreaza-te.

2. Creați bucăți cu un formular de înregistrare Înregistrare.Formular și scrisoarea de activare E-mail.Activare.

3. Creați o pagină de confirmare a înregistrării și efectuați un apel de fragment pe ea Confirmați înregistrarea.

4. Adăugați un fragment de apel Autentificare unde dorim sa plasam formularul de autentificare si insigna utilizatorului autorizat.

5. Creați o bucată cu un formular de conectare Autentificare , bucată cu informații despre utilizatorul autorizat Auth.Logout , bucată cu mesaj de eroare Auth.Login.Errore .

6. Creați o pagină de recuperare a parolei și efectuați un apel de fragment pe ea Ați uitat parola.

7. Creați o bucată Auth.ForgotPass.Form cu un formular de recuperare a parolei, bucată Auth.ForgotPass.Sent cu un mesaj despre trimiterea cu succes a scrisorii, bucată Email.ForgotPass cu o scrisoare pentru a reseta parola.

8. Creați o resursă cu o resetare finală a parolei și plasați un apel de fragment în ea Reseteaza parola.

9. Creați o bucată Auth.ForgotPass.Reset cu un mesaj despre resetarea cu succes a parolei.

Asta e tot. Mă voi bucura de orice completări și comentarii.

Foolproof este un set de măsuri pentru a preveni introducerea de informații incorecte într-un formular. De exemplu, dacă trebuie să introduceți un număr pozitiv de la 0 la 10 într-un câmp, atunci ar trebui să verificați dacă utilizatorul nu introduce text sau un număr care nu se află în intervalul specificat, de exemplu. numărul nu trebuie să fie mai mic de zero sau mai mare de zece.

De ce sunt introduse informații incorecte? Acest lucru se datorează în principal trei motive.

  1. Utilizatorul a greșit din greșeală, de exemplu, a citit cu neatenție ceea ce trebuie să indice.
  2. Pe o pagină web, li se cere în mod ambiguu să introducă date, astfel încât utilizatorul trebuie să ghicească și să facă o presupunere despre ceea ce își dorește cu adevărat de la el. În acest caz, opiniile dezvoltatorului și ale utilizatorului nu coincid întotdeauna.
  3. Există un număr de oameni care iau instrucțiunile ca pe o provocare și încearcă să facă opusul. Astfel de utilizatori raționează astfel: „Da, mi se cere să introduc un număr. Ce se întâmplă dacă indic literele?” După aceea, ei cer informații în mod evident incorecte și văd la ce va duce.

Trebuie înțeles că formulările precise și corecte, deși reduc probabilitatea erorilor, nu te salvează în niciun caz de ele. Doar mijloacele tehnice din partea serverului vă permit să obțineți rezultatul dorit și să evitați introducerea de informații incorecte. Cu toate acestea, revizuirea sau, așa cum se mai numește, validarea la nivelul clientului vă permite să verificați rapid datele introduse de utilizator pentru corectitudine, fără a trimite formularul la server. Acest lucru economisește timp utilizatorului și reduce sarcina pe server. Din punct de vedere al utilizabilității, există și plusuri - utilizatorul primește imediat un mesaj despre ce informații a indicat incorect și își poate corecta greșeala.

câmp necesar

Unele câmpuri de formular trebuie completate înainte de a le trimite către server. Acest lucru, de exemplu, se aplică formularului de înregistrare, unde vi se cere să introduceți un nume de utilizator și o parolă. Atributul obligatoriu este utilizat pentru a specifica câmpurile obligatorii, așa cum se arată în Exemplul 1.

Exemplul 1. Atributul necesar

HTML5 IE 10+ Cr Op Sa Fx

câmp necesar

Autentificare:

Parola:

Câmpurile obligatorii trebuie completate înainte de a trimite formularul, altfel formularul nu va fi trimis la server și browserul va emite un avertisment în acest sens. Tipul de mesaj depinde de browser; de exemplu, Chrome afișează un tooltip, așa cum se arată în Fig. 1.

Orez. 1. Câmpul obligatoriu nu este completat

Corectitudinea datelor

Inițial, există două câmpuri în care datele introduse de utilizator sunt verificate automat. Aceasta este adresa web și adresa de e-mail. Browserul Chrome verifică, de asemenea, corectitudinea câmpului de date din calendar, dar numai pentru că nu are o interfață de calendar click-to-select. Aceste elemente sunt caracterizate de următoarele reguli.

  • Adresa de internet ( ) trebuie să conțină protocolul (http: //, https: //, ftp: //).
  • Adresa de e-mail ( ) trebuie să conțină litere sau cifre înaintea simbolului @, după acesta, apoi o perioadă și un domeniu de nivel întâi.

Browserele au politici ușor diferite pentru validarea datelor utilizatorilor. De exemplu, Opera înlocuiește automat protocolul http: // în fața textului introdus, în timp ce alte browsere îl așteaptă de la utilizator. Chrome și Opera necesită un punct pentru a fi în adresa de corespondență, este opțional pentru Firefox.

Exemplul 2 arată un formular cu câmpuri obligatorii în care două câmpuri sunt validate de browser.

Exemplul 2. Corectitudinea datelor

HTML5 IE 10+ Cr Op Sa Fx

Corectitudinea datelor

Completați formularul (toate câmpurile sunt obligatorii)

Nume:

E-mail:

Site:

Opera validează un element de formular numai dacă este prezent atributul nume.

Ce se întâmplă în Opera când introduceți date incorecte este prezentat în Fig. 2.

Orez. 2. Avertisment despre date incorecte

Șablon de intrare

Unele date nu pot fi clasificate ca un singur tip de element de formular, așa că trebuie să utilizați o casetă de text pentru ele. Mai mult, intrarea lor are loc conform unui anumit standard. Deci, adresa IP conține patru numere separate printr-un punct (192.168.0.1), codul poștal al Rusiei este limitat la șase cifre (124007), telefonul conține un cod de oraș și un anumit număr de cifre adesea separate printr-o cratimă ( 391 555-341-42), etc. Browserul trebuie să specifice un șablon de intrare, astfel încât să valideze intrarea utilizatorului în funcție de acesta. Pentru aceasta, se folosește atributul model, iar valoarea acestuia este o expresie regulată. Unele valori tipice sunt enumerate în tabel. 1.

Exemplul 3 solicită o valoare de culoare hexazecimală (# ffcc00) și dacă nu se află în acest interval, browserul afișează un mesaj de eroare.

Exemplul 3. Şablon de intrare

HTML5 IE 10+ Cr Op Sa Fx

Intrare culoare

Introduceți o valoare de culoare hexazecimală (trebuie să înceapă cu #)

În fig. 3 arată un avertisment în browserul Chrome.

Orez. 3. Datele introduse nu se potrivesc cu șablonul

Anularea validării

Validarea nu este întotdeauna necesară pentru un formular, de exemplu, un dezvoltator dorește să folosească o soluție universală în JavaScript și nu are nevoie de validare duplicat de către browser. În astfel de cazuri, trebuie să dezactivați validarea inline. Pentru aceasta, se aplică atributul novalidate al etichetei.

... Exemplul 4 arată utilizarea acestui atribut.

Exemplul 4. Anularea validării

HTML5 IE 10+ Cr Op Sa Fx

Novalidate atribut

Într-un scop similar, se folosește atributul formnovalidate, care se adaugă la butonul de trimitere a formularului, în acest caz la etichetă ... În acest caz, forma din exemplul 4 va arăta astfel.

Pentru orice dezvoltator web, nu există încă o problemă mai serioasă decât compatibilitatea completă între browsere a produsului său. Probabil, aceasta este una dintre sarcinile principale ale unui bun specialist: să se asigure că site-ul său este întotdeauna afișat corect în toate browserele.

Parametru necesar care este uneori folosit pentru intrare nu funcționează în IE antic, care pur și simplu nu poate fi lăsat așa. Utilizatorii pensionari care încă folosesc IE6 ar trebui să fie la fel de simpli pe site-ul dvs. ca și utilizatorii celei mai recente versiuni de Google Chrome. Cine, altul decât dezvoltatorii web, poate avea grijă de ei.

Despre dureros, despre Internet Explorer

Pentru browserele normale precum Firefox, Opera și Google Chrome, această sarcină este relativ ușoară. Chiar și versiunile mai vechi ale acestor browsere redau codul html la fel de bine, cu excepția cazului în care, desigur, este folosită o tehnologie nouă în el. Dar pentru a realiza acest lucru în browserele din familia Internet Explorer, este nevoie de un efort enorm.

Fiecare versiune a browserului Internet Exlorer are propria sa prostie unică. Ceea ce funcționează în IE6 poate să nu funcționeze corect în IE7 și invers. Această grădină zoologică a Microsoft nu a reușit să depășească nici măcar în cea mai recentă versiune a browserului său.

Nu pot înțelege de ce dezvoltatorii de browser nu pot să deschidă și să citească standardele W3C pentru construirea site-urilor.

Prin urmare, ca dezvoltator web, trebuie să acționez ca un fel de „strat” între browserele capricioase și vizitatorii site-ului care necesită cunoștințe și ochelari. Și este grozav că dezvoltatorii web au reușit până acum.

Deci, cum vi se cere să lucrați în versiuni mai vechi de IE?

JS vine în ajutorul nostru. Anterior, nu puteam suporta, dar acum nu văd o altă cale fără ea în vastitatea WEB-ului „corect”.

Nu am inventat soluția de mai jos, ci am luat-o de pe un blog burghez. Din moment ce sunt lacom, iar blogul este burghez, nu voi face link la el.

Funcția va fi responsabilă pentru tot. fnCheckFields ()... Plasați codul JS pe site-ul dvs.:

De obicei, este recomandat să îl plasați între etichetele html CAP la începutul paginii, dar aș recomanda totuși să o plasați în partea de jos a paginii înainte de eticheta de închidere CORP... Astfel, JS are un impact mai mic asupra vitezei de încărcare a paginii.

Fereastra de introducere, în care trebuie introdus parametrul necesar, ar trebui să arate astfel în limbajul html:

Acest script funcționează foarte simplu: după ce faceți clic pe butonul trimite, scriptul verifică toate intrările pentru prezența parametrului necesar și dacă îl găsește, atunci se uită la valoarea introdusă a acestui câmp în consecință. Dacă nu este introdus nimic într-o astfel de intrare, atunci este afișată o fereastră de avertizare despre necesitatea introducerii. În consecință, datele nu sunt trimise nicăieri.

De asemenea, este grozav că, dacă aveți un browser normal care a învățat deja să înțeleagă acest parametru așa cum era de așteptat, o astfel de fereastră de avertizare nu va apărea și instrumentele standard pentru procesarea parametrului necesar pentru browserul dvs. vor funcționa.

Distribuie pe rețelele sociale retelelor

Top articole similare