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