internetul Windows. Android

Postați și obțineți cereri cu cuvinte simple. Cum se trimite browser-ul de solicitare Post: Metodă Postare variabilă Post în exemplele de utilizare PHP

În această lecție, luăm în considerare primirea transmiterii datelor între formulare și pagini. Aceste metode sunt postarea și obținerea. Vom vorbi reciproc separat și în detaliu. În general, este necesară comunicarea între forme. De exemplu, completăm câteva câmpuri pe pagină și trebuie să le transferăm la o altă pagină pentru procesare.

Obțineți metoda în PHP

Pentru a începe cu, vom analiza metoda de obținere. Aceasta este atunci când toate variabilele și valorile lor sunt transmise direct prin adresa. Acum veți vedea totul pe exemplu și chiar înțelegeți cât de multe site-uri și forumuri funcționează.
De exemplu, avem o pagină HTML de acest tip:

Pagina cu un exemplu de transmitere a variabilelor folosind Get legătură

Vedeți link-ul? Este complicat și constă în mai multe părți. Să ne întrebăm totul în jurul rafturilor:
https: // site - adresa domeniului sau, așa cum se numește și gazdă.
index.php. - Pagina PHP care va procesa cererea.
? - simbolul de separare dintre adresa și blocul cu variabilele.
În continuare sunt variabile și valorile lor care sunt separate de simbol. & .
nume \u003d Sergey. - Variabila de nume și valoarea Sergey.
vârsta \u003d 22. - aceeași vârstă variabilă, valoare 22.

Toate dezasamblate, acum să vedem cum este procesată în PHP, folosind metoda de obținere.
Pagina Index.php, după cum vă amintiți, am trecut la ea:

Pentru a începe cu, sfaturi: Verificați întotdeauna variabilele de pe corectitudine: pe gol, pentru respectarea valorilor valide și așa mai departe. Deoarece totul este transmis prin intermediul barei de adrese, datele pot fi ușor înlocuite și rănite site-ul. Acum, conform codului însuși: noi, cu ajutorul, a verificat variabilele numelui și vârsta la goliciune și, dacă nu sunt goale, apoi le-au scos, și dacă sunt goale, apoi au raportat pur și simplu.
Totul este simplu, sunt de acord? De exemplu, puteți crea o pagină HTML și puteți efectua linkuri prin variabile în index.php la index.php și afișați această sau pagina respectivă în funcție de valoarea rezultată. Ei bine, vom vorbi mai târziu, în articolul despre crearea unui site web pe PHP de la zero. Pentru a pierde orice, vă sfătuiesc să vă abonați la RSS.

PHP PHP Metoda.

Pentru a demonstra activitatea acestei metode, vom avea nevoie de un pic mai mult decât o linie simplă cu adresa :) Va fi necesar să creați o pagină HTML cu o formă de umplere, dar nimic, voi da un exemplu gata pentru tine :

Pagina cu un exemplu de transmitere a variabilelor utilizând postarea

Completați câmpurile pentru transferul informațiilor:

Specificați-vă numele:

Specificați vârsta dvs.:



Deci, am creat o pagină HTML cu o formă simplă. Amintiți-vă, metoda postală poate fi utilizată numai în formular.
Primul parametru al formularului este "metoda", definește metoda pe care o vom folosi pentru transmisie. După cum ați putea ghici, fie că este sau postați. În acest caz, dacă este instalat, atunci toate numele câmpurilor (sub formă de nume variabile), precum și valorile lor sunt transmise prin referință, ca în secțiunea despre metoda de obținere. Dacă este setată postarea, atunci toate numele variabilelor și valorilor vor fi transmise ca o solicitare de browser către un server web. Adică, ei nu vor fi vizibili în bara de adrese. În multe cazuri, acest lucru este foarte util. De asemenea, postul este mai sigur, este, de asemenea, clar, deoarece variabilele cu valorile lor nu mai sunt atât de ușor de editat, deși este posibil, de asemenea.

Al doilea parametru al formularului este "acțiunea". Aceasta este calea și numele fișierului de script la care transmitem date. În cazul nostru, acesta este index.php. Această cale poate fi transmisă și complet, adică așa: acțiune \u003d "https:/my_site.ru/index.php". Dacă nu specificați valoarea parametrului "acțiune", toate informațiile vor fi transmise la scriptul principal, adică pagina index Index.php a site-ului dvs., care este destul de logică.

Acum primim date din forma noastră. Odată ce am trecut în index.php, înseamnă că codul va fi codul acestei pagini:

"Nume Echo" "; Echo $ _post [" user_name "]; echo"
vârsta - "; Echo $ _post [" vârsta "]; Echo" ani ";) Alte variabile (eco" nu au ajuns. Verificați tot timpul. ";)?\u003e

Nu uitați să verificați pentru goluri și valori admise. Apoi, trebuie să clarificați de ce variabilele noastre sunt numite numele de utilizator și vârsta? Și te uiți la câmpurile de formă pe care le-am creat mai sus. Vezi acolo nume de intrare \u003d "user_name" tip \u003d "text" ? Iată parametrul de nume și stabilește numele variabilei pe care le avem cu acest câmp. La fel cu vârsta. Sper că este clar. Ei bine, achiziționarea variabilei și a valorilor sale prin poștă nu este aproape diferită de cea pe care am considerat-o mai sus.

Ei bine, lecția sa dovedit a fi mare, dar una dintre cele mai utile, deoarece transferul variabilelor între forme și pagini este exact interactivitatea pentru care folosim PHP.

Ați observat că adresele pot fi luate în considerare pe majoritatea site-urilor:

Http: //syt/index.php? Blog \u003d 2

Aici, nici măcar știind PHP, puteți ghici că facem apel la dosar index.php. Dar ceea ce merge după întrebarea întrebării, puțini oameni știu. Totul este destul de simplu: ? Blog \u003d 2 Acesta este un anunț al variabilei globale "$ _get [" blog "]" cu valoarea "2". Astfel, transmit o variabilă la script care este responsabilă pentru ieșirea din baza de date. Să scriem un script mic în care să vedeți clar:

dacă (Isset ($ _ obține ["blog"])) (
Echo $ _get ["blog"];
}
?>

Folosim operatorul de condiție IF () () ca o condiție în valoare de această linie:

Isset ($ _ obține ["blog"])

isset () vă permite să aflați dacă există o variabilă care este listată în paranteze, adică condiția pe care am descris-o în codul de cod: Dacă există o variabilă $ _get ["blog"], apoi ieșiți conținutul din această variabilă pe ecran. Asta sa întâmplat:

Cred că variabila globală este clar creată. $ _Get. Cu identificatorul pe care l-am anunțat în bara de adrese ( În acest caz, cu identificatorul "blog")

Acum vreau să clarific un moment. Să presupunem că trebuie să declar două variabile, cum să o fac? Prima variabilă este declarată după întrebarea întrebării "?" A doua variabilă este declarată după un astfel de semn "&" Pentru a fi sincer, nu știu ce fel de semn ), aici este un exemplu de anunțare a trei variabile:

Http: //syt/index.php? A \u003d 1 & b \u003d 2 & c \u003d 3

Iată codul de ieșire:

dacă (Isset ($ _ obține ["a"]) și izset ($ _ obține ["b"]) și izset ($ _ obține ["c"])) (
ECHO $ \u200b\u200b_GET ["A"]. "
";
ECHO $ \u200b\u200b_GET ["B"]. "
";
ECHO $ \u200b\u200b_GET ["C"]. "
";
}
?>

Starea se pare așa:

Dacă există o variabilă globală $ _get ["A"] și variabila globală $ _get ["b"] și variabila globală $ _get ["c"] apoi le iesi pe ecran, Iată rezultatul:

Formează

Înainte de a merge la pOST. Solicitări, trebuie să dezasamblați ce formă sunt? De ce ai nevoie? Deoarece variabila globală $ _post ["] este creată prin forme. Ce este un formular? Acestea sunt câmpuri pentru a introduce orice informație a utilizatorului. Câmpurile sunt într-o singură linie, câmpuri mari, există butoane radio, bifați casetele. Vom analiza totul în ordine ...

Formularul este o etichetă:


Elemente de formă

Formularul are atribute, listați cele mai frecvente:

Să creăm un formular:


Elemente de formă

Am setat fișierul ca fișier de manipulare test.php. Deoarece este în el că scriu exemple pentru tine. Am pus metoda post ca aceste metode care utilizează în 99,9% din cazuri. De asemenea, am atribuit numele de nume de formă

Acum, plonjați în lumea elementelor de formă. În primul rând, trebuie să înțelegeți că aproape toate elementele sunt etichetate Diferența numai în atribut tip Aceste etichete. Permiteți-mă să enumeră formele pe care le-ați folosit:

Sunt sigur că nu ați întâlnit astfel de câmpuri, așa că aici se spune: "Fără comentarii"

Acum, să facem un chestionar de pregătire mic cu care vom lucra mai departe. Sarcina noastră este să facem o formă mică care ne spune numele umplerii, podelei, din ce țară este, culoarea preferată și câmpul de text în care utilizatorul poate adăuga ceva despre el însuși. Asta am făcut:

Numele dvs. nume patronimic:

Genul tau:
M.
J.

Din ce tara esti



Culoare preferată (A):

Negrul:
Roșu:
Alb:
Alte:

Despre mine:




Vă rugăm să rețineți că aproape fiecare etichetă are un atribut valoare.Ceea ce este el? Înregistrează datele pe care le veți transfera la o altă pagină. Sper că este clar

Acum, dacă executați acest cod în browser, vom vedea următoarele:

Forma am folosit un atribut acțiune. cu semnificație test.php. Aceasta înseamnă modul în care am spus deja că datele din formular sunt trimise la fișierul test.php.

Cererea poștală

Acum scrieți codul PHP care ne va permite să vedem informațiile pe care le-ați introdus. Unde sunt stocate datele? În cazul cererii de obținere, datele noastre se află în variabila globală $ _Get]. Cu o solicitare poștală, datele vor sta în variabila globală $ _post ["]. În paranteze pătrate, este necesar să se prescrie, ca și în cazul variabilei globale de obținere, un identificator. Întrebarea este locul unde ia acest identificator? De aceea este nevoie de atributul de nume la elementele de formă! Aceste nume care ne servesc cu cheia în gama globală de post. Să începem descrierea scenariului:

dacă (Isset ($ _ Post ["Trimiteți"])) (
Echo "Numele complet:" $ _ Postați ["FIO"]. "
";
Echo "Sex:" $ _ Postați ["sex"]. "
";
Echo "Țara de reședință:" $ _ Postați ["City"]. "
";

Echo "Culoare preferată (a):
";
Echo $ _post ["color_1"]. "
";
Echo $ _post ["Color_2"]. "
";
Echo $ _post ["Color_3"]. "
";
Echo $ _post ["Color_4"]. "
";
Echo "Despre mine:" $ _ Postați ["Despre"] ".


";
}
?>

Dacă este scrisă condiția: dacă există o variabilă globală $ _post ["Trimiteți"], apoi afișați datele de pe ecran. Această variabilă globală este creată dacă facem clic pe butonul SEND, pentru care acest exemplu necesită atributul de nume din buton. Puteți să vă întrebați de ce nu este necesar numele atributului butonului? Totul este destul de simplu. De obicei, programatorul nu urmărește apăsarea butonului și urmărește datele trimise. Pentru funcționarea corectă, de exemplu, formularul de contact, trebuie să urmăriți fără apăsarea butonului, ci corectitudinea de intrare a informațiilor și să aflați dacă aceste informații au fost introduse deloc. În exemplul nostru, nu am verificat datele trimise și pur și simplu am călătorit pentru a apăsa butonul, pentru a simplifica exemplul ... Asta am făcut:

Concluzie

Ei bine, pentru că astăzi am dezasamblat două metode de transfer de date între scripturi și galopam familiar cu formele. Chiar sper că aceste informații pe care le aveți cel puțin undeva utile. Dacă aveți întrebări sau gânduri, scrieți comentarii. Mult noroc pentru tine, astăzi am totul!

P.S.: Vrei ca jocurile pe calculator să devină și mai realiste? DirectX 11 pentru Windows 7 Puteți descărca gratuit pe Windows în! Bucurați-vă de grafică minunată!

Acest post este răspunsul la întrebarea stabilită în comentariile la unul dintre articolele mele.

În articol, vreau să spun ce metode HTTP sunt luate / post / punere / ștergere și altele, pentru care au fost inventate și cum să le folosească în conformitate cu restul.

Http.

Deci, care este unul dintre protocoalele principale de Internet? Pedanții trimit la RFC2616, iar restul va spune despre omenesc :)

Acest protocol descrie interacțiunea dintre cele două computere (client și server), construită pe baza de date a mesajelor, numită solicitare) și răspuns (răspuns). Fiecare mesaj este alcătuit din trei părți: linia de pornire, titluri și corp. În acest caz, numai linia de start este obligatorie.

Liniile de pornire pentru solicitare și răspuns au un format diferit - suntem interesați doar de linia de start a interogării, care arată astfel:

Metoda URI. Http / Versiune. ,

În cazul în care metoda este doar metoda interogării HTTP, URI este identificatorul resurselor, versiunea este versiunea protocolului (actualizată în prezent versiunea 1.1).

Anteturile sunt un set de nume de perechi, separate de colon. În antet, sunt transmise diverse informații de serviciu: codificarea mesajului, numele și versiunea browserului, adresa de la care a venit clientul (Referitor) și așa mai departe.

Corpul mesajului este, de fapt, datele transmise. În cazul răspunsurilor transmise, de regulă, pagina HTML pe care o solicită browserul și în interogare, de exemplu, în corpul mesajului, conținutul fișierelor descărcate pe server sunt transmise. Dar, de regulă, corpul mesajului din interogare este, în general, absent.

Un exemplu de interacțiune HTTP

Luați în considerare un exemplu.

Anchetă:
Get /index.php http / 1.1 gazdă: example.com Agent de utilizator: Mozilla / 5.0 (x11; U; Linux i686; RU; RV: 1.9b5) Gecko / 2008050509 Firefox / 3.0b5 Accept: Text / HTML Connection: Închidere
Prima linie este șirul de interogare, restul sunt titluri; Nu există niciun mesaj corporal

Răspuns:
HTTP / 1.0 200 OK Server: Nginx / 0.6.31 Limba de conținut: RU Conținut Tip: Text / HTML; Charset \u003d UTF-8 Content Lungime: 1234 Conectare: Închidere ... Pagina HTML ...

Resurse și metode

Să ne întoarcem la linia de start a cererii și să reamintim că prezintă un astfel de parametru ca URI. Acest lucru este decriptat ca un identificator de resurse uniform - un identificator de resurse uniform. Resursa este, de regulă, fișierul de pe server (exemplu de URI în acest caz "/styles.css"), dar deloc poate exista orice obiect abstract ("/ bloguri / webdev /" - indică Blocați "dezvoltarea web", nu pe un anumit fișier).

Tipul de interogare HTTP (denumit și metoda HTTP) indică serverul la faptul că dorim să producem cu o resursă. Inițial (la începutul anilor '90) sa presupus că clientul ar putea dori doar să o obțină din resursă - pentru a obține, dar acum, prin protocolul HTTP, puteți crea postări, editați profilul, ștergerea mesajelor și multe altele. Și aceste acțiuni sunt dificil de combinat termenul "primire".

Pentru a delimita acțiunea cu resursele la nivelul metodei HTTP și au fost inventate următoarele opțiuni:

  • Obțineți - obținerea unei resurse
  • Crearea post-resurse
  • Pune - actualizarea resurselor
  • Ștergeți - Ștergeți resursele
Acordați atenție faptului că specificația HTTP nu obligă serverul să înțeleagă toate metodele (care este de fapt mult mai mare de 4) - numai este necesar, și, de asemenea, nu indică serverul pe care ar trebui să-l facă atunci când primește o cerere cu una sau altă metodă. Și aceasta înseamnă că serverul ca răspuns la cererea de ștergere /index.php http / 1.1 nu este obligat Ștergeți pagina index.php pe server, precum și pentru a obține /index.php http / 1.1 cerere nu este obligat Returnați pagina index.php pentru dvs., îl poate șterge, de exemplu :)

Odihna intră în joc

Restul (transferul de stat reprezentativ) este termenul a fost introdus în 2000 de către Roem Fielding (Roy Fielding) - unul dintre dezvoltatorii protocolului HTTP - ca nume al grupului de principii de construcție a site-urilor web. În general, restul acoperă o zonă mai largă decât HTTP - poate fi aplicată în alte rețele cu alte protocoale. Restul descrie principiile interacțiunii și serverului clientului, pe baza conceptelor de "resurse" și "verb" (le puteți înțelege ca fiind supuse ambelor). În cazul HTTP, resursa este determinată de URI, iar verbul este o metodă HTTP.

Restul propune refuzarea de a folosi același URI pentru diferite resurse (adică adresele a două articole diferite precum /index.php?article_id\u003d10 și/index.php?article_id\u003d20 nu este restul) și utilizarea diferită Metodele HTTP pentru diferite acțiuni. Adică o aplicație web scrisă utilizând abordarea REST va șterge o resursă atunci când accesează-o cu metoda HTTP de ștergere (desigur, acest lucru nu înseamnă că este necesar să oferim posibilitatea de a elimina totul și totul, dar orice O solicitare de ștergere în aplicație trebuie să utilizeze metoda HTTP-DELETE).

Restul oferă programatorilor capacitatea de a scrie aplicații web standardizate și ușor mai frumoase decât înainte. Folosind restul, URI pentru a adăuga un utilizator nou nu va fi nici un /User.php?action\u003dcreate (Metoda de obținere / poștă) și pur și simplu /user.php (metoda postală strictă).

Ca rezultat, împreună cu specificația existentă HTTP și abordarea restului dobândesc în cele din urmă semnificația diferitelor metode HTTP. Obțineți - returnează resursele, Post - Creează un nou, Pune - actualizează existența, ștergerea - șterge.

Probleme?

Da, există o mică problemă cu utilizarea restului în practică. Această problemă se numește HTML.

Punerea / ștergerea solicitărilor pot fi trimise prin intermediul XMLHTTRequest, referindu-se la serverul manual (de exemplu, prin curl sau chiar prin Telnet), dar nu puteți face o formă HTML care trimite o cerere de punere / ștergere cu drepturi complete.

Faptul este că specificația HTML nu vă permite să creați formulare care să trimită date diferit decât prin obținerea sau postarea. Prin urmare, pentru funcționarea normală cu alte metode, ele trebuie să le imite artificial. De exemplu, în raft (un mecanism pe baza căruia Ruby interacționează cu serverul web; cu rack, șine, merb și alte cadre de rubin sunt făcute) în forma pe care o puteți adăuga un câmp ascuns numit "_method", și ca a Valoare Specificați numele metodei (de exemplu, "pus") - În acest caz, va fi trimisă o cerere post-cerere, dar Rack va fi capabil să pretindă că am pus și nu post.

Acest post este destinat să explice principiile transferului de date pe Internet cu ajutorul a două metode principale: obțineți și postați. Am scris-o ca un supliment la instrucțiunile generatorului de un program de lucru schimbător pentru cei care nu sunt interesanți pentru detalii ☺.

Mergeți la următoarea adresă (aceasta este pentru o explicație vizuală): http://calendarin.net/calendar.php?year\u003d2016 Vă rugăm să rețineți bara de adrese a browserului: Calendarin.net/calendar.php ? an \u003d 2016 Fișierul principal este numit, urmat de un semn de întrebare (?) Și parametrul "Anul" cu valoarea "2016". Deci, tot ce urmează un semn de întrebare, aceasta este o primire. Totul este simplu. Pentru a transmite un parametru, ci câteva, atunci trebuie să împartă ampersand (&). Exemplu: calendarina.net/calendar.php. ? an \u003d 2016 & afișaj \u003d zile de lucru-și-zile-off

Fișierul principal este, de asemenea, numit, urmat de un semn de întrebare (?), Apoi parametrul "Anul" cu valoarea "2016", apoi ampersand (&), apoi - parametrul "afișaj" cu "Zilele de lucru și - Parametrul de zi ".

Get-parametrii se pot schimba direct în bara de adrese a browserului. De exemplu, schimbarea valorii "2016" la "2017" și apăsând tasta, veți merge în calendar pentru 2017.

Această transmisie de date într-un mod ascuns (adresa paginii nu se schimbă); Adică, pentru a vedea ce a fost transmis, puteți folosi doar programul (script). De exemplu, în următorul instrument pentru calcularea caracterelor din text, datele inițiale sunt transmise prin metoda postală: http://usefalonlinetools.com/free/character-counter.php

Dacă aveți întrebări, comentarii și e-mail-ul meu sunt la dispoziția dumneavoastră.

În plus față de metoda de obținere, pe care am revizuit-o în nota anterioară, există o altă metodă de trimitere a unei interogări pe protocolul HTTP - metoda postală. Metoda postală este, de asemenea, foarte des folosită în practică.

Dacă, pentru a se referi la metoda de obținere, este suficient pentru ca noi să introducem cererea către adresa URL, atunci totul funcționează în metoda postală pe un alt principiu.

Pentru a executa acest tip de cerere, trebuie să facem clic pe butonul cu tipul \u003d "Trimite atribut", care este situat pe pagina web. Rețineți că acest buton este amplasat în element. Cu atributul metodă cu valoarea postă.

Luați în considerare acest cod HTML:

Introduceți textul:


Dacă utilizatorul introduce un text la câmpul de text și faceți clic pe butonul "Trimitere", atunci variabila de text va fi trimisă la server cu conținutul conținutului pe care utilizatorul a introdus-o.

Postați și obțineți cereri cu cuvinte simple

Această variabilă va fi trimisă prin metoda postală.

Dacă scrieți în formularul:

Aceste date vor fi trimise prin metoda de obținere.

Dacă, în cazul unei cereri de obținere, valoarea datelor pe care le putem transmite este limitată la lungimea lungimii browserului, atunci în cazul cererii poștale, nu există o astfel de restricție și putem transmite cantități semnificative de informații.

O altă diferență de metodă post de la obținerea, metoda postală ascunde toate variabilele transmise acestora și valorile lor în corpul său (entitate-corp). În cazul metodei de obținere, acestea au fost stocate în șirul de interogare (cererea-URI).

Iată un exemplu de solicitare făcută de metoda postală:

POST / HTTP / 1.0 \\ R \\ n
Gazdă: www.site.ru \\ r \\ n
Referer: http://www.site.ru/index.html1r.
Cookie: venit \u003d 1 \\ r \\ n
Tip de conținut: aplicație / x-www-form-urlencoded \\ r \\ n
Lungimea conținutului: 35 \\ r \\ n
\\ r \\ n
LOGIN \u003d DIMA & PASSWORD \u003d 12345

Astfel, transmiterea datelor prin metoda postală, vor fi mult mai greu de interceptat atacatorul, pentru că Acestea sunt ascunse de vizionarea directă, astfel încât metoda de transmitere a datelor prin metoda post este considerată a fi mai sigură.

În plus, metoda postală poate fi transmisă nu numai text, ci și date multimedia (imagini, audio, video). Există un parametru special de tip conținut care definește tipul de informații care trebuie transmise.

În cele din urmă, pentru a obține datele care au fost transmise prin această metodă, se utilizează variabila post.

Iată un exemplu de prelucrare în PHP:

echo $ _post ["text"];
?>

În ultima notă, am decis că browserul (clientul) trimite solicitări către serverul HTTP și serverul trimite un răspuns HTTP la clientul HTTP. Aceste solicitări și răspunsuri sunt emise în conformitate cu anumite reguli. Există ceva asemănător sintaxei, ca și în ce secvență ar trebui să fie scrisă. Trebuie să existe o structură strict definită.

Să luăm în considerare această structură în detaliu, care construiește cereri și răspunsuri în protocolul HTTP.

Cererea HTTP este formată din trei părți principale care intră în el în ordinea enumerată mai jos. Există o linie goală între anteturile și corpul mesajului (ca separator), este un simbol de traducere a șirului.

String gol (separator)

Postați și obțineți cereri, care este diferența dintre ele și ceea ce este mai bine și în ce scopuri?

corpul mesajului (corpul entității) - parametru opțional

Cererea de rând - Indică metoda de transfer, adresa URL la care trebuie să fie accesată versiunea protocolului HTTP.

Titluri - Descrieți corpul mesajului, transmiteți parametri diferiți și alte informații și informații.

conținutul mesajului - Acestea sunt datele transmise în cerere. Corpul mesajului este un parametru opțional și poate să nu lipsească.

Când primim un răspuns de la server, corpul mesajului este cel mai adesea conținutul unei pagini web. Dar, atunci când interogări la server, poate fi uneori prezent, de exemplu, atunci când transmitem datele completate în formularul de feedback pe server.

În mai multe detalii, fiecare element de interogare, vom examina următoarele note.

Să luăm, de exemplu, o cerere reală către server. Am subliniat fiecare parte a interogării de culoarea mea: o linie de interogare - verde, titluri - portocaliu, mesajul corpului este albastru.

Cerere din browser:

Host: WebGyRy.info.

Cookie: WP-Setări

Conectare: Păstrați-viață

Următorul exemplu are deja un corp de mesaj.

Server Răspuns:

Tip de conținut: Text / HTML; Charset \u003d utf-8

Codificarea transferului: Chunked

Conectare: Păstrați-viață

Păstrați-viață: timeout \u003d 5

X-pingback: //webgyry.info/xmlrpc.php

Document fără titlu

Iată mesajele clientului și serverul HTTP.

Apropo, doriți să știți dacă are sens într-un element de pe site-ul dvs. utilizând "golurile" metricilor Yandex și Google Analytics?

Îndepărtați ceea ce nu funcționează, adăugați ceea ce funcționează și dublați veniturile.

Curs de stabilire a obiectivelor metricilor Yandex ..

Google Analytics Setup Curs de configurare ..

Clientul HTTP trimite o cerere către server sub forma unei cereri de solicitare, care are următorul format:

  • Rândul de interogare (element obligatoriu)
  • Titlu (element opțional)
  • String gol (element obligatoriu)
  • Corpul mesajului (element opțional)

Luați în considerare fiecare dintre aceste elemente separat.

Cererea de rând

Șirul de interogare începe cu un semn de metodă, după care se efectuează interogarea URI și versiunea protocolului. Elementele sunt împrăștiate din alte spații:

Luați în considerare acest element în detaliu

Metoda de solicitare

Acest element indică o metodă care trebuie apelată pe partea serverului la apariția URI specificată.

Există opt metode în http:

  • Cap.
    Folosit pentru a obține șirul de stare și antetul de pe serverul URI. Nu modifică datele.
  • Obține.
    Folosit pentru a primi date de la server la URI specificat. Nu modifică datele.
  • POST.
    Folosit pentru a trimite date către server (de exemplu, informații despre dezvoltator etc.) utilizând formulare HTML.
  • A pune.
    Înlocuiește toate datele anterioare privind datele descărcate de resurse noi.
  • Șterge.
    Elimină toate datele curente pe o resursă definită de URI.
  • Conectați.
    Setează conexiunea la tunel la server în funcție de URI specificat.
  • Opțiuni.
    Descrie proprietățile de conectare pentru resursa specificată.
  • Urmă.
    Oferă un mesaj care conține următorul de întoarcere al resurselor specificat în URI.

Cererea URI

URI (identificatorul uniform al resurselor) este un identificator de resurse la care este trimisă interogarea. Mai jos este formatul cel mai comun al URI:

‘*’ Utilizat când o solicitare HTTP nu se aplică unei resurse specifice, ci la server. Utilizat numai în cazul în care metoda nu este necesară pentru a se aplica resursei. De exemplu,

absolut. Utilizat atunci când o solicitare HTTP este efectuată pe un proxy. Proxy este solicitat să transmită o interogare dintr-o memorie cache accesibilă și returnează răspunsul. De exemplu:

Asbutivated_put | o sursăcel mai chat este folosit.

Învățați să lucrați cu cereri de obținere și post

Se solicită o resursă specifică a unui anumit server. De exemplu, clientul dorește să obțină o resursă de la server prin portul 80. Adresa de resurse "www.proselyte.net" și trimite următoarea solicitare:

Solicitați câmpurile de antet

Câmpurile antetului permit clientului să transfere informații suplimentare despre solicitare și despre ele însele la serverul însuși. Aceste domenii acționează ca modificatori de interogare.

Mai jos este intersecția celor mai importante câmpuri de antet care pot fi utilizate:

  • Acceptă-charset.
  • Acceptarea-codificare
  • Acceptarea limbajului.
  • Autorizare
  • Aştepta
  • Dacă se potrivește
  • Dacă este modificat - de atunci
  • Dacă nu se potrivește
  • Dacă gama.
  • Dacă-nemodificat-de atunci
  • Gamă.
  • Referer.
  • Agent utilizator

Dacă decidem să implementăm propriul client și propriul dvs. server web, atunci vă putem crea propriile câmpuri de antet.

Un exemplu de solicitare HTTP

Pe aceasta terminăm învățarea cererilor HTTP.
În următorul articol, vom analiza răspunsurile HTTP.

O modalitate de a trimite o solicitare prin http la server este de a solicita metoda de obținere. Această metodă este cea mai comună și cererile către serverul cel mai adesea apar cu utilizarea sa.

Cea mai ușoară modalitate de a crea o interogare de obținere poate fi utilizată pentru a introduce adresa URL în bara de adrese a browserului.

Browserul va trimite serverul aproximativ următoarele informații:

Obțineți / http / 1.1
Host: WebGyRy.info.
Agent de utilizator: Mozilla / 5.0 (Windows NT 6.1; RV: 18.0) Gecko / 20100101 Firefox / 18.0
Acceptați: text / html, aplicație / xhtml + xml, aplicare / xml; q \u003d 0,9, * / *; q \u003d 0,8
ACCEPT-LANGUA: RU-EN, RU; Q \u003d 0,8, en-us; q \u003d 0,5, en; Q \u003d 0,3
Acceptați-codarea: Gzip, deflați-vă
Cookie: WP-Setări
Conectare: Păstrați-viață

Cererea este formată din două părți:

1. Linia de solicitare (linia de solicitare)

2. Antete (antete de mesaje)

Vă rugăm să rețineți că interogarea obținerea nu are un corp de mesaj. Dar acest lucru nu înseamnă că, cu el, nu putem transfera informații pe server.

Diferența dintre metodele de obținere și post

Acest lucru se poate face cu ajutorul parametrilor speciali de obținere.

Pentru a adăuga primirea parametrilor pentru a solicita, trebuie să puneți un semn "?" La sfârșitul adresei URL-ului Și după ce a început să le setați la următoarea regulă:

parametr_name1 \u003d parametri de valoare1 & nume parametru2 \u003d parametri de valoare2 & ...

Separatorul dintre parametri este semnul "&".

De exemplu, dacă vrem să trecem două valori, numele de utilizator și vârsta acestuia, se poate face următoarea linie:

http://site.ru/page.php?name\u003ddima&age\u003d27.

Când această interogare este executată, datele se încadrează în așa-numita variabilă de mediu de la Query_String de la care pot fi obținute pe server utilizând serverul de programare web.

Iată un exemplu, așa cum se poate face pe PHP.

Echo "Numele tău:". $ _Get ["nume"]. "
»;
Echo "Vârsta ta:". $ _Get ["vârstă"]. "
»;
?>

Designul $ _get ["Numele parametrilor"] vă permite să afișați valoarea parametrului transmis.

Ca urmare a executării acestui cod în browser va fi afișat:

Numele tău: Dima
Vârsta ta: 27

de asemenea, efectuăm o cerere către serverul de obținere.

Î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.).

Și încă o veste bună poate fi combinată, 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.