Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Programi
  • PHP: POST i GET zahtjevi za početnike. Korištenje metoda GET i POST

PHP: POST i GET zahtjevi za početnike. Korištenje metoda GET i POST

Korištenje metoda GET i POST u PHP-u teško je precijeniti, budući da se te metode nalaze na gotovo svim stranicama. Prije proučavanja materijala opisanog u nastavku, savjetujem vam da se upoznate s html oznakom

... Pogledajmo svaku od ovih metoda detaljno.

GET metoda

Metoda GET koristi URL niz za prosljeđivanje podataka. Možda ste primijetili dugačke i nejasne URL-ove. Na primjer: function.php?login = Alex & email = dezyakin... U ovom slučaju, podaci se obrađuju u funkciji.php. Nakon upitnika "?" nalazi se nabrajanje proslijeđenih parametara (parametar je odvojen znakom "&") s vrijednostima: parametru za prijavu dodijeljena je Alex vrijednost, a varijabla e-pošte je dezyakin. Podaci će biti pohranjeni u superglobalnom nizu $_GET. Primjer korištenja metode GET prikazan je u nastavku:

Prijaviti se: e-pošta: Koristeći superglobalni niz $_GET, prikazujemo prihvaćene vrijednosti:* / jeka "
login = ". $ _GET [" prijava "]; echo"
email = ". $ _GET [" email "];?>

Primijetite kako čitamo vrijednosti iz superglobalnog niza $_GET: $ _GET ["ime_varijable"]... U našem primjeru nazivi varijabli su deklarirani u obliku (ime = prijava i ime = e-pošta).

Savjet:
Prije obrade primljenih vrijednosti, savjetujem vam da provjerite njihovo postojanje kroz funkcije isset (ime_varijable) ili prazno (ime_varijable)- ove funkcije su bile obrađene u prethodnoj lekciji 2: varijable u PHP-u. Na primjer:

provjera postojanja s issetom: ako je postavljeno ($ _GET ["prijava"]) ( operatori za rukovanje prijavom ... } //ili provjerite postojanje koristeći prazno: ako je prazno ($ _GET ["e-pošta"]) ( operateri za obradu e-pošte ... } ?>

U obrascu možete odrediti naziv datoteke koja će obraditi proslijeđene vrijednosti. To se radi pomoću atributa radnje obrasca, kojem se može dodijeliti adresa ove datoteke. Prema zadanim postavkama, ova je datoteka dodijeljena trenutnoj datoteci (tj. obrađuje se u datoteci u kojoj se nalazi obrazac). Evo primjera u kojem se podaci iz obrasca šalju na obradu u datoteku srcipt.php:

Prijaviti se: e-pošta:

Datoteka script.php mora sadržavati neku vrstu rukovatelja informacijama, inače će informacije biti proslijeđene u prazno.

GET metoda ima mnoge nedostatke:

  • Korisnik vidi vrijednosti proslijeđenih parametara;
  • Korisnik može lako krivotvoriti prenesene parametre;
  • Nezgodan prijenos binarnih informacija (morate kodirati u tekstualni format);
  • Količina prenesenih podataka je ograničena - 8 kbajta;

Zbog navedenih nedostataka, metoda GET koristi se samo u slučajevima kada trebate prenijeti malu količinu podataka, a ti podaci ni na koji način nisu tajni.

POST metoda

Metoda POST razlikuje se od GET po tome što se podaci prenose u zatvorenom obliku. Postoji superglobalni niz $_POST iz kojeg možete čitati podatke ovako: $ _POST ["ime_varijable"]... Na primjer:

Prijaviti se: "> E-mail: ">
Koristeći superglobalni niz $_POST, ispišite prihvaćene vrijednosti:* / jeka "
login = ". $ _POST [" prijava "]; echo"
email = ". $ _POST [" email "];?>

Rezultat izvršavanja gore opisanog koda prikazan je na donjoj slici:

Kao što vidite, URL nema postscript, ali su podaci ipak primljeni i prikazani.

Bilješka:
1) Volumen vrijednosti koje se prenose metodom POST ograničen je prema zadanim postavkama i iznosi 8 MB. Da biste povećali ovu vrijednost, trebate promijeniti direktivu post_max_size u php.ini.

2) U ranijim verzijama PHP-a, umjesto kratkih naziva superglobalnih nizova $ _GET i $ _POST, korišteni su duži nazivi: $ HTTP_GET_VARS i $ HTTP_POST_VARS. One su prema zadanim postavkama onemogućene u php 5, ali ih možete omogućiti u konfiguracijskoj datoteci php.ini pomoću parametra register_long_arrays. U php 6 ovi dugi nazivi neće biti dostupni.

3) Prije obrade varijabli iz $_POST-a, savjetujem vam da provjerite prisutnost varijabli, baš kao što je to učinjeno s GET metodom.

Metode GET i POST u HTTP i HTTPS dvije su od najpopularnijih metoda koje se koriste za prijenos podataka s klijenta na poslužitelj koristeći HTTP (Hypertext Transfer Protocol) protokol. I GET i POST se mogu koristiti za slanje zahtjeva i primanje odgovora, ali postoji značajna razlika između njih.

Razlika između GET i POST zahtjeva u HTTP ili HTTPS popularno je pitanje u svakom intervjuu za web programiranje. Budući da je HTML neovisan o tehnologiji web poslužitelja kao što su Java, ASP ili PHP, a HTTP je glavni protokol u internetskom prostoru, ne može se jasno zanemariti važnost razumijevanja metoda GET i POST. U ovom članku ćemo pogledati što je HTTP GET metoda, što je HTTP POST metoda, kada koristiti određeni zahtjev i koja je razlika između njih. Analizirajmo svaki koncept zasebno.

Što je HTML?

HTML je jezik koji se koristi za izradu web stranica. Hipertekst se odnosi na hiperveze koje HTML stranica može sadržavati. Označni jezik se odnosi na način na koji se oznake koriste za definiranje izgleda stranice i elemenata na stranici.
Ispod je primjer HTML-a koji se koristi za definiranje osnovne web stranice s naslovom i jednim odlomkom teksta:



<Голова>
<Название>TechTerms.com

<Тело>

Ovo je primjer odlomka u HTML-u.

Prvi redak definira vrstu sadržaja sadržanog u dokumentu., i koji su svi uključeni u gornji primjer. Naslov stranice, metapodaci i veze za sidrenu datoteku postavljaju se između Stvarni sadržaj stranice je između oznaka .

Web je prošao kroz mnoge promjene tijekom posljednjih nekoliko desetljeća, ali HTML je uvijek bio primarni jezik koji se koristio za razvoj web stranica. Zanimljivo, dok su web stranice postale naprednije i interaktivnije, HTML je postao jednostavniji. Ako usporedite izvor HTML5 stranice sa sličnom stranicom napisanom u HTML 4.01 ili XHTML 1.0, bit će manje koda na HTML5 stranici. To je zato što se moderni HTML oslanja na Cascading Style Sheets ili JavaScript za formatiranje gotovo svih elemenata unutar stranice.

Mnoge dinamičke web stranice generiraju web stranice u hodu koristeći skriptni jezik na strani poslužitelja kao što je PHP ili ASP. Međutim, čak i dinamičke stranice moraju biti oblikovane pomoću HTML-a. Stoga skriptni jezici često generiraju HTML koji se šalje web pregledniku.

Protokol za prijenos hiperteksta (HTTP) dizajniran je za komunikaciju između klijenata i poslužitelja i radi poput protokola zahtjev-odgovor.

Web preglednik može biti klijent, a aplikacija na računalu na kojem se nalazi web stranica može biti poslužitelj.

Klijent (preglednik) šalje HTTP zahtjev poslužitelju, poslužitelj vraća odgovor koji sadrži informacije o statusu zahtjeva, a može sadržavati i traženi sadržaj.

Dvije metode zahtjeva GET i POST

Dvije najčešće korištene metode za zahtjev-odgovor između klijenta i poslužitelja:

    GET - zahtijeva podatke iz navedenog resursa;

    POST - Šalje podatke za obradu na navedeni resurs.

Prevođenje GET i POST doslovno znači dobivanje i naknadnu obradu.

Više o HTTP-u

HTTP je protokol koji se koristi za prijenos podataka putem Interneta. Dio je paketa Internet Protocol i definira naredbe i usluge koje se koriste za prijenos podataka na web stranicu.

HTTP koristi model poslužitelj-klijent. Klijent može biti kućno računalo, prijenosno računalo ili mobilni uređaj. HTTP poslužitelj je obično web host sa softverom web poslužitelja kao što je Apache ili IIS. Kada korisnik pristupi web stranici, preglednik šalje zahtjev odgovarajućem web poslužitelju i odgovara HTTP statusnim kodom. Ako je URL valjan i veza je osigurana, poslužitelj će poslati web stranicu i povezane datoteke pregledniku.

Uobičajeni HTTP statusni kodovi uključuju:

    200 - uspješan zahtjev (web stranica postoji);

    301 - stalno se pomiče (često preusmjerava na novi url);

    401 - neovlašteni zahtjev (potrebna je autorizacija);

    500 - Interna pogreška poslužitelja (često uzrokovana neispravnom konfiguracijom poslužitelja).

POST i GET u HTTP-u

HTTP definira naredbe GET i POST koje se koriste za obradu slanja obrazaca na web-mjestima. Naredba CONNECT koristi se za olakšavanje sigurne veze koja je šifrirana pomoću SSL-a. Šifrirane HTTP veze odvijaju se preko HTTPS-a, HTTP proširenja dizajniranog za siguran prijenos podataka.

URL-ovi koji počinju s "http: //" dostupni su putem standardnih protokola za prijenos hiperteksta i prema zadanim postavkama koriste port 80. URL-ovi koji počinju s "https: //" dostupni su putem sigurne HTTPS veze i često koriste port 443.

POST

POST je niz provjera sustava koje obavljaju računala i drugi elektronički uređaji kada su uključeni. Rezultati ispitivanja mogu se prikazati na zaslonu, prikazati putem treperećih LED dioda ili jednostavno interno snimiti. Na računalnim sustavima, POST operacija se izvodi na početku slijeda pokretanja. Ako svi testovi prođu, ostatak procesa pokretanja nastavit će se automatski.

Operativni sustavi Mac i Windows pokreću POST svaki put kada se računalo pokrene ili ponovno pokrene. Skeniranje potvrđuje hardver i osigurava da procesor, RAM i uređaji za pohranu ispravno rade. Ako se tijekom POST-a dogodi pogreška, proces pokretanja može pauzirati ili potpuno zaustaviti, a monitor može prikazati poruku u kojoj se navodi da se POST pogreške često prikazuju na zaslonu s informacijama BIOS-a. Mogu se prikazati kao kripto kodovi kao što je "08" ili kao poruka sustava kao što je "Pogreška u memoriji sustava na pomaku". Na Macu, POST pogreške često su označene jednostavnom grafikom kao što je ikona slomljene mape koja označava da uređaj za pokretanje nije pronađen.

Fizičke manifestacije

U nekim slučajevima, zaslon računala se možda neće ni uključiti prije POST pogrešaka. Ako se to dogodi, kodovi pogrešaka mogu se emitovati bljeskanjem LED-a ili zvučnim signalom. Na primjer, Apple iMac će reproducirati tri uzastopna tona, pauzirati pet sekundi, a zatim ponoviti tonove kada se tijekom pokretanja otkrije loš RAM. Većina računala također pišti kada se otkriju POST pogreške, iako svaki proizvođač koristi svoje vlastite kodove.

POST je prilično tehnički izraz koji redovito koriste samo računalni tehničari. Međutim, to je dobar akronim jer vam pomaže bolje razumjeti poruke o pogrešci koje se mogu pojaviti na računalima ili drugim elektroničkim uređajima. Ako se vaše računalo ne pokrene zbog POST pogreške, pomoću drugog uređaja možete pronaći značenje i uzrok pogreške s web-mjesta proizvođača. Tada možete poduzeti odgovarajuću radnju - ukloniti memorijski modul ili ponovno instalirati video karticu, a zatim ponovno pokrenite opremu.

DOBITI

POST je također metoda prosljeđivanja varijabli HTML obrasca s jedne web stranice na drugu bez njihovog prikazivanja u adresnoj traci. Alternativna metoda je GET, koja dodaje vrijednosti URL-u. HTTP POST zahtjevi pružaju dodatne podatke od klijenta (preglednika) do poslužitelja u tijelu poruke. Nasuprot tome, GET zahtjevi uključuju sve potrebne podatke u URL-u. Obrasci u HTML-u mogu koristiti bilo koju metodu navodeći metodu = POST ili metodu = GET (zadano) na elementu

... Navedena metoda određuje kako se podaci obrasca šalju poslužitelju. Kada se koristi metoda GET, svi podaci obrasca su URL kodirani kao parametri niza upita. Uz POST, podaci obrasca pojavljuju se u tijelu poruke HTTP zahtjeva.

Razlike u podnošenju obrazaca

Metoda POST zahtjeva zahtijeva od web poslužitelja da prihvati i pohrani podatke zatvorene u tijelu poruke zahtjeva. Često se koristi prilikom učitavanja datoteke ili prilikom slanja ispunjenog web obrasca.

Metoda zahtjeva HTTP GET dohvaća informacije s poslužitelja. Kao dio GET zahtjeva, neki podaci mogu biti proslijeđeni u nizu upita URL-a, navodeći pojmove za pretraživanje, datumske raspone ili druge informacije koje identificiraju zahtjev.

Kao dio POST zahtjeva, proizvoljna količina podataka bilo koje vrste može se poslati poslužitelju u tijelu poruke zahtjeva. Polje zaglavlja u POST zahtjevu obično označava vrstu internetskog medija tijela poruke.

Glavna razlika između GET i POST zahtjeva je u tome što odgovaraju različitim HTTP zahtjevima kako je definirano u HTTP specifikacijama. Proces za slanje obje metode počinje na isti način: skup podataka obrasca kreira preglednik, a zatim se kodira na način naznačen atributom enctype. Za METHOD = "POST, enctype atribut može biti multipart / form-data ili application / x-www-form-urlencoded, dok se za METHOD =" GET "pokreće samo putem aplikacije / x-www-form-urlencoded. Ovaj obrazac podaci se postavljaju zatim prosljeđuju poslužitelju.

Za slanje obrasca pomoću METHOD = "GET", preglednik konstruira URL uzimajući vrijednost atributa akcije i dodajući mu skup podataka obrasca, kodiran pomoću tipa sadržaja application / x-www-form-urlencoded). Preglednik tada taj URL tretira kao da se odnosi na vezu (ili kao da je korisnik ručno unio URL). Preglednik dijeli URL na dijelove i prepoznaje host, a zatim tom hostu šalje GET zahtjev s ostatkom URL-a kao argumentom. Važno je napomenuti da ovaj proces znači da su podaci obrasca ograničeni na ASCII kodove. Posebnu pozornost treba posvetiti kodiranju i dekodiranju drugih vrsta znakova kada se prenose putem URL-a u ASCII formatu.

Podnošenje obrasca s METHOD = "POST" uzrokuje slanje POST zahtjeva pomoću vrijednosti atributa akcije i poruke generirane prema vrsti sadržaja naznačenom atributom enctype.

PHP

PHP je ugrađen u HTML. To znači da se PHP kod može umetnuti u HTML stranicu. PHP kôd čita ili analizira poslužitelj koji hostira stranicu. Izlaz GET i POST funkcija u PHP-u na stranici obično se vraća kao HTML koji preglednik može pročitati. Budući da se PHP kôd pretvara u HTML prije nego što se stranica učita, korisnici ne mogu vidjeti PHP kôd na stranici. To čini PHP stranice dovoljnim za pristup bazama podataka i drugim zaštićenim informacijama.

Velik dio PHP-ove sintakse posuđen je iz drugih jezika kao što su C, Java i Perl. Međutim, PHP ima niz jedinstvenih značajki i posebnih značajki. Cilj ovog jezika je omogućiti web programerima da brzo i jednostavno pišu dinamički generirane stranice.

Wordpress

WordPress je besplatni sustav za upravljanje sadržajem koji se koristi za izgradnju i održavanje web stranica. Njegova jednostavnost korištenja i jedinstvene značajke bloganja učinile su ga najpopularnijim alatom za bloganje na internetu.

WordPress sučelje omogućuje svima koji nemaju iskustva u razvoju web stranica da kreiraju i objave web stranicu. Ugrađeni alati za bloganje omogućuju jednostavan način praćenja pojedinačnih postova, posjetitelja i komentara korisnika.

Iako su dostupne tisuće WordPress predložaka i dodataka, POST GET sustav u WordPressu i dalje ima svoja ograničenja. Budući da se radi o usluzi koja se temelji na predlošku, korisnik bi trebao započeti s unaprijed izgrađenom web-mjestom, a ne stvarati stranice od nule. Također, ne postoji način za ugradnju skripti ili održavanje baze podataka s istom razinom kontrole koju nudi prilagođena web stranica.

Alat POST_GET_ID () omogućuje skriptama da manipuliraju stavkom budući da ima jedinstveni ID i kada ga pošaljete kao obrazac putem ovih metoda, padajući izbornik će biti poslan s jedinstvenim ID-om koji omogućuje skripti da primijeti koji se post pokreće. Alternativno, može se poslati skrivena varijabla koja će omogućiti skripti da vidi koji post pripada pogledu.

Da, da, svi su nekada nešto naučili. Jedina stvar koja razlikuje ljude u tom pogledu je to što su nekom podučavanje laka, dok drugi mjesecima ne mogu dokučiti bit problema. Danas ćemo govoriti o POST i GET zahtjevima u HTML \ PHP.

Sami POST i GET zahtjevi (u daljnjem tekstu jednostavno zahtjevi) odavno su ukorijenjeni u svim internetskim resursima. Ako odjednom jednog dana postoji alternativa ovim tehnologijama, vjerojatno neće biti uskoro, a vjerojatno i nije potrebna. Budući da naši zahtjevi u potpunosti ispunjavaju zadatak razmjene podataka između internetskih stranica.

Pogledajmo prvo GET zahtjev. Napravimo index.php datoteku sa standardnim html kodom, i također postavimo obrazac na nju, neka to bude obrazac za narudžbu proizvoda.

Ovdje obraćamo pažnju na oznaku oblik... Ima dva parametra akcijski i metoda... Prvi je odgovoran za adresu stranice na koji ćemo prenijeti naše podatke, drugi je odgovoran za način na koji će ti podaci biti prenijeti. Unutar ove oznake opisan je skup naših podataka koje želimo prenijeti. Podacima se dodjeljuju nazivi (parametar Ime). Također je potreban unos vrste podnijeti, što je gumb koji se klikne za slanje podataka.

Spremimo našu datoteku i otvorimo je u pregledniku.
Put naše stranice u pregledniku je "... / index.php". Na samoj stranici vidimo dva polja za unos i gumb. Dodajmo nešto u naša polja i kliknemo na gumb "Naruči". Naša stranica je ažurirana. Pogledajmo njegovu adresu: "... / index.php? OrderName = Test & count = 12". (Upisao sam riječ 'Test' u drugi '12' u prvom polju). Kao što vidimo, adresa stranice je malo promijenjena. Činjenica je da se prijenos parametara s GET zahtjevom provodi dodjeljivanjem retku adrese stranice. Parametri su odvojeni od glavne adrese znakom "?", a različiti parametri "&". Struktura parametara je sljedeća: naziv_parametra = vrijednost... Naziv parametra odgovarat će vrijednosti atributa imena u polju za unos.
Uredimo malo kod stranice:

> >

Sada ponovno kliknimo na gumb "Naruči". Kao što vidimo, stranica je ažurirana, ali su naša polja ostala popunjena. To je zbog činjenice da smo naveli zadanu vrijednost za naša polja. Štoviše, ove vrijednosti su primljeni GET parametar. Kao što možemo vidjeti u PHP kodu, GET parametri su niz s indeksom niza jednakim imenu parametra. Ako se sada poigramo s adresom stranice i promijenimo vrijednosti parametara u njoj i pritisnemo tipku "Enter", opet ćemo primijetiti sliku s osvježavanjem stranice i ispunjavanjem našeg obrasca.

Očito je da je pogrešno (i nije sigurno) slati tajne ili servisne podatke u GET zahtjevu. Bolje ga je koristiti za prijenos npr. ID-a vijesti, koji treba uzeti iz baze ili naziva stranice koja se treba prikazati.

POST zahtjev je druga stvar. Radi na isti način, ali ne pohranjuje parametre u adresnu traku. Promijenimo oblik:

$ _POST ["naziv narudžbe"]?> > $ _POST ["broj"]?> >

Međutim, kao što vidite, nije se puno promijenilo! Otvorimo našu stranicu, upišimo nešto u polja i pritisnemo gumb "Naruči". Sve je funkcioniralo na isti način, međutim (međutim), kao što vidimo u retku upita, adresa "... / index.php" se vijori bez ikakvih parametara. Tako smo svoje podatke nekako "sakrili" od znatiželjnih očiju. Naravno, koncept je bio skriven, prilično proizvoljan, jer se ti podaci još uvijek mogu presresti, ali to je druga priča. Dodajmo parametre “… / index.php? OrderName = Trololo & count = 100” na našu adresu i pritisnite “Enter”. Kao što vidimo, stranica je učitana, ali iako su parametri proslijeđeni, polja su bila prazna. To sugerira da se, unatoč velikoj sličnosti, ove vrste zahtjeva ni na koji način ne preklapaju, a ako postoji potreba, vrijedi napisati obrađivač za svaku vrstu zahtjeva posebno.

Mislim da je to dovoljno. Osnove pitanja, mislim, opisane su glavom.

I još malo… Ne zaboravite provjeriti proslijeđene parametre. Ako zasigurno znate da parametar mora biti broj, tada prekinite sve pokušaje prijenosa nenumeričke vrijednosti itd.

Ovaj post ima za cilj objasniti principe prijenosa podataka na Internetu pomoću dvije glavne metode: GET i POST. Napisao sam ga kao dodatak uputama za generator smjenskog rada za one koje malo zanimaju detalji ☺.

Idite na sljedeću adresu (ovo je za vizualno objašnjenje): http://calendarin.net/calendar.php?year=2016 Obratite pažnju na adresnu traku preglednika: calendarin.net/calendar.php ? godina = 2016 Glavna datoteka je imenovana, nakon čega slijedi upitnik (?) i parametar "year" s vrijednošću "2016". Dakle, sve što slijedi nakon upitnika je GET zahtjev. Jednostavno je. Da biste proslijedili više od jednog parametra, ali nekoliko, onda ih je potrebno razdvojiti znakom &. Primjer: calendarin.net/calendar.php ? godina = 2016. & prikaz = radni dani i slobodni dani

Glavna datoteka je i dalje imenovana, nakon čega slijedi upitnik (?), zatim - parametar "year" s vrijednošću "2016", zatim - ampersand (&), zatim - parametar "display" s vrijednošću "work -dani i dani -slobodni".

GET parametri se mogu mijenjati izravno u adresnoj traci preglednika. Na primjer, promjenom vrijednosti "2016" u "2017" i pritiskom na tipku idete na kalendar za 2017. godinu.

Ovo je prijenos podataka na skriveni način (adresa stranice se ne mijenja); odnosno možete vidjeti što je preneseno samo uz pomoć programa (skripte). Na primjer, u sljedećem alatu za brojanje znakova u tekstu, izvorni podaci se prenose metodom POST: http://usefulonlinetools.com/free/character-counter.php

Ako imate bilo kakvih pitanja, komentara i moj e-mail na usluzi.

Osim GET metode, o kojoj smo govorili u prethodnom postu, postoji još jedna metoda za slanje zahtjeva putem HTTP protokola - POST metoda. POST metoda se također vrlo često koristi u praksi.

Ako nam je za pristup poslužitelju metodom GET bilo dovoljno upisati zahtjev u URL, onda u POST metodi sve radi po drugačijem principu.

Kako bismo ispunili ovakvu vrstu zahtjeva, potrebno je kliknuti na gumb s atributom type = "submit" koji se nalazi na web stranici. Imajte na umu da se ovaj gumb nalazi u elementu

s atributom metode postavljenim na post.

Razmotrite ovaj HTML:

Unesite tekst:


Ako korisnik unese bilo koji tekst u tekstualno polje i klikne na gumb "Pošalji", tada će se poslužitelju poslati tekstualna varijabla s vrijednošću sadržaja koju je unio korisnik.

POST i GET zahtjeve jednostavnim riječima

Ova varijabla će biti poslana metodom POST.

Ako napišete u obliku ovako:

Tada će se podaci poslati metodom GET.

Ako je, u slučaju GET zahtjeva, količina podataka koju smo mogli prenijeti bila ograničena duljinom adresne trake preglednika, tada u slučaju POST zahtjeva nema takvog ograničenja i možemo prenijeti značajne količine informacija.

Još jedna razlika između metode POST i metode GET, metoda POST skriva sve varijable koje su joj proslijeđene i njihove vrijednosti u svom tijelu (Entity-Body). U slučaju GET metode, oni su pohranjeni u stringu zahtjeva (Request-URI).

Evo primjera POST zahtjeva:

POST / HTTP / 1.0 \ r \ n
Domaćin: www.site.ru \ r \ n
Referent: http://www.site.ru/index.html\r\n
Kolačić: prihod = 1 \ r \ n
Vrsta sadržaja: aplikacija / x-www-form-urlencoded \ r \ n
Duljina sadržaja: 35 \ r \ n
\ r \ n
prijava = Dima & lozinka = 12345

Dakle, prijenosom podataka POST metodom, napadaču će biti puno teže presresti ih, jer skriveni su od pogleda, pa se POST metoda smatra sigurnijom.

Osim toga, POST metoda može prenositi ne samo tekst, već i multimedijske podatke (slike, audio, video). Postoji poseban parametar Content-Type koji određuje vrstu informacija koje je potrebno prenijeti.

Konačno, varijabla POST se koristi za dohvaćanje podataka prenesenih ovom metodom na poslužitelju.

Evo primjera obrade u PHP-u:

echo $ _POST ['tekst'];
?>

U prošlom postu smo odlučili da preglednik (klijent) šalje HTTP zahtjeve poslužitelju, a poslužitelj klijentu šalje HTTP odgovore. Ovi zahtjevi i odgovori obrađuju se prema određenim pravilima. Postoji nešto poput sintakse, kako i kojim redoslijedom treba pisati. Mora postojati dobro definirana struktura.

Pogledajmo pobliže ovu strukturu koja se koristi za izradu zahtjeva i odgovora u HTTP protokolu.

HTTP zahtjev sastoji se od tri glavna dijela, koji dolaze točno dolje prikazanim redoslijedom. Između zaglavlja i tijela poruke nalazi se prazan redak (kao separator), to je znak za prijelaz retka.

Prazan niz (separator)

Objavi i primi zahtjeve, koja je razlika između njih i koji je bolji i za koje svrhe?

tijelo poruke (Entity Body) - izborni parametar

Niz upita- određuje način prijenosa, URL za pristup i verziju HTTP protokola.

Naslovi- opisati tijelo poruka, prenijeti različite parametre i druge informacije i informacije.

tijelo poruke- to su sami podaci, koji se prenose u zahtjevu. Tijelo poruke nije obavezno i ​​može se izostaviti.

Kada od poslužitelja primimo zahtjev za odgovor, tijelo poruke najčešće je sadržaj web stranice. No, prilikom postavljanja zahtjeva poslužitelju, ponekad može biti i prisutno, na primjer, kada podatke koje smo ispunili u obrascu za povratne informacije prenesemo na poslužitelj.

Detaljnije, svaki element zahtjeva razmotrit ćemo u sljedećim bilješkama.

Uzmimo za primjer jedan pravi zahtjev poslužitelja. Svaki dio zahtjeva sam istaknuo svojom bojom: redak zahtjeva je zelen, zaglavlja su narančasta, tijelo poruke je plavo.

Zahtjev iz preglednika:

Domaćin: webgyry.info

Kolačić: wp-postavke

Povezivanje: održati na životu

U sljedećem primjeru tijelo poruke je već prisutno.

Odgovor poslužitelja:

Vrsta sadržaja: tekst / html; skup znakova = UTF-8

Kodiranje prijenosa: u komadima

Povezivanje: održati na životu

Keep-Alive: timeout = 5

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

Neimenovani dokument

To su poruke koje se razmjenjuju između klijenta i poslužitelja putem HTTP protokola.

Usput, želite li znati ima li smisla u nekom elementu na vašoj stranici koristeći "ciljeve" Yandex Metrics i Google Analytics?

Oduzmite ono što NE funkcionira, dodajte ono što radi i udvostručite svoj rezultat.

Tečaj postavljanja ciljeva Yandex Metrica ..

Tečaj o postavljanju Google Analytics ciljeva ..

HTTP klijent šalje zahtjev poslužitelju u obliku poruke zahtjeva, koja ima sljedeći format:

  • Niz zahtjeva (obavezno)
  • Naslov (izborni element)
  • Prazan niz (obavezno)
  • Tijelo poruke (izborno)

Pogledajmo svaki od ovih elemenata zasebno.

Niz upita

Niz zahtjeva počinje tokenom metode, nakon čega slijedi URI zahtjeva i verzija protokola. Elementi su međusobno odvojeni razmacima:

Razmotrimo ovaj element detaljnije.

Metoda zahtjeva

Ovaj element specificira metodu koja se poziva na strani poslužitelja na specificiranom URI-ju.

Postoji osam metoda u HTTP-u:

  • GLAVA
    Koristi se za dobivanje statusnog retka i naslova s ​​poslužitelja prema URI-ju. Ne mijenja podatke.
  • DOBITI
    Koristi se za primanje podataka s poslužitelja na navedeni URI. Ne mijenja podatke.
  • POST
    Koristi se za slanje podataka na poslužitelj (kao što su informacije o razvojnim programerima, itd.) pomoću HTML obrazaca.
  • STAVITI
    Zamjenjuje sve prethodne podatke na resursu s novoučitanim podacima.
  • IZBRISATI
    Uklanja sve trenutne podatke na resursu koji je specificirao URI.
  • SPOJITI
    Uspostavlja tunelsku vezu s poslužiteljem na navedenom URI-ju.
  • OPCIJE
    Opisuje svojstva veze za navedeni resurs.
  • TRAG
    Pruža poruku koja sadrži povratni trag lokacije navedenog URI-ja resursa.

URI zahtjeva

URI (Uniform Resource Identifier) ​​je identifikator resursa na koji se šalje zahtjev. Najčešći URI format prikazan je u nastavku:

‘*’ koristi se kada HTTP zahtjev nije specifičan za određeni resurs, već za poslužitelj. Koristi se samo kada se metoda ne mora primijeniti na resurs. Na primjer,

apsolutni uri koristi se kada se HTTP zahtjev upućuje proxyju. Od proxyja se traži da proslijedi zahtjev iz dostupne predmemorije i vraća odgovor. Na primjer:

asbolutny_path | izvor koristi većina chatso.

Učenje rada s GET i POST zahtjevima

Zahtijeva se određeni resurs određenog poslužitelja. Na primjer, klijent želi dobiti resurs od poslužitelja preko porta 80. Adresa izvora je “www.proselyte.net” i šalje sljedeći zahtjev:

Traženje polja zaglavlja

Polja zaglavlja omogućuju klijentu da poslužitelju prenese dodatne informacije o zahtjevu i o sebi. Ova polja djeluju kao modifikatori zahtjeva.

Ispod je popis najvažnijih polja zaglavlja koja se mogu koristiti:

  • Prihvati-Charset
  • Prihvati-kodiranje
  • Prihvati-jezik
  • Autorizacija
  • Očekivati
  • Ako se podudara
  • Ako-Modificirano-Od
  • Ako-Nema-Match
  • Ako-Raspon
  • Ako-Neizmijenjeno-Od
  • Domet
  • Referent
  • Korisnički agent

Ako želimo implementirati vlastiti klijent i vlastiti web poslužitelj, onda možemo kreirati vlastita polja zaglavlja.

Primjer HTTP zahtjeva

Ovim završavamo naše istraživanje HTTP zahtjeva.
U sljedećem članku pogledat ćemo HTTP odgovore.

Jedan od načina na koji možete poslati HTTP zahtjev poslužitelju je GET zahtjev. Ova metoda je najčešća i najčešće se njome upućuju zahtjevi poslužitelju.

Najlakši način za stvaranje GET zahtjeva je da upišete URL u adresnu traku preglednika.

Preglednik će poslužitelju prenijeti sljedeće informacije:

GET / HTTP / 1.1
Domaćin: webgyry.info
Korisnički agent: Mozilla / 5.0 (Windows NT 6.1; rv: 18.0) Gecko / 20100101 Firefox / 18.0
Prihvati: tekst / html, aplikacija / xhtml + xml, aplikacija / xml; q = 0,9, * / *; q = 0,8
Prihvati-jezik: ru-RU, ru; q = 0,8, en-US; q = 0,5, en; q = 0,3
Prihvati-kodiranje: gzip, deflate
Kolačić: wp-postavke
Povezivanje: održati na životu

Zahtjev se sastoji od dva dijela:

1. redak zahtjeva

2.zaglavlja (zaglavlja poruke)

Imajte na umu da GET zahtjev nema tijelo poruke. No, to ne znači da uz njegovu pomoć ne možemo prenijeti nikakve informacije na poslužitelj.

Razlika između metoda GET i POST

To se može učiniti pomoću posebnih GET parametara.

Da biste zahtjevu dodali GET parametre, trebate staviti znak "?" na kraj URL-a. a nakon toga počnite ih pitati prema sljedećem pravilu:

parameter_name1 = parameter_value1 & parameter_name2 = parameter_value2 & ...

Razdjelnik između parametara je znak "&".

Na primjer, ako želimo poslužitelju proslijediti dvije vrijednosti, korisničko ime i njegovu dob, to se može učiniti sljedećim redkom:

http://site.ru/page.php?name=dima&age=27

Kada se ovaj upit izvrši, podaci idu u takozvanu varijablu okruženja QUERY_STRING, iz koje se mogu dohvatiti na poslužitelju koristeći web programski jezik na strani poslužitelja.

Evo primjera kako se to može učiniti u PHP-u.

echo "Vaše ime:". $ _GET ["ime"]. "
»;
echo "Vaše godine:". $ _GET ["dob"]. "
»;
?>

$ _GET ["parameter_name"] konstrukcija omogućuje vam prikaz vrijednosti proslijeđenog parametra.

Kao rezultat izvršavanja ovog koda u pregledniku, prikazat će se sljedeće:

Vaše ime: dima
Vaše godine: 27

također postavljamo zahtjev poslužitelju metodom GET.

HTTP je protokol za prijenos hiperteksta, jedan od protokola TCP/IP stoga. U početku je protokol stvoren za prijenos i primanje HTML stranica, ali sada se savršeno koristi za distribuirane informacijske sustave. To je jedan od najčešće korištenih protokola na svjetskoj mreži.

Slika 1

Na temelju sheme zahtjeva/odgovora. Kada klijent pošalje zahtjev poslužitelju, to može učiniti pomoću 3 vrste zahtjeva: GET, PUT i POST.

GET zahtjev za HTTP protokol

DOBITI Je li zahtjev klijenta za informacijama. Klijentov web preglednik šalje poruku GET za preuzimanje stranica s njega. Zahtjev ima dva dijela:

  • string upita
  • naslovi

GET zahtjev nema tijelo podataka, ali to ne znači da ne može prenijeti podatke na poslužitelj. Koristeći posebne parametre u URL nizu, možete proslijediti podatke poslužitelju. Znak ? nakon domene u URL-u znači da će se parametri proslijediti dalje. Slika 2 pokazuje kakve informacije preglednik šalje poslužitelju.

Crtež - 2

POST i PUT zahtjev za HTTP protokolom

Ove dvije metode implementiraju se za slanje informacija na web poslužitelj. Primjerice, nakon što ih ispunimo pomoću posebnih web obrazaca, šaljemo ih na poslužitelj POST metodom. PUT, s druge strane, prenosi resurse ili podatke na web poslužitelj (slika, video).

HTTP nije siguran protokol i POST poruke se mogu presresti i pročitati jer nisu šifrirane. Za sigurnost prijenosa podataka metodom POST koristi se HTTPS protokol. On šifrira podatke i može se autentifikovati. Također implementira dodatne zahtjeve za prijenos informacija između transportnog i aplikacijskog sloja.

Glavne razlike između POST i GET metoda prikazane su u tablici 1.

Slika 3 prikazuje osnovna pravila kojih se treba pridržavati pri odabiru metode GET ili POST za obavljanje poslova na vašem poslužitelju.

Vrhunski povezani članci