Moderni web resursi ne samo da pružaju informacije posjetitelju, već i komuniciraju s njim. Za interakciju s korisnikom morate od njega primiti neke informacije. Postoji nekoliko metoda za dobivanje podataka, vrlo uobičajene metode su DOBITI I POST. I sukladno tome u PHP postoji podrška za ove metode prijenosa podataka DOBITI I POST. Pogledajmo kako ove metode funkcioniraju.
GET metoda Podaci GET metoda prosljeđuju se njihovim dodavanjem URL-u skripte koja se poziva za obradu primljenih informacija. Da biste objasnili ovu metodu, upišite URL resursa u adresnu traku preglednika i prvo dodajte upitnik (?), a zatim redak num=10. Na primjer
http://domain.ru/script.php?num=10
Ako imate lokalni poslužitelj, obično će domena biti localhost, a prethodni bi unos izgledao ovako
http://localhost/script.php?num=10
U ovom slučaju, prosljeđujemo parametar num jednak 10. Za dodavanje sljedećih parametara, skripta mora koristiti znak za odvajanje (&), na primjer
http://domain.ru/script.php?num=10&type=new&v=text
U ovom smo slučaju skripti proslijedili tri parametra: num s vrijednošću 10, type s vrijednošću "new" i v s vrijednošću "text".
Da biste dobili ove parametre u skripti, trebate koristiti ugrađeni niz $_GET $_GET["num"], $_GET["type"],$_GET["v"]. Ovi elementi niza će sadržavati vrijednosti proslijeđenih parametara. Da biste demonstrirali ovaj primjer, kreirajte datoteku script.php sa sljedećim sadržajem
echo ($_GET["broj"]."
");
echo ($_GET["vrsta"]."
");
echo ($_GET["v"]);
?>
A sada pozovite ovu datoteku u pregledniku
http://path/script.php?num=10&type=new&v=text
i vidjet ćete proslijeđene parametre u prozoru preglednika. Ali ako pozovete ovu datoteku bez dodatnih parametara http://path/script.php, vidjet ćete pogreške koje će tumač proizvesti PHP, da ne postoje takvi elementi niza $_GET. Provjeri podataka dobivenih od korisnika moglo bi se posvetiti više od jednog članka, pa se u ovom članku neću doticati ove točke.
Kao što vjerojatno razumijete, prisiljavanje korisnika da upisuje podatke u adresnu traku preglednika nije baš dobro i potpuno je nezgodno. Dakle, za primanje podataka od korisnika morate koristiti html obrasce. Napišimo jednostavan html obrazac.
Da malo komentiram kreiranu formu. Obrasci se kreiraju pomoću oznake obrasca. Polja obrasca kreiraju se pomoću oznaka za unos, odabir, tekstualno polje (možete pročitati više). U oznaci obrasca, atribut akcije specificira URL skripte koja će primiti podatke obrasca. U našem slučaju, naveli smo našu postojeću datoteku script.php. Atribut metode specificira metodu za slanje podataka. Naveli smo metodu DOBITI. Sada znamo u koju datoteku će se podaci obrasca prenijeti i na koji način, preostaje samo smisliti gdje ih tražiti?!
Preglednik će ove podatke obrasca proslijediti web resursu dodavanjem URL-u: prvo će biti upitnik (?), a zatim će parametri biti predstavljeni odvojeni znakom & (&). Naziv parametra bit će preuzet iz atributa name koji mora biti naveden za bilo koje polje obrasca. Vrijednost parametra ovisit će o vrsti polja. Ako je polje tekstualno polje, vrijednost će biti tekst koji je unio korisnik. Ako je polje popis, grupa radio gumba ili potvrdnih okvira, tada će vrijednost parametra biti vrijednost atributa vrijednosti odabranog elementa. Dopustite mi da objasnim koristeći naš obrazac kao primjer. Ako korisnik unese broj 10 u polje za unos, tada će naziv parametra biti num (vrijednost atributa name ulazne oznake), a vrijednost će biti 10 (broj koji je unio korisnik). U skladu s tim, preglednik će generirati par "num=10". Ako korisnik odabere opciju "Yes" s popisa, tada će naziv parametra biti type (vrijednost atributa name oznake za odabir), a vrijednost će biti yes (vrijednost atributa value opcije označiti). U skladu s tim, preglednik će generirati par "type=yes".
Sada ćemo postaviti ovaj obrazac na stranicu forma.php.
Unesite bilo koje vrijednosti u polja obrasca i kliknite gumb "Pošalji". Nakon klika na gumb preglednik će otvoriti drugu stranicu (script.php) te će se u prozoru preglednika prikazati podaci koje ste unijeli. Mislim da je jasno zašto: preglednik će proslijediti podatke skripti script.php, au skripti će ti podaci biti obrađeni i prikazani na ekranu.
POST metoda Sada pogledajmo kako metoda funkcionira POST.
Za slanje podataka pomoću POST trebate koristiti HTML obrasce. Kao što se sjećamo, atribut metode oznake obrasca odgovoran je za način slanja podataka obrasca. Stoga trebate navesti vrijednost POST u atributu metode oznake obrasca. Inače, obrazac može biti isti kao i za GET metodu. Promijenimo našu formu, koju smo već koristili za prijenos podataka metodom GET, za prijenos metodom POST.
Kao što vidite, obrazac ostaje isti osim atributa metode i akcije. Podaci će sada biti proslijeđeni skripti script_post.php. Postavimo naš obrazac na stranicu forma_post.php.
Sada moramo napisati skriptu koja će obraditi naše podatke obrasca.
Za primanje podataka u skripti korištenjem proslijeđene metode POST potrebno je koristiti ugrađeni niz $_POST. Ključevi ovog niza bit će imena parametara. U našem slučaju trebamo koristiti $_POST["num"], $_POST["type"],$_POST["v"]. Ovi elementi polja će sadržavati vrijednosti prenesenih podataka. Kao što vidite, razlika u odnosu na korištenje GET metode izražena je samo u korištenju niza $_POST. Stoga nam neće biti teško napisati datoteku script_post.php:
echo ($_POST["num"]."
");
echo ($_POST["vrsta"]."
");
odjek ($_POST["v"]);
?>
Sada otvorite datoteku forma_post.php u svom pregledniku. Unesite neke podatke u polja obrasca i kliknite gumb "Pošalji". Vjerojatno ste primijetili razliku između metode POST i metode GET - podaci obrasca nisu se pojavljivali u adresnoj traci preglednika. Podaci po metodi POST ne može se prenijeti kroz adresnu traku preglednika. Ovo je značajna razlika koju treba zapamtiti.
U PHP Bez obzira na to kako su podaci poslani - metodom POST ili metodom GET - podatke možete primiti pomoću polja $_REQUEST. Usporedba metoda GET i POST Kada koristite metodu GET, podaci se prenose dodavanjem URL-u. Tako će biti vidljivi korisniku, što sa sigurnosnog gledišta nije uvijek dobro. Također, maksimalna količina prenesenih podataka ovisit će o pregledniku – o najvećem dopuštenom broju znakova u adresnoj traci preglednika.
Kada koristite POST metodu, podaci neće biti vidljivi korisniku (neće biti prikazani u adresnoj traci preglednika). Samim time su i sigurniji, a samim time i program koji obrađuje te podatke sigurnosno je zaštićeniji. Također, količina prenesenih podataka je praktički neograničena.
Prilikom odabira načina prijenosa podataka morate uzeti u obzir gore navedene značajke i odabrati najprikladniji način.
Klijenti preglednika mogu slati informacije web poslužitelju.
Prije nego što preglednik pošalje informacije, on ih kodira pomoću sheme koja se zove URL kodiranje. U ovoj shemi, parovi ime/vrijednost spojeni su znakovima jednakosti, a različiti parovi odvojeni su znakom &.
Ime1=vrijednost1&ime2=vrijednost2&ime3=vrijednost3
Razmaci se uklanjaju i zamjenjuju znakom +, a svi drugi znakovi koji nisu alfanumerički zamjenjuju se heksadecimalnim vrijednostima. Nakon što je informacija kodirana, šalje se na poslužitelj.
GET metoda
Metoda GET šalje kodirane korisničke informacije pridodane zahtjevu stranice. Jesu li stranice i kodirane informacije odvojene jedna od druge? upitnik.
http://www.test.com/index.htm?name1=value1&name2=value2
- Metoda GET proizvodi dugačak niz koji se pojavljuje u zapisnicima vašeg poslužitelja u polju "Lokacija" preglednika.
- Metoda GET ograničena je na slanje samo do 1024 znaka.
- Nikada nemojte koristiti metodu GET ako imate lozinku ili druge osjetljive podatke za slanje poslužitelju.
- GET se ne može koristiti za prijenos binarnih podataka, poput slika ili tekstualnih dokumenata, na poslužitelj.
- Podacima poslanim metodom GET može se pristupiti pomoću varijable okruženja QUERY_STRING.
- PHP pruža asocijativni niz $_GET za pristup svim poslanim informacijama koristeći GET metodu.
if($_GET["name"] || $_GET["age"]) ( echo "Dobrodošli ". $_GET["name"]; echo "Vi ste ". $_GET["age"]. " godina "; Izlaz(); )
POST metoda
metoda POST prenosi informacije putem HTTP zaglavlja. Informacije su kodirane kako je opisano u slučaju metode DOBITI, i postavljeno u zaglavlje QUERY_STRING.
- Metoda POST nema ograničenja u veličini podataka koje je potrebno poslati.
- Metoda POST može se koristiti za slanje ASCII kao i binarnih podataka.
- Podaci poslani metodom POST prolaze kroz HTTP zaglavlje, tako da sigurnost ovisi o HTTP protokolu. Korištenjem Secure HTTP-a možete osigurati da su vaši podaci sigurni.
- PHP pruža asocijativni niz $_POST za pristup svim informacijama poslanim metodom POST.
Isprobajte sljedeći primjer postavljanjem izvornog koda u skriptu test.php.
if($_POST["name"] || $_POST["age"]) ( if (preg_match("[^A-Za-z"-]",$_POST["name"])) ( die (" nevažeće ime i ime treba biti alfa"); ) echo "Dobrodošli ". $_POST["ime"]; echo "Imate ". $_POST["age"]. " godina."; exit(); )
$_REQUEST varijabla
PHP varijabla $_REQUEST sadrži sadržaje poput $_GET, $_POST, dakle $_COOKIE. Raspravljat ćemo o varijabli $_COOKIE kada govorimo o kolačićima.
PHP $_REQUEST varijabla može se koristiti za dohvaćanje rezultata iz podataka obrasca dostavljenih pomoću metoda GET i POST.
Metode GET i POST u HTTP-u i HTTPS dvije su najpopularnije metode koje se koriste za prijenos podataka s klijenta na poslužitelj pomoću HTTP-a (HyperText Transfer Protocol). I GET i POST mogu se koristiti za slanje zahtjeva i primanje odgovora, ali postoje značajne razlike između njih.
Razlika između GET i POST zahtjeva u HTTP-u ili HTTPS-u popularno je pitanje na 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 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 svaki zahtjev i koja je razlika između njih. Pogledajmo 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 odnosi se na način na koji se oznake koriste za definiranje izgleda stranice i elemenata na stranici.
Dolje je primjer HTML-a koji se koristi za definiranje osnovne web stranice s naslovom i jednim odlomkom teksta:
<Голова>
<Название>TechTerms.com название>
HEAD>
<Тело>
Ovo je primjer odlomka u HTML-u. p>
Body>
Html>
Prvi redak specificira vrstu sadržaja sadržanog u dokumentu.,
I , koji su svi uključeni u gornji primjer. Naslov stranice, metapodaci i veze na sidrene datoteke smješteni su između stvarnog sadržaja stranice smještenog između oznaka .Web je prošao kroz mnoge promjene u 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, HTML5 stranica će imati manje koda. To je zato što se moderni HTML oslanja na Cascading Style Sheets ili JavaScript za formatiranje gotovo svih elemenata unutar stranice.
Mnoga dinamička web-mjesta 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 kod koji se šalje web pregledniku.
HTTP Hypertext Transfer Protocol dizajniran je za komunikaciju između klijenata i poslužitelja i radi kao protokol 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 podatke 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 su:
GET - traži podatke iz navedenog izvora;
POST - šalje podatke za obradu navedenom resursu.
Prijevod GET i POST doslovno znači primanje i naknadna obrada.
Više o HTTP-u
HTTP je protokol koji se koristi za prijenos podataka putem Interneta. Dio je paketa internetskih protokola i definira naredbe i usluge koje se koriste za prijenos podataka web stranice.
HTTP koristi model poslužitelj-klijent. Klijent može biti kućno računalo, prijenosno računalo ili mobilni uređaj. HTTP poslužitelj obično je web host koji pokreće softver 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 ispravan i veza je odobrena, poslužitelj će poslati web stranicu i pridružene 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 autorizacija);
500 - interna pogreška poslužitelja (često uzrokovana netočnom konfiguracijom poslužitelja).
POST i GET u HTTP-u
HTTP definira naredbe GET i POST koje se koriste za obradu podnošenja obrazaca na web stranicama. Naredba CONNECT koristi se za omogućavanje sigurne veze koja je šifrirana pomoću SSL-a. Šifrirane HTTP veze odvijaju se preko HTTPS-a, proširenja HTTP-a 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 priključak 80. URL-ovi koji počinju s "https://" dostupni su putem sigurne HTTPS veze i često koriste priključak 443.
POST
POST je niz testova sustava koje izvode računala i drugi elektronički uređaji kada su uključeni. Rezultati testa mogu se prikazati na ekranu, prikazati putem treptajućih LED dioda ili jednostavno interno zabilježiti. U računalnim sustavima, POST operacija se izvodi na početku sekvence pokretanja. Ako svi testovi prođu, ostatak procesa pokretanja nastavit će se automatski.
Operativni sustavi Mac i Windows uređaja pokreću POST svaki put kada se računalo podigne ili ponovno pokrene. Skeniranjem se provjerava hardver i osigurava da procesor, RAM i uređaji za pohranu ispravno rade. Ako se tijekom POST-a pojavi pogreška, proces pokretanja se može zaustaviti ili potpuno zaustaviti, a na monitoru se može pojaviti poruka.Na osobnim računalima se POST pogreške često pojavljuju na zaslonu s informacijama o BIOS-u. Mogu se pojaviti kao kriptografski kodovi poput "08" ili kao poruka sustava poput "Pogreška pomaka memorije sustava". Na Macu, pogreške POST-a često su označene jednostavnom grafikom, kao što je ikona pokvarene mape, što označava da uređaj za pokretanje nije pronađen.
Fizičke manifestacije
U nekim se slučajevima zaslon računala možda neće ni uključiti prije POST pogreške. Ako se to dogodi, kodovi grešaka mogu se prikazati treptajućim LED diodama ili zvučnim signalima. 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 osobnih računala također se oglašava zvučnim signalom kada se otkriju pogreške POST-a, iako svaki proizvođač koristi vlastite kodove.
POST je prilično tehnički izraz koji samo računalni tehničari redovito koriste. Međutim, to je dobar akronim jer vam pomaže da bolje razumijete poruke o pogreškama koje se mogu pojaviti na računalima ili drugim elektroničkim uređajima. Ako se vaše računalo ne pokreće zbog POST pogreške, možete upotrijebiti drugi uređaj da pronađete značenje i uzrok pogreške na web stranici proizvođača. Tada možete poduzeti odgovarajuću radnju - ukloniti memorijski modul ili ponovno instalirati video karticu, a zatim ponovno pokrenuti 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 određivanjem method=POST ili method=GET (zadano) na elementu
![](https://i1.wp.com/steptosleep.ru/wp-content/uploads/2018/06/92221.png)
Ako korisnik u tekstualno polje unese tekst i klikne na gumb “Pošalji”, tekstualna varijabla će biti poslana na poslužitelj s vrijednošću sadržaja koji je korisnik unio.
POST i GET zahtjevi jednostavnim riječima
Ova varijabla bit će poslana metodom POST.
Ako ovo napišete u obliku: