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
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:
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
Uzmite u obzir ovaj HTML kod:
![](https://i1.wp.com/steptosleep.ru/wp-content/uploads/2018/06/92221.png)
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
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.