Obțineți și postați exemple. Atribute acțiuni și metodă. Obțineți și post metode. Alegerea dintre obținerea și postarea
Resursele web moderne nu oferă doar informații vizitatorului, ci și interacționează cu el. Pentru a interacționa cu utilizatorul, trebuie să primiți câteva informații de la acesta. Există mai multe metode de obținere a datelor, metode foarte comune. Obține. și POST.. Și respectiv B. PHP. Există suport pentru aceste metode de transfer de date Obține. și POST.. Să vedem cum funcționează aceste metode.
Obțineți metodaDate oBȚINE. Transmise prin adăugarea acestora la adresa URL a scenariului numit destinat procesării informațiilor primite. Pentru explicații aceasta metoda Formați adresa URL de resurse din bara de adrese din bara de adrese și adăugați mai întâi semnul de întrebare (?), Apoi numărul Num \u003d 10. de exemplu
http: //domure.ru/script.php? Num \u003d 10
Daca ai server local., atunci, de obicei, domeniul va fi localhost, iar apoi intrarea anterioară va arăta
http: //localhost/script.php? Num \u003d 10
În acest caz, transmitem parametrul num la 10. Pentru a adăuga următorii parametri, scenariul trebuie utilizat - ampersant (&), de exemplu
http: //ddomure.ru/script.php? Num \u003d 10 & Type \u003d New & V \u003d Text
În acest caz, am transferat trei parametri la script: Num cu o valoare de 10, tastați cu valoarea "nouă" și V cu valoarea "Text".
Pentru a obține acești parametri în script, trebuie să utilizați o matrice încorporată. $ _Get. $ _Get ["Num"], $ _get ["tip"], $ _ obține ["v"]. Aceste elemente de matrice vor conține valorile parametrilor transmis. Pentru a demonstra acest exemplu, creați un fișier script.php după cum urmează.
eCHO ($ _get ["Num"]. "
");
echo ($ _get ["tip"]. "
");
echo ($ _get ["v"]);
?>
Și acum apelați acest fișier în browser
http: //at/script.php? Num \u003d 10 & Type \u003d New & V \u003d Text
Și veți vedea parametrii transmis în fereastra browserului. Dar dacă numiți acest fișier fără parametri suplimentari http: ////script.php, veți vedea erori care vor da un interpret PHP.Că nu există astfel de elemente ale matricei $ _Get. Verificarea acestor date de la utilizator nu poate fi evidențiată nici un articol, deci în acest articol nu voi atinge acest moment.
După cum ați înțeles probabil, pentru a forța utilizatorul să formeze datele din bara de adrese nu este foarte bun și complet incomod. Prin urmare, pentru a primi date de la utilizator, trebuie să utilizați formularul HTML. Scrieți o formă HTML simplă.
Am comentat formularul creat. Formularele sunt create de eticheta formularului. Câmpurile de formular sunt create prin intrare, selectați, tag-uri textarea (puteți citi mai mult). În eticheta formularului, adresa URL a scriptului este specificată în atributul de acțiune, care va primi aceste formulare. În cazul nostru, am specificat deja fișierul Script.php deja existent. Atributul de metodă Setează metoda trimiterea datelor. Am indicat metoda Obține.. Acum știm ce fișier vor fi transmise aceste fișiere și în ce mod, rămâne să dau seama unde să le caute?!
Aceste date de formular vor fi transferate în browserul de resurse web prin adăugarea acestora la adresa URL: va fi mai întâi o marcă de întrebare (?), Apoi parametrii sunt separați de ampersant (&). Numele parametrului va fi luat din atributul de nume, care trebuie să fie scris din orice câmp de câmp. Valoarea parametrului va depinde de tipul de câmp. Dacă câmpul este textual, textul introdus de utilizator va fi utilizatorul. Dacă câmpul va fi o listă, un grup de comutatoare sau steaguri, atunci valoarea valorii valorii elementului selectat va fi valoarea parametrului. Voi explica despre exemplul formei noastre. Dacă utilizatorul intră în numărul 10 din câmpul de introducere, atunci numele parametrului va fi num (valoarea atributului de nume al etichetei de intrare), iar valoarea va fi valoarea (numărul introdus de utilizator). În consecință, browserul va forma o pereche de "Num \u003d 10". Dacă utilizatorul din listă selectează opțiunea "Da", atunci numele parametrului va fi tip (atributul valoric al etichetei de nume Selectați), iar valoarea va fi valoarea (valoarea valorii opțiunii de tag de valoare ). În consecință, browserul va forma o pereche de "tip \u003d da".
Acum, acest formular va fi plasat pe pagina Forma.php.
Introduceți orice valori în câmpurile formular și faceți clic pe butonul "Trimiteți". După apăsarea butonului browserului, deschideți o altă pagină (Script.php) și vor fi afișate datele pe care le-ați introdus în fereastra browserului. Cred că este clar de ce: browserul va transfera date la script-ul script.php și în script, aceste date vor fi procesate și afișate.
Metoda postală.Acum, să ne uităm la modul în care funcționează metoda POST..
Pentru a trimite aceste metode POST. Trebuie să utilizați formularul HTML. Cum ne amintim că metoda formei este responsabilă pentru metoda de trimitere a formei de date a formularului. Prin urmare, trebuie să specificați valoarea după atributul metodă. În caz contrar, forma poate fi aceeași ca și pentru metoda de obținere. Vom schimba forma noastră pe care am folosit-o deja pentru a transfera date la metoda GET pentru transmiterea prin metoda post.
După cum puteți vedea, forma rămâne aceeași cu excepția atributelor metodei și a acțiunii. Acum, datele vor fi transmise scriptului Script_Post.php. Poziționați formularul pe pagina Forma_post.php.
Acum trebuie să scrieți un script care să proceseze datele de formă.
Pentru a obține o metodă transmisă în scriptul de date POST. trebuie să utilizați o matrice încorporată $ _Post.. Cheile acestei matrice vor fi numele parametrilor. În cazul nostru, trebuie să utilizați $ _Post ["Num"], $ _post ["tip"], $ _ Post ["v"]. Aceste elemente de matrice vor conține valorile datelor transmise. Pe măsură ce vedeți diferența de la utilizarea metodei de obținere, este exprimată numai numai în utilizarea unui matrice $ _post. Prin urmare, nu vom fi dificil să scriem un fișier script_post.php:
eCHO ($ _post ["Num"]. "
");
echo ($ _post ["tip"]. "
");
ecou ($ _post ["v"]);
?>
Acum deschideți fișierul forma_post.php din browser. Introduceți câteva date în câmpul Form și apăsați butonul "Trimiteți". Acum, probabil, ați observat diferența dintre metoda postală de la primire - aceste formulare nu au apărut în bara de adrese a browserului. Metoda de date POST. Nu puteți trece prin bara de adrese a browserului. Această diferență esențială trebuie amintită.
ÎN PHP. În independență, ce date de metodă au fost trimise - prin metoda postală sau metoda GET - pentru a obține date utilizând o matrice $ _request. Compararea metodelor de obținere și postCând utilizați metoda de obținere, datele sunt transmise prin adăugarea la adresa URL. Astfel, acestea vor fi vizibile pentru utilizator că în ceea ce privește siguranța nu este întotdeauna bun. De asemenea, cantitatea maximă de date transmise va depinde de browser - de la numărul maxim admisibil al caracterelor barei de adrese a browserului.
Când utilizați metoda postală, datele nu vor fi vizibile utilizatorului (nu sunt afișate în bara de adrese a browserului). Și, prin urmare, ele sunt mai protejate și, prin urmare, prelucrarea programului aceste date este mai protejată în ceea ce privește siguranța. De asemenea, cantitatea de date transmise este practic limitată.
Când alegeți o modalitate de transfer de date, trebuie să luați în considerare caracteristicile date și opriți la cea mai acceptabilă metodă.
În comun între ele, faptul că lucrează în mod egal. Diferența dintre ele este din punct de vedere tehnic nr. Dar există diferențe ideologice.
Voi spune despre ele în contextul PHP. Rețineți că protocolul HTTP la PHP are o atitudine indirectă, deoarece a fost creată pentru a schimba paginile HTML și PHP extinde pur și simplu posibilitățile și cealaltă.
Obțineți o interogare este utilizată pentru a obține date un post pentru a trimite. (Vă reamintesc că lucrați din punct de vedere tehnic în mod egal).
Prin urmare, în contextul PHP, bazându-se pe această ideologie a fost realizată după cum urmează:
1. De fiecare dată când PHP este lansat, arrays SuperGlobal ($ _Get, $ _post) sunt create implicit.
2. Dacă există un semn de întrebare în șirul de interogare (?). Atunci totul este considerat după ea parametri Obțineți cereri Acestea sunt prezentate în formatul "cheie" \u003d "valoarea" și un semn ampersand (&) este folosit ca separator
Exemplu:
Get /index.php?name\u003dandrey&surname\u003dhalkin.
Acesta este un șir de interogare, aici 2 parametri. Acești parametri vor cădea în matricea $ _GET.
3. $ _post este umplut cu un alt mod. Conținutul acestei matrice este umplut de la "antetele de solicitare". Asta este, din loc ascuns de ochi în mod explicit. Întreaga rutină pentru a crea astfel de titluri are un browser. Deși uneori ceva este editat în titluri în Manual.
Cel mai adesea, cererea poștală este utilizată în forme (pentru a trimite date).
De exemplu, avem un formular pentru a vă conecta la 2 câmpuri de conectare și parolă.
Imaginați-vă că folosim metoda de obținere. Apoi, atunci când trimiteți o formă, ne întoarcem la următoarea adresă /login.php?login\u003dandrey&password\u003d123 sunt de acord că acest lucru nu este sigur să transmită aceste informații. Oricine vă poate deschide browserul și începe să introducă adresa site-ului. Vă poate vedea parolele și autentificarea.
Dar dacă am specificat prin metoda post, atunci vom primi următoarea solicitare:
Post /login.php (Login \u003d Andrey & Parola \u003d 123) Ce este în paranteze ar fi ascunse și nu sunt salvate în browser.
În general, rezumând:
Obțineți o anumită pagină într-un anumit formular (sortarea, pagina curentă din blog, șirul de căutare etc.).
Post - pentru datele Mandrel care nu afectează afișarea paginii, în modul în care aceste date afectează doar rezultatul executării scriptului (login-uri, parole, numere de carduri de credit, mesaje etc.).
Si inca una vești bune ele pot fi combinate, de exemplu
Post /index.php?page\u003dlogin (Login \u003d Andrey & Parola \u003d 123) Cred că am explicat deja suficient că se pare și ce parametri la care se va cădea.
Metodele de obținere și poștă în HTTP și HTTPS sunt cele două metode cele mai populare utilizate pentru a transfera date de la client la server utilizând protocolul HTTP (Protocolul de transmisie HyperText). Iar obținerea și postul pot fi folosite pentru a trimite o cerere și a primi un răspuns, dar există o diferență semnificativă între ele.
Diferența dintre cererile de obținere și post în HTTP sau HTTPS este o întrebare populară cu privire la fiecare interviu de programare web. Deoarece HTML nu depinde de tehnologia serverului web, cum ar fi Java, ASP sau PHP și HTTP este principalul protocol din spațiul de Internet, este imposibil să ignorăm în mod clar importanța înțelegerii metodelor de obținere și post. În acest articol, vom analiza ce este metoda GET HTTP, care este metoda Post HTTP, când să utilizați una sau o altă solicitare și care este diferența dintre ele. Vom analiza separat fiecare concept.
Ce este HTML?
HTML este o limbă folosită pentru a crea pagini web. Hypertext se referă la hyperlink-uri care pot conține o pagină HTML. Limba de marcare înseamnă modul de utilizare a etichetelor pentru a determina aspectul paginii și a elementelor de pe pagină.
Mai jos sunt date un exemplu de HTMLAcest lucru este utilizat pentru a determina pagina web de bază cu titlul și un paragraf din text:
<Голова>
<Название> Techterms.com. название>
HEAD>
<Тело>
Acesta este un exemplu de paragraf din HTML. p>
Body>
Html>
Primul șir determină tipul de conținut conținut în document.,
și care sunt incluse ca un exemplu de mai sus. Antetul paginii, metadatele și legăturile către fișierele de legare sunt plasate între conținutul actual al paginii sunt între etichete. .În ultimele decenii, rețeaua a supraviețuit numeroase schimbări, dar HTML a fost întotdeauna limba principală folosită pentru a dezvolta pagini web. Interesant, deși site-urile au devenit mai avansate și mai interactive, HTML a devenit mai ușor. Dacă comparați sursa de pagină HTML5 cu o pagină similară scrisă în HTML 4.01 sau XHTML 1.0, pe pagina HTML5 va fi mai puțin cod. Acest lucru se datorează faptului că HTML modern se bazează pe foi de stil cascadă sau JavaScript pentru a forma aproape toate elementele din interiorul paginii.
Multe site-uri web dinamice generează pagini web "în zbor" folosind limba serverului script, cum ar fi PHP sau ASP. Cu toate acestea, chiar și paginile dinamice trebuie să fie formatate folosind HTML.. Prin urmare, limbile scenariilor generează adesea un cod HTML care este trimis la browserul web.
Protocolul HTTP HyperText Transmission este conceput pentru a interacționa între clienți și servere și funcționează ca protocol de interogare-răspuns.
Browserul web poate fi un client, iar aplicația de pe computerul pe care este postat site-ul web, serverul.
Clientul (browser) trimite o solicitare HTTP către server, serverul returnează un răspuns care conține informații despre starea interogării și poate conține și conținutul solicitat.
Două metode de interogare GET și POST
Două metode frecvent utilizate pentru solicitarea-răspuns între client și server:
Obțineți - solicită date din resursa specificată;
Post - trimite date care urmează să fie procesate la resursa specificată.
Transferul de a obține și post literalmente înseamnă obținerea și post-procesarea.
Citiți mai multe despre HTTP
HTTP este un protocol utilizat pentru a transfera date prin Internet. Face parte din pachetul de protocol Internet și definește comenzi și servicii utilizate pentru a transmite date de pagină web.
HTTP utilizează modelul server-client. Clientul poate fi un computer de acasă, un laptop sau dispozitiv mobil. Serverul HTTP este de obicei o gazdă web cu software. Servere web, cum ar fi Apache sau IIS. Când utilizatorul primește acces la site-ul web, browserul trimite o solicitare către serverul web corespunzător și îndeplinește codul de stare HTTP. Dacă adresa URL este validă și conexiunea este furnizată, serverul va trimite pagina web în browser și fișierele conexe.
Codurile generale de stare HTTP includ:
200 - o cerere de succes (există o pagină web);
301 - se deplasează constant (adesea redirecționate către o nouă adresă);
401 - Cerere neautorizată (obligatorie necesară);
500 - eroare de server intern (frecvent cauzată de configurația incorectă a serverului).
Postați și intrați în http http
HTTP definește comenzile GET și POST care sunt utilizate pentru a procesa vizualizări de formular pe site-uri web. Comanda Conectare este utilizată pentru a facilita o conexiune securizată care este criptată utilizând SSL. Conexiunile http criptate apar prin intermediul extensiei HTTPS - HTTP destinate transferurilor de date securizate.
Adresele URL începând cu "http: //" sunt disponibile în conformitate cu protocoalele standard de transmisie HyperText și de către portul de utilizare implicit 80. URL-urile începând cu "https: //" sunt disponibile prin intermediul "https: //" conectare sigură HTTPS și adesea folosiți portul 443.
POST.
Postul este o serie inspecții de sistemefectuate de computere și alte dispozitive electronice atunci când sunt pornite. Rezultatele testului pot fi afișate pe ecran, ieșire prin LED-uri intermitente sau pur și simplu înregistrate în interior. ÎN sisteme informatice Operația post este efectuată la începutul secvenței de boot. Dacă sunt transmise toate testele, restul procesului de start va fi continuat automat.
Sisteme de operare MAC și Windows Start Postare De fiecare dată când computerul este încărcat sau repornit. Scanați verificările hardware Și asigură că procesorul, dispozitivele de memorie RAM și stocare vor funcționa corect. Dacă a apărut o eroare în timpul postării, procesul de pornire poate întrerupe sau opri complet, iar monitorul poate apărea pe PC PC Error PC-urile sunt adesea afișate pe ecranul de informații BIOS. Ele pot fi afișate ca coduri criptice, cum ar fi "08", sau ca mesaj de sistem, de exemplu, "Eroare memorie de sistem Când este compensată. " Pe Erorile Mac. Postul este adesea indicat de o grafică simplă, de exemplu, o pictogramă de folder rupt, care indică faptul că unitatea de boot nu este găsită.
Manifestări fizice
În unele cazuri, ecranul computerului nu poate chiar să pornească înainte de erorile postale. Dacă se întâmplă acest lucru, codurile de eroare pot fi transmise prin intermediul unor indicatoare LED intermitente sau semnale sonore. De exemplu, Apple Imac va juca trei tone consecutive, pentru a rezista unei pauze de cinci secunde, apoi repeta tonurile atunci cand este detectat un RAM proasta in timpul pornirii. Majoritatea PC-urilor publică, de asemenea, semnale sonore atunci când sunt detectate erorile postale, deși fiecare producător utilizează propriile coduri.
Postul este un termen destul de tehnic care este folosit numai tehnicieni de calculator in mod regulat. Cu toate acestea, aceasta este o abreviere bună, deoarece ajută la înțelegerea mai bună a mesajelor de eroare care pot apărea pe computere sau pe altele dispozitive electronice. Dacă computerul nu pornește din cauza erorii postale, puteți utiliza un alt dispozitiv pentru găsirea valorii și pentru a determina erori de pe site-ul producătorului. Apoi, puteți lua acțiunile corespunzătoare - eliminând modulul de memorie sau reinstalarea plăcii video cu echipamentul de repornire ulterior.
Obține.
Postul este, de asemenea, o metodă de transmitere a variabilelor formulare HTML. De la o pagină web la alta, fără a le afișa în bara de adrese. Metoda alternativă - obțineți, care adaugă valori către adresa URL. Cererile Post Post oferă date suplimentare de la client (browser) la server din corpul mesajului. Dimpotrivă, cererile includ toate datele necesare în adresa URL. Formularele în HTML pot folosi orice metodă, specificând metoda \u003d Post sau Metoda \u003d obțineți (implicit) în element
Economisire acest cod. În fișierul HTML și vizualizarea acestuia cu browserul dvs. preferat, veți vedea formularul HTML obișnuit:
Etichetă
, De fapt, întreabă forma. Atributele sale sunt ambele opționale:- acțiune - indică adresa URL (plină sau relativă) la care va fi trimis formularul. Dacă acest atribut nu specifică, majoritatea browserelor (mai precis vorbind, toate browserele cunoscute) trimit un formular la documentul curent, adică "pe ei înșiși". Aceasta este o reducere convenabilă, dar conform standardului Atribut HTML. Este necesară o acțiune.
- metoda este o modalitate de a trimite formularul. Sunt două dintre ele.
- GET - Trimiterea datelor din bara de adrese.
Puteți observa prezența la sfârșitul adresei URL a simbolului "?" Și următoarele date în parametrul formatului \u003d valoarea. Aici "parametrul" corespunde valorii atributului de nume al elementelor de formular (vezi mai jos despre Teg ), iar "valoarea" - conținutul atributului de valoare (în el, de exemplu, conține introducerea utilizatorului în câmpul de text al aceleiași etichete ).
De exemplu, încercați să căutați ceva în Yandex și să acordați atenție barei de adrese a browserului. Aceasta este o metodă de obținere. - Post-mucegai Acestea sunt trimise în corpul de interogare. Dacă nu este complet clar (sau este complet neclar), ceea ce este - nu vă faceți griji, în curând vom reveni la această problemă.
- GET - Trimiterea datelor din bara de adrese.
Etichetă - Specifică elementul de formă definit de atributul de tip:
- Valoarea "Text" stabilește un câmp de intrare cu o singură linie
- Valoarea "Trimiteți" setează butonul, când formularul este apăsat pe server
Sunt posibile alte valori (și - Nu singura etichetă care specifică elementul de formă).
Deci, ce se întâmplă când apăsăm butonul "OK"?
- Browserul navighează elementele incluse în formă și generează din numele și valoarea lor atribute aceste forme. Să presupunem că numele Vasya a fost introdus. În acest caz, aceste forme - Nume \u003d Vasya & Okbutton \u003d OK
- Browserul stabilește o conexiune la server, trimite o solicitare către serverul specificat în atributul de etichete de acțiune
- Serverul analizează interogarea recepționată, formează un răspuns, îl trimite în browser și închide conexiunea
- Browserul afișează documentul primit de la server.
Trimiterea manuală a aceleiași interogări (cu ajutorul lui Telnet) arată astfel (presupun că numele domeniului Site - www.example.com):
Telnet www.example.com 80 Get /cgi-bin/form_handler.cgi?name\u003dvasya&okbutton\u003dok http / 1.0 \\ r \\ n gazdă: www.example.com \\ r \\ n \\ r \\ n
Pe măsură ce, cel mai probabil, ați ghicit deja, apăsând butonul Trimiteți în formularul cu metoda de trimitere "Get" este similară cu intrarea adresei URL corespunzătoare (cu o marcă de întrebări și formează date la sfârșit) în adresa browserului bar:
Http://www.example.com/cgi-bin/form_handler.cgi?name\u003dvasya&okbutton\u003dok.
De fapt, metoda GET este utilizată întotdeauna când solicitați un document de la server, pur și simplu introducând adresa URL sau făcând clic pe link. Folosind.
Formularul din liniile 8-12 conține două elemente: Nume și Okbutton. Atributul metodă Specifică metoda de formular post, atributul de acțiune care indică adresa URL la care este trimis formularul este umplut cu valoarea variabilă a serverului PHP_SEFLS - adresa scriptului în acest moment.
=$_SERVER["PHP_SELF"]?> - Forma abreviată de înregistrare pentru echo $_SERVER["PHP_SELF"]; ?> .
Să presupunem că, în câmpul Nume, am intrat în valoarea lui Vasya, iar butonul OK a fost apăsat. În același timp, browserul trimite la serverul poștal. Corp de interogare: Nume \u003d Vasya & Okbutton \u003d OK. PHP umple automat matricea $ _post:
$ _Post ["nume"] \u003d "vasya"
$ _Post [okbutton] \u003d "ok"
De fapt, valoarea "Vasya" este trimisă în browser-ul din formularul de codificare; Pentru codificarea Windows-1251, această valoare arată ca% C2% E0% F1% FF. Dar, deoarece PHP efectuează automat decodarea necesară, putem să "uităm" despre această caracteristică - până când trebuie să lucrați cu interogări HTTP manual.
Deoarece în corpul de interogare, sunt indicate numai nume și valori, dar nu și tipurile de elemente de formă, PHP nu are nicio idee, corespunde cu $ _post ["nume"] rândul de intrare, buton sau listă. Dar aceste informații, în general, nu sunt absolut necesare. :)
De vreme ce știți ce este scris pe butonul Trimiteți, suntem opționali, în linie 11 Puteți șterge atributul de nume, de a scurta descrierea butonului . În acest caz, browserul va trimite numele \u003d Vasya-Vasya.
Și acum - la fel, dar pentru a obține în formă de:
dacă (Isset ($ _ obține ["nume"])) (
Echo "
Buna ziua, "$ _Get [" nume "]."
!" ;}
?>
În linia 8 ar fi posibil să scrieți cu același succes
Nu sunt folosite noi tehnici. Observați, executați codul, încercați să modificați ...
Modificați ultimul exemplu astfel încât utilizatorul să nu fie necesar să re-completeze câmpurile. Pentru aceasta, completați atributele de valoare ale elementelor formularului tocmai au introdus valori.
$ Name \u003d izset ($ _ Post ["nume"])? $ _Post ["nume"]: "";
$ An \u003d Isset ($ _ Postare ["an"])? $ _Post ["an"]: "";
Dacă (Isset ($ _ Post ["Nume"], $ _post ["an"])) (
dacă ($ _post ["nume"] \u003d\u003d "") (
Echo "Specificați numele!
"
;
) Altfel dacă ($ _post ["an"]<
1900
||
$_POST
[
"year"
] >
2004
) {
Ecou. "Specificați anul nașterii! Gama valabilă de valori: 1900..2004
"
;
) Altfel (
Echo "Bună ziua". $ _Post ["nume"]. "!
"
;
$ varsta \u003d 2004 - $ _post ["an"];
Echo "Tu. Vârsta de vârstă. " ani
"
;
}
Echo "
" ;
}
?>
Câteva linii de neînțeles 4 și 5. Totul este foarte simplu: linia 4 ar putea fi înregistrată astfel:
dacă (Isset ($ _ Postare ["Nume"]))
$ nume \u003d $ _post ["nume"];
altfel.
$ Nume \u003d "";
O întrebare poate apărea - de ce să nu aruncați șirurile 4-5 și să nu scrieți:
Introdu numele tau:
">
Introduceți anul dvs. de naștere:
">
Faptul este că, dacă aceste posturi nu sunt definite - și va fi, dacă formularul nu a fost încă ocupat, - PHP va emite avertismente cu privire la utilizarea variabilelor neinitializate (și, bine fondată: un astfel de mesaj vă permite să trimiteți rapid Găsiți greșeli fixate în nume variabile și avertizează, de asemenea, de posibile "găuri" de pe site). Puteți, desigur, puneți codul cu Isset direct în formă, dar se pare prea greoaie.
A dat seama? Și acum încercați să găsiți o eroare în codul de mai jos. Ei bine, nu o greșeală, dar defecte.
htmlspecialchars ()
Nu ați găsit? Iti voi spune. Introduceți, de exemplu, în câmpul "Nume" dublu citate și un text, de exemplu, VA "Sia. Trimiteți un formular și aruncați o privire la codul sursă al paginii primite. În a patra linie va fi ceva de genul :
Introdu numele tau:
Asta nu este nimic bun. Și dacă utilizatorul viclean a introdus codul JavaScript?
Pentru a rezolva această problemă, este necesar să se utilizeze funcția HtmlSpecialChars (), care va înlocui caracterele de serviciu pe reprezentarea HTML (de exemplu, citate - ON "):
$ Name \u003d izset ($ _ Post ["nume"])? Htmlspecialchars ($ _post ["nume"]): "";
$ An \u003d Isset ($ _ Postare ["an"])? Htmlspecialchars ($ _post ["an"]): "";
Dacă (Isset ($ _ Post ["Nume"], $ _post ["an"])) (
dacă ($ _post ["nume"] \u003d\u003d "") (
Echo "Specificați numele!
"
;
) Altfel dacă ($ _post ["an"]<
1900
||
$_POST
[
"year"
] >
2004
) {
Ecou. "Specificați anul nașterii! Gama valabilă de valori: 1900..2004
"
;
) Altfel (
Echo "Bună ziua". $ Nume. "!
"
;
$ varsta \u003d 2004 - $ _post ["an"];
Echo "Tu. Vârsta de vârstă. " ani
"
;
}
Echo "
" ;
}
?>
Repetați experiența și asigurați-vă că codul HTML este acum corect.
Amintiți-vă - funcția HtmlspecialChars () trebuie să fie utilizată întotdeauna atunci când conținutul variabilei în care este prezentat HTML Special este afișat.
phpinfo ()
Funcția Phpinfo () este una dintre cele mai importante din PHP. Afișează informații despre setările PHP, valorile tuturor tipurilor de variabile de configurare ...
De ce o menționez în articol despre formulare? Phpinfo () - un instrument de depanare mai confortabil. Phpinfo (), printre altele, afișează valorile tuturor variabilelor $ _GET, $ _POST și $ _SERVER. Deci, dacă formularele variabile "pierdute", cea mai ușoară modalitate de a detecta, care este cazul - utilizați funcția Phpinfo (). Pentru ca funcția să afișeze numai valorile variabilelor (și nu ați fost necesar să parcurgeți o zeci de pagini), acesta trebuie să fie solicitat după cum urmează: Phpinfo (info_variables); , sau - acesta este absolut același - phpinfo (32);
phpinfo (32);
?>
Sau, de exemplu, această situație: doriți să cunoașteți adresa IP a vizitatorului. Vă amintiți că variabila corespunzătoare este stocată într-o matrice de $ _Server, dar - nu este suficientă - au uitat exact cum se numește variabila. Din nou, apelați la phpinfo (32); , Căutăm adresa dvs. IP în plăcuță și găsiți-o - în șirul $ _Server ["Remote_Addr"].