Kako podesiti pametne telefone i računare. 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

Upotreba GET i POST metoda u PHP-u teško se može precijeniti, jer se ove metode nalaze na skoro 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 slanje 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 function.php. Nakon upitnika "?" nalazi se nabrajanje prenesenih parametara (parametri su razdvojeni znakom "&") sa vrijednostima: parametar za prijavu je postavljen na Alex, a varijabla e-pošte na dezyakin. Podaci će biti pohranjeni u $_GET superglobalnom nizu. Primjer korištenja GET metode je prikazan u nastavku:

Ulogovati se : Email : Koristeći $_GET superglobalni niz, prikazujemo primljene vrijednosti:*/echo "
login = ". $_GET["login"] ; echo "
email = ". $_GET["email"] ; ?>

Obratite pažnju na to kako čitamo vrijednosti iz superglobalnog $_GET: $_GET["ime_varijable"]. U našem primjeru, imena varijabli su deklarirana u obliku (ime=login i ime=e-mail).

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

provjeri postojanje sa issetom: if isset ($_GET["login"] ) ( izjave za obradu prijave ... } //ili provjerite postojanje sa praznim: ako je prazno ($_GET["email"] ) ( operateri za obradu e-pošte ... } ?>

U obrascu možete odrediti ime datoteke koja će obraditi proslijeđene vrijednosti. Ovo se radi pomoću atributa obrasca akcije, kojem se može dodijeliti adresa ove datoteke. Po defaultu, ova datoteka je dodijeljena trenutnoj datoteci (odnosno, obrađuje se u datoteci u kojoj se nalazi obrazac). Evo primjera u kojem se podaci iz obrasca prenose u datoteku srcipt.php na obradu:

Ulogovati se : Email :

Datoteka script.php mora sadržavati neku vrstu rukovaoca 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 lažirati proslijeđene parametre;
  • Nezgodan prijenos binarnih informacija (morate kodirati u tekstualnom formatu);
  • Količina prenetih podataka je ograničena - 8 KB;

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

POST metoda

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

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

Rezultat izvršavanja gornjeg koda prikazan je na donjoj slici:

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

Bilješka:
1) Količina vrijednosti prenesenih POST metodom je ograničena prema zadanim postavkama i iznosi 8 MB. Da biste povećali ovu vrijednost, trebate promijeniti direktivu post_max_size u php.ini.

2) U ranim verzijama PHP-a, umjesto kratkih imena superglobala $_GET i $_POST, korištena su duža imena: $HTTP_GET_VARS i $HTTP_POST_VARS. One su podrazumevano onemogućene u php 5, ali ih možete omogućiti u konfiguracionoj datoteci php.ini sa parametrom register_long_arrays. U verziji php 6 ova duga imena neće biti dostupna.

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

Metode GET i POST u HTTP i HTTPS su dvije najpopularnije metode koje se koriste za prijenos podataka sa klijenta na server 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 HTML ne zavisi od tehnologije web servera kao što su Java, ASP ili PHP, a HTTP je glavni protokol u Internet prostoru, ne može se jasno zanemariti važnost razumijevanja metoda GET i POST. U ovom članku ćemo pogledati šta je HTTP GET metoda, šta je HTTP POST metoda, kada koristiti jedan ili drugi zahtjev i koja je razlika između njih. Analizirajmo svaki koncept posebno.

Šta je HTML?

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



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

<Тело>

Ovo je primjer pasusa u HTML-u.

Prvi red specificira tip sadržaja sadržanog u dokumentu., i , koji su svi uključeni u gornji primjer. Naslov stranice, metapodaci i veze do datoteka sa sidrima nalaze se između stvarnog sadržaja stranice između oznaka .

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

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

HTTP protokol za prijenos hiperteksta dizajniran je za komunikaciju između klijenata i servera i djeluje kao protokol zahtjev-odgovor.

Web pretraživač može biti klijent, a aplikacija na računaru koji hostuje veb lokaciju može biti server.

Klijent (pretraživač) šalje HTTP zahtjev serveru, server vraća odgovor koji sadrži informacije o stanju 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 servera:

    GET - traži podatke iz navedenog resursa;

    POST - šalje podatke za obradu na navedeni resurs.

Prijevod GET i POST doslovno znači primanje i naknadnu obradu.

Saznajte više o HTTP-u

HTTP je protokol koji se koristi za prijenos podataka preko Interneta. To je dio paketa Internet Protocol i definira komande i usluge koje se koriste za prijenos podataka web stranica.

HTTP koristi model server-klijent. Klijent može biti kućni računar, laptop ili mobilni uređaj. HTTP server je obično web host sa softverom web servera kao što je Apache ili IIS. Kada korisnik pristupi web stranici, pretraživač šalje zahtjev odgovarajućem web serveru i odgovara HTTP statusnim kodom. Ako je URL ispravan i veza je odobrena, server će poslati web stranicu i povezane datoteke u pretraživač.

Uobičajeni HTTP statusni kodovi uključuju:

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

    301 - Trajno se pomiče (često preusmjerava na novi URL)

    401 - neovlašteni zahtjev (potrebno je ovlaštenje);

    500 je interna greška servera (često uzrokovana pogrešnom konfiguracijom servera).

POST i GET u HTTP-u

HTTP definira GET i POST komande koje se koriste za obradu slanja obrazaca na web stranicama. Naredba CONNECT se koristi za olakšavanje sigurne veze koja je šifrirana korištenjem SSL-a. Šifrovane HTTP veze se javljaju preko HTTPS-a, proširenja HTTP-a dizajniranog za siguran prijenos podataka.

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

POŠTA

POST je serija provjera sistema koje obavljaju računari i drugi elektronski uređaji kada su uključeni. Rezultati testa se mogu prikazati na ekranu, emitovati preko treperećih LED dioda ili jednostavno interno snimiti. Na računarskim sistemima, POST operacija se izvodi na početku sekvence pokretanja. Ako svi testovi prođu, ostatak procesa pokretanja će se nastaviti automatski.

Operativni sistemi Mac i Windows uređaja pokreću POST svaki put kada se računar pokrene ili ponovo pokrene. Skeniranjem se provjerava hardver i osigurava da procesor, RAM i uređaji za pohranu ispravno rade. Ako dođe do greške tokom POST-a, proces pokretanja može pauzirati ili potpuno zaustaviti, a na monitoru se može pojaviti poruka. Na računaru, POST greške se često prikazuju na ekranu sa informacijama o BIOS-u. Mogu se ispisati kao šifrovani kodovi kao što je "08" ili kao sistemska poruka kao što je "Greška sistemske memorije u pomaku". Na Macu, POST greške se često označavaju jednostavnom grafikom, kao što je ikona slomljene fascikle, što ukazuje da nije pronađen uređaj za pokretanje.

fizičke manifestacije

U nekim slučajevima, ekran računara se možda neće ni uključiti prije POST grešaka. Ako se to dogodi, kodovi grešaka mogu biti prikazani kroz treperenje LED dioda ili zvučnih signala. Na primjer, Apple iMac će pustiti tri uzastopna tona, pauzirati pet sekundi, a zatim će ponoviti tonove kada se otkrije loša RAM memorija tokom pokretanja. Većina računara takođe pišti kada naiđe na POST greške, iako svaki proizvođač koristi svoje sopstvene kodove.

POST je prilično tehnički izraz koji samo kompjuterski tehničari koriste redovno. Međutim, to je dobar akronim jer pomaže boljem razumijevanju poruka o greškama koje se mogu pojaviti na računarima ili drugim elektroničkim uređajima. Ako se računar ne pokrene zbog POST greške, možete koristiti drugi uređaj da potražite značenje i uzrok greške na web stranici proizvođača. Tada možete poduzeti odgovarajuću radnju, kao što je uklanjanje memorijskog modula ili ponovno instaliranje grafičke kartice, a zatim ponovno pokretanje hardvera.

GET

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 (pretraživača) do servera u tijelu poruke. Nasuprot tome, GET zahtjevi uključuju sve potrebne podatke u URL-u. Obrasci u HTML-u mogu koristiti bilo koju metodu specificiranjem method=POST ili method=GET (podrazumevano) na elementu

. Navedena metoda određuje kako se podaci obrasca šalju serveru. Kada se koristi metoda GET, svi podaci obrasca su URL-kodirani kao parametri niza upita. Sa POST-om, podaci obrasca se pojavljuju u tijelu poruke HTTP zahtjeva.

Razlike u formi prezentacije

Metoda POST zahtjeva traži od web servera da prihvati i pohrani podatke zatvorene u tijelu poruke zahtjeva. Često se koristi prilikom učitavanja datoteke ili slanja popunjenog web obrasca.

Metoda HTTP GET zahtjeva preuzima informacije sa servera. Kao dio GET zahtjeva, neki podaci mogu biti proslijeđeni u URL-ovom nizu upita, navodeći pojmove za pretraživanje, raspon datuma ili druge informacije koje definiraju zahtjev.

Kao dio POST zahtjeva, proizvoljna količina podataka bilo koje vrste može se poslati serveru u tijelu poruke zahtjeva. Polje zaglavlja u POST zahtjevu obično specificira tip internetskog medija tijela poruke.

Glavna razlika između GET i POST zahtjeva je u tome što oni odgovaraju različitim HTTP zahtjevima kako je definirano u HTTP specifikacijama. Proces podnošenja za obje metode počinje na isti način: skup podataka obrasca kreira pretraživač, a zatim se kodira na način određen atributom enctype. Za METHOD="POST atribut enctype može biti multipart/form-data ili application/x-www-form-urlencoded, dok se za METHOD="GET" pokreće samo putem application/x-www-form-urlencoded. Ovaj skup podaci obrasca zatim proslijeđeni serveru.

Za slanje obrasca sa METHOD = "GET", pretraživač konstruiše URL tako što uzima vrijednost atributa akcije i dodaje mu skup podataka obrasca kodiranih korištenjem tipa sadržaja application/x-www-form-urlencoded). Pregledač tada tretira ovaj URL kao da se odnosi na vezu (ili kao da je korisnik ručno unio URL). Pregledač dijeli URL na dijelove i prepoznaje host, a zatim šalje GET zahtjev tom hostu sa ostatkom URL-a kao argumentom. Važno je napomenuti da ovaj proces znači da su podaci obrasca ograničeni na ASCII kodove. Posebnu pažnju treba obratiti na kodiranje i dekodiranje drugih tipova znakova kada ih prosljeđujete na ASCII URL.

Podnošenje obrasca sa METHOD="POST" uzrokuje da se POST zahtjev pošalje koristeći vrijednost atributa akcije i objavu generiranu prema tipu sadržaja specificiranom atributom enctype.

PHP

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

Većina PHP-ove sintakse je posuđena iz drugih jezika kao što su C, Java i Perl. Međutim, PHP ima niz jedinstvenih karakteristika i posebnih karakteristika. Svrha ovog jezika je omogućiti web programerima da brzo i jednostavno pišu dinamički generirane stranice.

Wordpress

WordPress je besplatni sistem za upravljanje sadržajem koji se koristi za kreiranje i održavanje web stranica. Njegova jednostavnost korištenja i jedinstvene značajke bloganja pomogle su mu da postane najpopularniji alat za bloganje na webu.

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

Iako postoje hiljade WordPress šablona i dodataka dostupnih, POST GET sistem u WordPressu i dalje ima svoja ograničenja. Budući da je ovo usluga zasnovana na predlošku, korisnik mora početi s unaprijed napravljenom web-stranicom umjesto da kreira stranice od nule. Takođe, ne postoji način da se ugrade skripte ili održava baza podataka sa istim nivoom kontrole koji nudi prilagođena veb lokacija.

Alat POST_GET_ID() omogućava skriptiranje da manipuliše elementom jer ima jedinstveni ID i kada se pošalje kao obrazac putem ovih metoda padajući meni će biti poslan s jedinstvenim ID-om koji omogućava skripti da primijeti koja se objava pokreće. Alternativno, može se poslati skrivena varijabla, koja će omogućiti skripti da vidi koja objava pripada pogledu.

Da, svako je u nekom trenutku nešto naučio. Jedina stvar koja razlikuje ljude u ovom pogledu je to što se nekima učenja daju lako, dok drugi mjesecima ne mogu razumjeti suštinu problema. Danas ćemo govoriti o POST i GET zahtjevima u HTML\PHP.

Sami POST i GET zahtjevi (u daljem tekstu zahtjevi) odavno su ukorijenjeni u svim Internet resursima. Ako se iznenada jednog dana pojavi alternativa ovim tehnologijama, onda to vjerovatno neće biti uskoro, a vjerovatno i nije potrebno. Zato što naši zahtjevi u potpunosti ispunjavaju zadatak razmjene podataka između internet stranica.

Pogledajmo prvo GET zahtjev. Kreirajmo datoteku index.php sa standardnim html kodom, i postavimo formu na nju, neka to bude formular za narudžbu proizvoda.

Pogledajmo oznaku ovdje. formu. Ima dva parametra akcija i metoda. Prvi je odgovoran za adresu stranice na koji ćemo prenijeti naše podatke, drugi je za način na koji će ti podaci biti prenijeti. Unutar ove oznake opisujemo skup naših podataka koje želimo prenijeti. Imena moraju biti dodijeljena podacima (parametar ime). Takođe je potreban tip unosa submit, što je dugme koje šalje podatke kada se klikne.

Sačuvajmo naš fajl i otvorimo ga u pretraživaču.
Putanja naše stranice u pretraživaču je ".../index.php". Na samoj stranici vidimo dva polja za unos i dugme. Hajde da popunimo nešto u našim poljima i kliknemo na dugme "Naruči". Naša stranica je ažurirana. Pogledajmo njenu adresu: ".../index.php?orderName=Test&count=12". (U prvo polje ukucao sam riječ 'Test' u drugo '12'). Kao što vidimo, adresa stranice je malo promijenjena. Činjenica je da se prijenos GET parametara putem zahtjeva vrši tako što se oni dodijele nizu adrese stranice. Parametri su odvojeni od glavne adrese znakom '?', a različiti parametri znakom '&'. Struktura parametara je sljedeća: ime_parametra=vrijednost. Ime parametra će odgovarati vrijednosti atributa name u polju za unos.
Uredimo malo kod stranice:

> >

Sada ponovo kliknite na dugme "Naruči". Kao što vidimo, stranica je ažurirana, ali su naša polja ostala popunjena. To je zbog činjenice da smo dali zadanu vrijednost za naša polja. Štaviše, ove vrijednosti su primljeni GET parametar. Kao što možemo vidjeti u PHP kodu, GET parametri su niz sa string indeksom jednakim imenu parametra. Ako se sada poigramo sa adresom stranice i promijenimo vrijednosti parametara u njoj i pritisnemo dugme “Enter”, tada ćemo opet primijetiti sliku s ažuriranjem stranice i popunjavanjem našeg obrasca.

Očigledno je da je slanje tajnih ili servisnih podataka u GET zahtjevu pogrešno (i nije sigurno). Bolje ga je koristiti za prijenos npr. ID-a vijesti koji treba preuzeti iz baze podataka ili naziva stranice koja treba biti prikazana.

POST zahtjev je druga stvar. Radi slično, ali ne pohranjuje parametre u adresnu traku. Promijenimo oblik:

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

Međutim, kao što vidite, nije se mnogo promijenilo! Otvorimo našu stranicu, popunimo nešto u poljima i pritisnemo dugme "Naruči". Sve je funkcionisalo na isti način, međutim (međutim), kao što vidimo u stringu 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 uslovljen, jer se ti podaci i dalje 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 se učitala, ali i pored prolaska parametara, polja su se pokazala prazna. Ovo sugerira da se, uprkos velikoj sličnosti, ove vrste zahtjeva ni na koji način ne ukrštaju jedni s drugima, a ako je potrebno, vrijedi napisati rukovatelj za svaku vrstu zahtjeva posebno.

Mislim da je to dovoljno. Mislim da su osnove pitanja opisane glavom.

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

Ovaj post ima za cilj da objasni kako se podaci prenose putem interneta koristeći dvije glavne metode: GET i POST. Napisao sam ga kao dodatak uputstvu za generator smjenskog rada za one koje malo zanimaju detalji ☺.

Idite na sledeću adresu (ovo je za vizuelno objašnjenje): http://calendarin.net/calendar.php?year=2016 Obratite pažnju na adresnu traku pretraživača: calendarin.net/calendar.php ?year=2016 Imenovan je glavni fajl, a zatim znak pitanja (?) i parametar "godina" sa vrijednošću "2016". Dakle, sve što slijedi nakon znaka pitanja je GET zahtjev. Sve je jednostavno. Da biste proslijedili više od jednog parametra, oni moraju biti odvojeni znakom &. Primjer: calendarin.net/calendar.php ?year=2016&display=work-days-and-days-day

Glavna datoteka je i dalje imenovana, nakon čega slijedi znak pitanja (?), zatim parametar "year" sa vrijednošću "2016", zatim ampersand (&), zatim parametar "display" sa vrijednošću "work- slobodnih dana i dana".

GET parametri se mogu mijenjati direktno u adresnoj traci pretraživača. Na primjer, promjenom vrijednosti "2016" u "2017" i pritiskom na tipku odvest ćete se u kalendar za 2017. godinu.

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

Ukoliko imate bilo kakvih pitanja, komentara i moj e-mail stoji Vam na usluzi.

Pored GET metode, o kojoj smo govorili u prethodnoj napomeni, 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 serveru metodom GET bilo dovoljno da upišemo zahtjev u URL, onda u POST metodi sve radi po drugom principu.

Da bismo izvršili ovakvu vrstu zahtjeva, potrebno je kliknuti na dugme sa atributom type="submit" koje se nalazi na web stranici. Imajte na umu da se ovo dugme nalazi u elementu

, koji ima atribut metode postavljen na post.

Uzmite u obzir ovaj HTML kod:

Unesite tekst:


Ako korisnik unese neki tekst u tekstualno polje i klikne na dugme "Pošalji", tada će tekstualna varijabla biti poslata serveru sa vrijednošću sadržaja koji je korisnik unio.

POST i GET zahtjeve jednostavnim riječima

Ova varijabla će biti poslana POST metodom.

Ako pišete u formi ovako:

Podaci će biti poslani metodom GET.

Ako je, u slučaju GET zahtjeva, količina podataka koju smo mogli prenijeti bila ograničena dužinom adresne trake pretraživača, tada u slučaju POST zahtjeva nema tog ograničenja i možemo prenijeti značajne količine informacija.

Druga razlika između POST metode i GET metode je u tome što POST metoda skriva sve varijable i njihove vrijednosti koje im se prosljeđuju u svom tijelu (Entity-Body). U slučaju GET metode, oni su pohranjeni u stringu zahtjeva (Request-URI).

Evo primjera zahtjeva napravljenog korištenjem POST metode:

POST / HTTP/1.0\r\n
Host: www.site.ru\r\n
Referent: http://www.site.ru/index.html\r\n
Kolačić: prihod=1\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Dužina sadržaja: 35\r\n
\r\n
login=Dima&password=12345

Dakle, prilikom prenosa podataka metodom POST, napadaču će biti mnogo teže da ih presretne, jer oni su skriveni od direktnog pogleda, tako da se POST metoda prijenosa podataka smatra sigurnijom metodom.

Osim toga, koristeći POST metodu, možete prenijeti ne samo tekst, već i multimedijalne podatke (slike, audio, video). Postoji poseban parametar Content-Type koji specificira vrstu informacija koje se šalju.

I na kraju, da bi se podaci koji su ovom metodom prenijeli na server, koristi se POST varijabla.

Evo primjera obrade u PHP-u:

echo $_POST['tekst'];
?>

U posljednjoj napomeni odlučili smo da pretraživač (klijent) šalje HTTP zahtjeve serveru, a server klijentu šalje HTTP odgovore. Ovi zahtjevi i odgovori se daju prema određenim pravilima. Postoji nešto poput sintakse, kako i kojim redosledom treba pisati. Mora postojati striktno definisana struktura.

Pogledajmo pobliže ovu strukturu koja gradi zahtjeve i odgovore u HTTP protokolu.

HTTP zahtjev se sastoji od tri glavna dijela, koji se pojavljuju dolje navedenim redoslijedom. Između zaglavlja i tijela poruke nalazi se prazan red (kao separator), koji predstavlja znak novog reda.

Prazan niz (separator)

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

tijelo poruke (Tijelo entiteta) – opcioni parametar

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

Naslovi– opisati tijelo poruke, proslijediti različite parametre i druge informacije i informacije.

tijelo poruke- to su sami podaci koji se prenose u zahtjevu. Tijelo poruke je opciono i može se izostaviti.

Kada primimo zahtjev za odgovor od servera, tijelo poruke najčešće je sadržaj web stranice. Ali, prilikom upućivanja zahtjeva serveru, to ponekad može biti i prisutno, na primjer, kada podatke koje smo popunili u obrascu za povratne informacije prenesemo na server.

Detaljnije, svaki element zahtjeva ćemo razmotriti u sljedećim napomenama.

Uzmimo, na primjer, jedan pravi zahtjev prema serveru. Svaki dio zahtjeva sam označio drugom bojom: niz upita je zelen, zaglavlja su narandžasta, a tijelo poruke plavo.

Zahtjev za pretraživač:

Domaćin: webgyry.info

Kolačić: wp-settings

Veza: održavaj-živ

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

Odgovor servera:

Content-Type: text/html; charset=UTF-8

Transfer-Encoding: chunked

Veza: održavaj-živ

Keep Alive: timeout=5

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

Dokument bez naslova

To su poruke koje se razmjenjuju između klijenta i servera putem HTTP protokola.

Usput, želite li znati ima li smisla u nekom elementu na vašem sajtu koristeći "ciljeve" Yandex Metrica i Google Analytics?

Uklonite ono što ne radi, dodajte ono što radi i udvostručite svoj prihod.

Kurs postavljanja ciljeva Yandex Metrics.

Kurs za postavljanje ciljeva Google Analytics.

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

  • Niz upita (obavezni element)
  • Naslov (opcijski element)
  • Prazan niz (obavezni element)
  • Tijelo poruke (opcijski element)

Razmotrimo svaki od ovih elemenata zasebno.

string upita

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

Pogledajmo ovaj element detaljnije.

Metoda zahtjeva

Ovaj element specificira metodu koja se poziva na strani servera na navedenom URI-ju.

Postoji osam metoda u HTTP-u:

  • HEAD
    Koristi se za dobijanje statusnog niza i naslova sa servera putem URI-ja. Ne mijenja podatke.
  • GET
    Koristi se za primanje podataka sa servera na navedeni URI. Ne mijenja podatke.
  • POŠTA
    Koristi se za slanje podataka na server (kao što su informacije o programeru, itd.) pomoću HTML obrazaca.
  • STAVITI
    Zamjenjuje sve prethodne podatke na resursu s novoučitanim podacima.
  • IZBRIŠI
    Uklanja sve trenutne podatke na resursu koji je specificirao URI.
  • CONNECT
    Uspostavlja tunelsku vezu sa serverom na navedenom URI-ju.
  • OPCIJE
    Opisuje svojstva veze za navedeni resurs.
  • TRACE
    Pruža poruku koja sadrži povratno praćenje lokacije resursa navedenog u URI-ju.

Zahtjev za URI

URI (Uniform Resource Identifier) ​​je identifikator resursa na koji se šalje zahtjev. Sljedeći je najčešći URI format:

‘*’ koristi se kada HTTP zahtjev nije za određeni resurs, već za server. Koristi se samo kada se metoda ne mora primijeniti na resurs. Na primjer,

apsolutniURI koristi se kada se HTTP zahtjev šalje proxyju. Od proxyja se traži da proslijedi zahtjev iz dostupne keš memorije i vraća odgovor. Na primjer:

apsolutni_put | izvor najčešće korišteni.

Učenje rada sa GET i POST zahtjevima

Zahtijeva se određeni resurs određenog servera. Na primjer, klijent želi dobiti resurs sa servera na portu 80. Adresa izvora je “www.proselyte.net” i šalje sljedeći zahtjev:

Polja zaglavlja zahtjeva

Polja zaglavlja omogućavaju klijentu da serveru prosledi dodatne informacije o zahtevu i o sebi. Ova polja djeluju kao modifikatori upita.

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

  • Prihvati Charset
  • Prihvatite kodiranje
  • Accept-Language
  • Autorizacija
  • Očekujte
  • If Match
  • Ako-Modificirano-Od
  • Ako-Nema-Match
  • Ako Range
  • Ako-Neizmijenjeno-Od
  • Domet
  • Referer
  • Korisnički agent

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

Primjer HTTP zahtjeva

Ovo završava naše istraživanje HTTP zahtjeva.
U sljedećem članku ćemo pogledati HTTP odgovore.

Jedan od načina slanja HTTP zahtjeva serveru je korištenje metode GET. Ova metoda je najčešća i zahtjevi prema serveru se najčešće javljaju pomoću nje.

Najlakši način da kreirate GET zahtjev je da unesete URL u adresnu traku pretraživača.

Pretraživač će poslati sljedeće informacije serveru:

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: text/html,application/xhtml+xml,application/xml;q=0,9,*/*;q=0,8
Prihvati-jezik: ru-RU,ru;q=0,8,en-US;q=0,5,en;q=0,3
Accept-Encoding: gzip, deflate
Kolačić: wp-settings
Veza: održavaj-živ

Zahtjev ima dva dijela:

1. Request Line

2. Zaglavlja (Zaglavlja poruka)

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

Razlika između GET i POST metoda

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

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

parameter_name1=parameter_value1& parameter_name2=parameter_value2&…

Razdjelnik između parametara je znak "&".

Na primjer, ako želimo da pošaljemo dvije vrijednosti na server, korisničko ime i starost, onda se to može učiniti pomoću sljedeće linije:

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 dobiti na serveru koristeći web programski jezik na strani servera.

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

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

$_GET["parameter_name"] konstrukcija vam omogućava da prikažete vrijednost proslijeđenog parametra.

Kao rezultat izvršavanja ovog koda u pretraživaču, vidjet ćete:

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

takođe šaljemo zahtev serveru koristeći GET metod.

HTTP je Hypertext Transport Protocol, jedan od protokola TCP/IP steka. Protokol je prvobitno kreiran za slanje i primanje HTML stranica, ali se sada dobro koristi za distribuirane informacione sisteme. To je jedan od najčešće korištenih protokola na World Wide Webu.

Slika 1

Na osnovu šeme zahtjeva/odgovora. Kada klijent pošalje zahtjev serveru, to može učiniti sa 3 vrste zahtjeva: GET, PUT i POST.

GET HTTP zahtjev

GET je zahtjev klijenta za informacijama. Web pretraživač klijenta šalje GET poruku da preuzme stranice iz njega. Zahtjev ima dva dijela:

  • string upita
  • naslovi

GET zahtjev nema tijelo podataka, ali to ne znači da ne može poslati nikakve podatke na server. Koristeći posebne parametre u URL stringu, možete slati podatke na server. Potpiši ? nakon domene u URL-u znači da će parametri biti proslijeđeni dalje. Slika 2 prikazuje tačno koje informacije pretraživač šalje serveru.

Crtež - 2

POST i PUT HTTP zahtjev

Ove dvije metode se implementiraju u svrhu slanja informacija na web server. Na primjer, koristeći posebne web forme, ispunjavajući ih, šaljemo ih na server POST metodom. PUT, s druge strane, prenosi resurse ili podatke na web server (sliku, 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 izvršiti autentifikaciju. Takođe implementira dodatne zahtjeve za prijenos informacija između transportnog i aplikacijskog sloja.

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

Slika 3 prikazuje osnovna pravila koja treba slijediti pri odabiru GET ili POST metode za implementaciju rada na vašem serveru.

Top Related Articles