Obrađujemo POST zahtjeve u PHP-u. Čvor JS. Kako obraditi POST zahtjeve Obrada http zahtjeva php

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(); )

Ime: Dob:

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 zaštićeni.
  • 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(); )

Ime: Dob:

$_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.

Prva metoda za izvođenje PHP POST zahtjeva je korištenje file_get_contents. Druga metoda će koristiti fread u kombinaciji s nekoliko drugih funkcija. Obje opcije koriste funkciju stream_context_create za ispunjavanje potrebnih polja zaglavlja zahtjeva.

Objašnjenje koda

Varijabla $sPD sadrži podatke za prijenos. Mora biti u formatu niza HTTP zahtjeva, tako da neki posebni znakovi moraju biti kodirani.

I u funkciji file_get_contents i u funkciji fread imamo dva nova parametra. Prvi je use_include_path. Budući da postavljamo HTTP zahtjev, on će biti false u oba primjera. Kada je postavljena na true za čitanje lokalnog izvora, funkcija će tražiti datoteku na include_path.

Drugi parametar je kontekst, koji se popunjava povratnom vrijednošću stream_context_create, koja uzima vrijednost niza $aHTTP.

Korištenje file_get_contents za izradu POST zahtjeva

Da biste poslali POST zahtjev koristeći file_get_contents u PHP-u, morate koristiti stream_context_create da ručno ispunite polja zaglavlja i odredite koji "omot" koristiti - u ovom slučaju HTTP:

$sURL = "http://brugbart.com/Primjeri/http-post.php"; // URL OBJAVE $sPD = "name=Jacob&bench=150"; // POST podaci $aHTTP = array("http" => // Wrapper koji će se koristiti array("method" => "POST", // Metoda zahtjeva // Zaglavlja zahtjeva postavljena su ispod "header" => "Content" - tip: application/x-www-form-urlencoded", "content" => $sPD)); $kontekst = stream_context_create($aHTTP); $sadržaj = file_get_contents($sURL, false, $context); echo $sadržaj;

Korištenje freada za izvođenje POST zahtjeva

Možete koristiti fread funkciju za postavljanje POST zahtjeva. Sljedeći primjer koristi stream_context_create za sastavljanje potrebnih zaglavlja HTTP zahtjeva:

$sURL = "http://brugbart.com/Primjeri/http-post.php"; // URL OBJAVE $sPD = "name=Jacob&bench=150"; // POST podaci $aHTTP = array("http" => // Wrapper koji će se koristiti array("method" => "POST", // Metoda zahtjeva // Zaglavlja zahtjeva postavljena su ispod "header" => "Content" - tip: application/x-www-form-urlencoded", "content" => $sPD)); $kontekst = stream_context_create($aHTTP); $handle = fopen($sURL, "r", false, $context); $sadržaj = ""; while (!feof($handle)) ( $contents .= fread($handle, 8192); ) fclose($handle); echo $sadržaj;

Izrada GET zahtjeva s PHP-om

Sada ćemo se usredotočiti na korištenje freada i file_get_contents za preuzimanje sadržaja s interneta putem HTTP-a i HTTPS-a. Da biste koristili metode opisane u ovom članku, morate omogućiti opciju fopen wrappers. Da biste to učinili, trebate postaviti parametar allow_url_fopen na On u datoteci php.ini.

Izvođenje POST i GET zahtjeva u PHP-u koristi se za prijavu na web stranice, dohvaćanje sadržaja web stranice ili provjeru novih verzija aplikacija. Pokrit ćemo kako napraviti jednostavne HTTP zahtjeve.

Korištenje freada za preuzimanje ili primanje datoteka putem Interneta

Zapamtite da je čitanje web stranice ograničeno na dostupni dio paketa. Dakle, trebate koristiti funkciju stream_get_contents ( slično file_get_contents) ili while petlja za čitanje sadržaja u manjim dijelovima dok se ne dosegne kraj datoteke:

U ovom slučaju obrade PHP POST zahtjeva, posljednji argument fread funkcije jednak je veličini fragmenta. Općenito ne bi trebao biti veći od 8192 ( 8*1024 ).

Imajte na umu da može biti veći ili manji, a također može biti ograničen postavkama sustava na kojem se izvodi PHP.

Korištenje file_get_contents za dobivanje URL-a stranice

Još je lakše koristiti ovu metodu kada čitate datoteku preko HTTP-a, budući da ne morate brinuti o čitanju u komadima - sve se obrađuje u PHP-u.

Ova publikacija je prijevod članka "Izrada POST zahtjeva pomoću PHP-a", koji je pripremio prijateljski projektni tim

PHP je trenutno jedan od najpopularnijih jezika za implementaciju web aplikacija. Ovaj tečaj je posvećen proučavanju njegovih osnova. Naglasak je na praktičnoj primjeni stečenih vještina.

Jezik PHP stvoren je za rješavanje specifičnog praktičnog problema na Internetu (koji se može saznati čitanjem prvog predavanja kolegija). Također, nastojat ćemo ne biti previše ometeni teoretskim razmišljanjima, te ćemo nastojati riješiti konkretan problem na svakom od predavanja. Većina primjera preuzeta je iz stvarnog sustava: virtualnog muzeja povijesti računalne znanosti. Prvi dio kolegija posvećen je proučavanju osnova sintakse i kontrolnih struktura. Nakon toga, tehnologija klijent-poslužitelj smatra se glavnim područjem primjene PHP jezika. Zatim prelazimo na proučavanje najkorisnijih ugrađenih funkcija po našem mišljenju i rješavanje praktičnih problema uz njihovu pomoć. Iako objektni model u jeziku PHP nije najbogatiji, njegova fundamentalna prisutnost omogućuje vam prirodno opisivanje modela podataka o objektima. Kao osnovni model razmatrat će se model dokumenta virtualnog muzeja informatike. Nakon toga će se razmotriti niz primijenjenih aspekata: rad sa datotečnim sustavom, s bazom podataka, nizovi, sesije, DOM XML - sve će nam to omogućiti da razmotrimo ključne zadatke praktične upotrebe jezika.

Kao što se može vidjeti iz gornje tablice, Apache poslužitelj zauzima vodeću poziciju. Sve što ćemo ikada reći o web poslužiteljima usmjereno je na Apache osim ako nije drugačije navedeno. Već smo na prvom predavanju govorili o tome kako ga instalirati na svoje računalo. A sada, kao što smo obećali, okrenimo se HTTP protokolu.

HTTP protokol i metode prijenosa podataka na poslužitelj

Internet je izgrađen na višeslojnom principu, od fizičkog sloja, koji se bavi fizičkim aspektima prijenosa binarnih informacija, do aplikacijskog sloja, koji pruža sučelje između korisnika i mreže.

HTTP (HyperText Transfer Protocol) je protokol aplikacijskog sloja dizajniran za razmjenu hipertekstualnih informacija na Internetu.

HTTP pruža skup metoda za određivanje svrhe zahtjeva poslanog poslužitelju. Ove se metode temelje na referentnoj disciplini, gdje se univerzalni identifikator resursa, bilo kao univerzalni lokator izvora (URL) ili univerzalni naziv izvora, koristi za označavanje izvora na koji se metoda treba primijeniti. ,URN).

Poruke putem mreže kada se koristi HTTP protokol prenose se u formatu sličnom formatu poruka internetske pošte (RFC-822) ili formatu poruka MIME (višenamjenska razmjena internetske pošte).

HTTP se koristi za komunikaciju između različitih korisničkih programa i programa pristupnika koji omogućuju pristup postojećim internetskim protokolima kao što su SMTP (Email Protocol), NNTP (News Transfer Protocol), FTP (File Transfer Protocol), Gopher i WAIS. HTTP je dizajniran da omogući takvim pristupnicima prijenos podataka kroz proxy poslužitelje bez gubitaka.

Protokol implementira princip zahtjev/odgovor. Program koji šalje zahtjev - klijent započinje interakciju s programom koji odgovara - poslužiteljem i šalje zahtjev koji sadrži:

Način pristupa;

URI adresa;

Verzija protokola;

Poruka (po obliku slična MIME-u) koja sadrži informacije o vrsti podataka koji se prenose, informacije o klijentu koji podnosi zahtjev i eventualno sadržaj (tijelo) poruke.

Odgovor poslužitelja sadrži:

Redak statusa koji uključuje verziju protokola i povratni kod (uspjeh ili pogreška);

Poruka (u obliku sličnom MIME-u) koja uključuje informacije o poslužitelju, meta informacije (to jest, informacije o sadržaju poruke) i tijelo poruke.

Protokol ne navodi tko bi trebao otvarati i zatvarati vezu između klijenta i poslužitelja. U praksi vezu najčešće otvara klijent, a poslužitelj nakon slanja odgovora inicira njezino prekidanje.

Pogledajmo pobliže oblik u kojem se zahtjevi šalju poslužitelju.

Obrazac zahtjeva kupca

Klijent šalje zahtjev poslužitelju u jednom od dva oblika: punom ili skraćenom. Zahtjev u prvom obliku naziva se punim zahtjevom, a u drugom obliku jednostavnim zahtjevom.

Jednostavan zahtjev sadrži metodu pristupa i adresu resursa. Formalno, ovo se može napisati ovako:

<Простой-Запрос> := <Метод> <символ пробел>
<Запрашиваемый-URI> <символ новой строки>

Metoda može biti GET, POST, HEAD, PUT, DELETE i druge. O najčešćim od njih ćemo govoriti malo kasnije. Traženi URI najčešće je URL resursa.

Primjer jednostavnog zahtjeva:

PREUZMI http://phpbook.info/

Ovdje je GET metoda pristupa, tj. metoda koju treba primijeniti na traženi izvor, a http://phpbook.info/ je URL traženog izvora.

Potpuni zahtjev sadrži redak statusa, nekoliko zaglavlja (zaglavlje zahtjeva, opće zaglavlje ili zaglavlje sadržaja) i eventualno tijelo zahtjeva. Formalno, opći oblik potpunog zahtjeva može se napisati na sljedeći način:

<Полный запрос> := <Строка Состояния>
(<Общий заголовок>|<Заголовок запроса>|
<Заголовок содержания>)
<символ новой строки>
[<содержание запроса>]

Uglate zagrade ovdje označavaju neobavezne elemente zaglavlja, a alternativne opcije navedene su kroz okomitu traku. Element<Строка состояния>sadrži metodu zahtjeva i URI resursa (baš kao jednostavan zahtjev) i, dodatno, verziju korištenog HTTP protokola. Na primjer, za pozivanje vanjskog programa možete koristiti sljedeću statusnu liniju:

OBJAVI http://phpbook.info/cgi-bin/test HTTP/1.0

U ovom slučaju koristi se POST metoda i HTTP verzija 1.0.

U oba oblika zahtjeva, URI traženog izvora igra važnu ulogu. Najčešći URI koristi se u obliku URL-a izvora. Prilikom pristupa poslužitelju možete koristiti i puni oblik URL-a i pojednostavljeni.

Puni obrazac sadrži vrstu pristupnog protokola, adresu poslužitelja resursa i adresu resursa na poslužitelju (Slika 4.2).

U skraćenom obliku, protokol i adresa poslužitelja su izostavljeni, označavajući samo lokaciju resursa iz korijena poslužitelja. Puni obrazac koristi se ako je moguće zahtjev proslijediti drugom poslužitelju. Ako se rad odvija samo s jednim poslužiteljem, često se koristi skraćeni oblik.


Riža. 4.2. Puni URL obrazac

Metode

Kao što je već spomenuto, svaki zahtjev klijenta prema poslužitelju mora započeti specifikacijom metode. Metoda komunicira svrhu klijentovog zahtjeva. HTTP protokol podržava dosta metoda, ali samo se tri zapravo koriste: POST, GET i HEAD. Metoda GET omogućuje vam da dohvatite sve podatke identificirane pomoću URI-ja u zahtjevu za resurs. Ako URI ukazuje na program, tada se vraća rezultat operacije programa, a ne njegov tekst (osim, naravno, ako je tekst rezultat njegove operacije). Dodatne informacije potrebne za obradu zahtjeva ugrađene su u sam zahtjev (u statusnoj liniji). Kada koristite metodu GET, stvarni traženi podaci (tekst HTML dokumenta, na primjer) vraćaju se u polje tijela izvora.

Postoji varijacija GET metode - uvjetni GET. Ova metoda govori poslužitelju da se na zahtjev treba odgovoriti samo ako je uvjet sadržan u polju if-Modified-Since u zaglavlju zahtjeva istinit. Točnije, tijelo resursa se prosljeđuje kao odgovor na zahtjev ako je resurs izmijenjen od datuma navedenog u if-Modified-Since.

Metoda HEAD slična je metodi GET, ali ne vraća tijelo resursa i nema uvjetni pandan. Metoda HEAD koristi se za dobivanje informacija o resursu. To može biti korisno, primjerice, pri rješavanju problema testiranja hipertekstualnih veza.

Metoda POST dizajnirana je za prijenos informacija na poslužitelj kao što su bilješke o resursima, vijesti i poruke pošte, podaci koji se dodaju u bazu podataka, tj. za prijenos velike količine i vrlo važnih informacija. Za razliku od metoda GET i HEAD, POST prenosi tijelo resursa, što su informacije primljene iz polja obrasca ili drugih izvora unosa.

Do sada smo samo teoretizirali i upoznavali se s osnovnim pojmovima. Sada je vrijeme da naučite kako sve to koristiti u praksi. Kasnije u predavanju ćemo pogledati kako poslati zahtjeve poslužitelju i kako obraditi njegove odgovore.

Korištenje HTML obrazaca za slanje podataka na poslužitelj

Kako prenijeti podatke na poslužitelj? U tu svrhu HTML jezik ima posebnu konstrukciju – forme. Obrasci su dizajnirani za primanje informacija od korisnika. Na primjer, morate znati korisničku prijavu i lozinku kako biste odredili kojim stranicama web stranice može pristupiti. Ili su vam potrebni osobni podaci korisnika kako biste ga mogli kontaktirati. Obrasci se upravo koriste za unos takvih podataka. U njih možete unijeti tekst ili odabrati odgovarajuće opcije s popisa. Podaci upisani u obrascu šalju se na obradu posebnom programu (npr. PHP skripta) na poslužitelju. Ovisno o podacima koje korisnik unese, ovaj program može generirati različite web stranice, slati upite bazi podataka, pokretati razne aplikacije itd.

Hajdemo razumjeti sintaksu HTML obrazaca. Mnogima je to možda poznato, ali ipak ćemo ponoviti glavne točke jer je važno.

Dakle, za izradu obrasca u HTML-u koristi se oznaka FORM. Unutar njega nalazi se jedna ili više naredbi INPUT. Koristeći atribute akcije i metode oznake FORM, specificirate naziv programa koji će obraditi podatke obrasca odnosno metodu zahtjeva. Naredba INPUT specificira vrstu i različite karakteristike traženih informacija. Podaci obrasca šalju se nakon pritiska na tipku za unos vrste slanja. Kreirajmo obrazac za prijavu polaznika u dopisnu školu programiranja.

Nakon što je preglednik obradi, ova će datoteka izgledati otprilike ovako:


Riža. 4.3. Primjer html obrasca

Ovako nastaju i izgledaju HTML obrasci. Pretpostavit ćemo da smo naučili ili zapamtili kako ih stvoriti. Kao što vidimo, u obrascu možete odrediti način prijenosa podataka. Pogledajmo što se događa ako navedete metodu GET ili POST i koja će biti razlika.

Za metodu GET

Prilikom podnošenja podataka obrasca metodom GET, sadržaj obrasca dodaje se URL-u nakon upitnika kao parovi ime=vrijednost spojeni znakom &:

akcija?name1=vrijednost1&name2=vrijednost2&name3=vrijednost3

Ovdje je radnja URL programa koji bi trebao obraditi obrazac (bilo program naveden u atributu radnje oznake obrasca ili sam trenutni program ako je taj atribut izostavljen). Nazivi name1, name2, name3 odgovaraju nazivima elemenata obrasca, a value1, value2, value3 odgovaraju vrijednostima ovih elemenata. Svi posebni znakovi, uključujući = i &, bit će izostavljeni iz ovih naziva ili vrijednosti parametara. Stoga ne biste trebali koristiti ove simbole i ćirilične znakove u identifikatorima u nazivima ili vrijednostima elemenata obrasca.

Ako unesete neki servisni znak u polje za unos, on će biti poslan u svom heksadecimalnom kodu, na primjer, simbol $ će biti zamijenjen sa %24. Na isti se način prenose i ruska slova.

Za polja za unos teksta i zaporke (to su elementi za unos s atributom type=text i type=password), vrijednost će biti onakva koju korisnik unese. Ako korisnik ne unese ništa u takvo polje, tada će element name= biti prisutan u nizu upita, gdje ime odgovara nazivu ovog elementa obrasca.

Za gumbe potvrdnog okvira i radio gumba vrijednost je određena atributom VALUE kada je gumb označen. Neoznačeni gumbi u potpunosti se zanemaruju prilikom sastavljanja niza upita. Višestruki gumbi potvrdnih okvira mogu imati isti atribut NAME (i različite VRIJEDNOSTI) ako je potrebno. Gumbi tipa radio button namijenjeni su jednoj od svih ponuđenih opcija te stoga moraju imati isti atribut NAME i različite atribute VALUE.

U načelu, nije potrebno izraditi HTML obrazac za prijenos podataka metodom GET. Možete jednostavno dodati željene varijable i njihove vrijednosti u URL niz.

http://phpbook.info/test.php?id=10&user=pit

S tim u vezi, prijenos podataka metodom GET ima jedan značajan nedostatak - svatko može krivotvoriti vrijednosti parametara. Stoga ne preporučamo korištenje ove metode za pristup stranicama zaštićenim lozinkom ili za prijenos informacija koje utječu na sigurnost programa ili poslužitelja. Osim toga, ne biste trebali koristiti metodu GET za prijenos informacija koje korisnik ne smije mijenjati.

Unatoč svim ovim nedostacima, korištenje GET metode prilično je zgodno za otklanjanje pogrešaka u skriptama (tada možete vidjeti vrijednosti i nazive varijabli koje se prosljeđuju) i za prosljeđivanje parametara koji ne utječu na sigurnost.

Za POST metodu

Sadržaj obrasca je kodiran na potpuno isti način kao i za GET metodu (vidi gore), ali umjesto dodavanja niza u URL, sadržaj zahtjeva se šalje kao blok podataka kao dio POST operacije. Ako je prisutan atribut ACTION, vrijednost URL-a koja se tamo nalazi određuje kamo poslati ovaj blok podataka. Ova metoda, kao što je već navedeno, preporučuje se za prijenos velikih blokova podataka.

Informacije koje je korisnik unio i poslane poslužitelju koristeći POST metodu poslužuju se na standardnom ulazu u program određen atributom akcije ili u trenutnu skriptu ako je ovaj atribut izostavljen. Duljina poslane datoteke prosljeđuje se u varijabli okruženja CONTENT_LENGTH, a tip podataka se prosljeđuje u varijabli CONTENT_TYPE.

Podatke možete poslati samo POST metodom pomoću HTML obrasca, jer se podaci šalju u tijelu zahtjeva, a ne u zaglavlju, kao u GET. Sukladno tome, vrijednost parametara možete promijeniti samo promjenom vrijednosti upisane u obrazac. Prilikom korištenja POST-a korisnik ne vidi podatke poslane poslužitelju.

Glavna prednost POST zahtjeva je njihova veća sigurnost i funkcionalnost u usporedbi s GET zahtjevima. Stoga se POST metoda češće koristi za prijenos važnih informacija, kao i informacija velikih razmjera. Međutim, ne biste se trebali u potpunosti oslanjati na sigurnost ovog mehanizma, budući da se podaci POST zahtjeva također mogu krivotvoriti, na primjer, stvaranjem HTML datoteke na vašem računalu i njezinim ispunjavanjem potrebnim podacima. Osim toga, ne mogu svi klijenti koristiti POST metodu, što ograničava njezinu upotrebu.

Prilikom slanja podataka poslužitelju bilo kojom metodom, prenose se ne samo podaci koje je unio korisnik, već i niz varijabli, koje se nazivaju varijablama okruženja, koje karakteriziraju klijenta, njegovu povijest operacija, staze datoteka itd. Evo nekih varijabli okoline:

REMOTE_ADDR – IP adresa glavnog računala (računala) koje šalje zahtjev;

REMOTE_HOST – naziv hosta s kojeg je poslan zahtjev;

HTTP_REFERER – adresa stranice koja povezuje s trenutnom skriptom;

REQUEST_METHOD – metoda koja je korištena prilikom slanja zahtjeva;

QUERY_STRING – informacija koja se nalazi u URL-u nakon upitnika;

SCRIPT_NAME – virtualni put do programa koji se treba izvršiti;

HTTP_USER_AGENT – informacije o pregledniku koji klijent koristi

Do sada smo spomenuli samo da se zahtjevi klijenata obrađuju na poslužitelju pomoću posebnog programa. Zapravo, ovaj program možemo napisati sami, uključujući i PHP, i on će s primljenim podacima raditi što god želimo. Kako biste napisali ovaj program, morate se upoznati s nekim od pravila i alata koje PHP nudi za tu svrhu.

Unutar PHP skripte postoji nekoliko načina za pristup podacima koje šalje klijent putem HTTP-a. Prije PHP-a 4.1.0, pristup takvim podacima provodio se nazivima prenesenih varijabli (sjetimo se da se podaci prenose u obliku parova „ime varijable, simbol „=“, vrijednost varijable”). Dakle, ako je, na primjer, first_name=Nina proslijeđeno, tada se varijabla $first_name s vrijednošću Nina pojavljuje unutar skripte. Ako je bilo potrebno razlučiti kojom metodom su podaci preneseni, tada su korišteni asocijativni nizovi $HTTP_POST_VARS i $HTTP_GET_VARS, čiji su ključevi bili nazivi prenesenih varijabli, a vrijednosti su bile, odnosno vrijednosti ​ovih varijabli. Dakle, ako je par first_name=Nina proslijeđen metodom GET, tada $HTTP_GET_VARS["first_name"]="Nina".

Nije sigurno koristiti imena proslijeđenih varijabli izravno u programu. Stoga je odlučeno, počevši od PHP-a 4.1.0, koristiti poseban niz – $_REQUEST – za pristup varijablama koje se prenose putem HTTP zahtjeva. Ovaj niz sadrži podatke prenesene metodama POST i GET, kao i korištenjem HTTP kolačića. Ovo je superglobalni asocijativni niz, tj. njegove vrijednosti mogu se dobiti bilo gdje u programu koristeći naziv odgovarajuće varijable (element obrasca) kao ključ.

Primjer 4.2. Recimo da smo izradili obrazac za prijavu sudionika za dopisnu školu programiranja, kao u gornjem primjeru. Zatim u datoteci 1.php koja obrađuje ovaj obrazac možete napisati sljedeće:

$str = "Pozdrav,
".$_REQUEST["ime"]. "
".$_REQUEST["prezime"]."!
";
$str .="Odabrali ste studirati tečaj u
".$_REQUEST["kurs"];
echo $str;
?>

Zatim, ako smo u formu unijeli ime “Vasya”, prezime “Petrov” i među svim tečajevima odabrali PHP tečaj, na ekranu preglednika ćemo dobiti sljedeću poruku:

Pozdrav, Vasya Petrov!

Nakon uvođenja polja $_REQUEST, polja $HTTP_POST_VARS i $HTTP_GET_VARS preimenovana su u $_POST odnosno $_GET radi dosljednosti, ali sama nisu nestala iz upotrebe zbog kompatibilnosti s prethodnim verzijama PHP-a. Za razliku od svojih prethodnika, nizovi $_POST i $_GET postali su super-globalni, tj. dostupan izravno i unutar funkcija i metoda.

Dajmo primjer korištenja ovih nizova. Recimo da trebamo obraditi obrazac koji sadrži ulazne elemente imena first_name, last_name, kurs (na primjer, obrazac.html gore). Podaci su preneseni metodom POST, te podatke prenesene drugim metodama ne želimo obrađivati. To se može učiniti na sljedeći način:

$str = "Pozdrav,
".$_POST ["ime"]."
".$_POST ["prezime"] ."!
";
$str .= "Odabrali ste studirati tečaj na ".
$_POST["kurs"];
echo $str;
?>

Zatim na ekranu preglednika, ako smo unijeli ime “Vasya”, prezime “Petrov” i među svim tečajevima odabrali PHP tečaj, vidjet ćemo poruku, kao u prethodnom primjeru:

Pozdrav, Vasya Petrov!
Odabrali ste studirati PHP tečaj

Kako bi se održala mogućnost obrade skripti starijih od PHP-a 4.1.0, uvedena je direktiva register_globals, dopuštajući ili odbijajući pristup varijablama izravno prema njihovim imenima. Ako je parametar register_globals=On u datoteci s postavkama PHP-a, tada se varijablama proslijeđenim poslužitelju pomoću metoda GET i POST može pristupiti jednostavno njihovim imenima (tj. možete napisati $first_name). Ako register_globals=Off, tada trebate napisati $_REQUEST["first_name"] ili $_POST["first_name"], $_GET["first_name"], $HTTP_POST_VARS["first_name"], $HTTP_GET_VARS["first_name"]. Sa sigurnosne točke gledišta, bolje je onemogućiti ovu direktivu (tj. register_globals=Off). Uz omogućenu direktivu register_globals, gore navedeni nizovi također će sadržavati podatke koje prosljeđuje klijent.

Ponekad morate znati vrijednost varijable okoline, kao što je metoda korištena za slanje zahtjeva ili IP adresa računala koje je poslalo zahtjev. Ove informacije možete dobiti pomoću funkcije getenv(). Vraća vrijednost varijable okoline čije joj je ime proslijeđeno kao parametar.

getenv("METOD_ZAHTJEVA");
// će vratiti korištenu metodu
echo getenv("REMOTE_ADDR");
// prikazat će IP adresu korisnika,
// tko je poslao zahtjev
?>

Kao što smo rekli, ako se koristi metoda GET, tada se podaci prenose dodavanjem niza upita u obliku parova variable_name=value na URL resursa. Sve nakon upitnika u URL-u može se dohvatiti pomoću naredbe

getenv("QUERY_STRING");

Zahvaljujući tome, GET metodom moguće je prenijeti podatke u nekom drugom obliku. Na primjer, možete navesti samo vrijednosti nekoliko parametara pomoću znaka plus, au skripti možete raščlaniti niz upita na dijelove ili možete proslijediti vrijednost samo jednog parametra. U ovom slučaju, prazan element s ključem koji je jednak ovoj vrijednosti (cijeli niz upita) pojavit će se u nizu $_GET, a znak "+" na koji se naiđe u nizu upita zamijenit će se podvlakom "_".

POST metodom podaci se prenose samo pomoću obrazaca, a korisnik (klijent) ne vidi koji se podaci šalju na poslužitelj. Da bi ih vidio, haker mora zamijeniti naš obrazac svojim. Zatim će poslužitelj poslati rezultate obrade neispravnog obrasca na krivo mjesto. Kako biste to izbjegli, možete provjeriti adresu stranice s koje su podaci poslani. To se može ponovno učiniti pomoću funkcije getenv():

getenv("HTTP_REFERER");

Sada je vrijeme za rješavanje problema formuliranog na početku predavanja.

Primjer obrade zahtjeva pomoću PHP-a

Prisjetimo se što je bio zadatak i pojasnimo njegovu formulaciju. Potrebno je napisati obrazac za prijavu polaznika u Dopisnu školu programiranja i nakon prijave poslati poruku polazniku. Ovu smo poruku nazvali univerzalnim pismom, no ona će se malo razlikovati od slova koje smo sastavili u prethodnom predavanju. Ovdje također nećemo ništa slati e-poštom, kako ne bismo bili poput spamera, već ćemo jednostavno generirati ovu poruku i prikazati je na ekranu preglednika. Gore smo već dostavili početnu verziju obrasca za registraciju. Promijenit ćemo ga tako da svaki upisnik može izabrati onoliko tečajeva koliko želi pohađati, a primitak upisnice nećemo potvrditi.

Ovdje je sve vrlo jednostavno i jasno. Jedino što treba napomenuti je način na koji se prosljeđuju vrijednosti elementa potvrdnog okvira. Kada u nazivu elementa napišemo kurs, to znači da će prvi označeni checkbox element biti zapisan u prvi element niza kurs, drugi označeni checkbox će biti upisan u drugi element niza, itd. Možete, naravno, jednostavno dati različite nazive elementima potvrdnog okvira, ali to će zakomplicirati obradu podataka ako postoji mnogo tečajeva.

Skripta koja će sve to analizirati i obraditi zove se 1.php (obrazac se odnosi upravo na ovu datoteku, što je zapisano u njezinom atributu action). Prema zadanim postavkama, GET metoda se koristi za prijenos, ali smo naveli POST. Na temelju podataka dobivenih od registrirane osobe, skripta generira odgovarajuću poruku. Ako je osoba odabrala neke tečajeve, dobit će poruku o vremenu održavanja i predavačima koji ih drže. Ako osoba nije ništa odabrala, prikazuje se poruka o sljedećem sastanku Dopisne škole programera (ZSH).

HTML obrasci omogućuju da se podaci koje unese korisnik pošalju na poslužitelj, gdje se mogu dalje obraditi. Održavanje obrasca odvija se u dvije faze. Obrazac je potrebno najprije prezentirati korisniku koji će ga popuniti svojim podacima i zatim poslati na poslužitelj. Svaki obrazac ima odredišnu web stranicu koja se mora učitati kako bi se obradili podaci koje je korisnik poslao. To je često ista datoteka skripte koja generira obrazac. U ovom slučaju, PHP kôd jednostavno provjerava podatke u obrascu kako bi odredio treba li ponovno pozvati skriptu za stvaranje obrasca ili započeti obradu primljenih podataka.

Pažnja! Lekcija je zastarjela. Nove lekcije o ovoj temi sadržane su u tečaju PHP za početnike.

U većini slučajeva slanje obrazaca na poslužitelj uključuje neku vrstu rada s bazom podataka. Na primjer, operacija pretraživanja baze podataka neophodna je radnja za većinu različitih aplikacija, bilo da se radi o pretraživanju postova na forumu, korisnika ili bloga. U svakom slučaju, ova operacija može olakšati život korisnika. Jer U ovom trenutku još se nismo upoznali s interakcijom PHP-a i MySQL DBMS-a, u ovom ćemo članku pogledati jednostavne primjere obrade obrazaca, a glavni zadatak za mene je pokazati kako se informacije prenose pomoću PHP jezika .

Prijenos informacija korištenjem PHP jezika

Ovaj odjeljak pruža osnovne informacije o tome kako se podaci mogu prenositi između web stranica. Neke od ovih informacija ne odnose se isključivo na PHP tehnologiju, već opisuju interakciju PHP i HTML alata ili se tiču ​​samog HTTP protokola.

Nedostatak državne podrške u HTTP protokolu

Najvažnija značajka bilo koje web tehnologije koju uvijek treba imati na umu je da je sam HTTP protokol bez stanja. To znači da je svaki HTTP zahtjev (koji se u većini slučajeva svodi na zahtjev za primanje i isporuku jednog resursa, kao što je HTML stranica, .jpg datoteka, stilski list itd.) neovisan o svim drugim zahtjevima, ne uključuje bilo kakve informacije o identifikaciji klijenta i ne ostavlja trag u memoriji računala.

Čak i ako je stranica dizajnirana na način da navigacija, tj. prijelaz s jedne stranice na drugu događa se striktno u jednom smjeru (recimo da stranica 1 vodi samo do stranice 2, koja vodi samo do stranice 3 itd.), alati za podršku HTTP protokola nemaju informacije i ne uzimaju u obzir da korisnik gledanje stranice 2 mora prethodno posjetiti stranicu 1. Ne možete dodijeliti vrijednost varijabli na stranici 1 i očekivati ​​da će biti uvezena na stranicu 2 koristeći sam HTML. HTML kod se može koristiti za prikaz obrasca, a ovaj kod se čak može koristiti za unos informacija, ali osim ako se ne koriste neki dodatni načini za prijenos unesenih informacija na drugu stranicu ili program, vrijednost dodijeljena varijabli jednostavno će nestati nakon premještanja na drugu stranicu.

Tehnologije obrade obrazaca poput PHP-a dizajnirane su za rješavanje upravo ovog problema. PHP vam omogućuje da presretnete vrijednost varijable koja se prenosi s prethodne stranice na sljedeću i učinite tu vrijednost dostupnom za kasniju upotrebu. Kako se ispostavilo, PHP tehnologija pruža mogućnost izvođenja ovih vrsta funkcija prijenosa podataka izuzetno dobro, tako da vam omogućuje brzo i jednostavno postavljanje potrebnih alata za rješavanje širokog spektra problema povezanih s osiguravanjem funkcioniranja web stranice.

HTML obrasci pružaju prikladan način za prosljeđivanje malog broja vrijednosti s određene stranice na bilo koju drugu stranicu na web-mjestu. Postoje i drugi načini za održavanje stanja u mnogim prikazima stranica koji su dugotrajniji, kao što su kolačići i sesije, o čemu ćemo govoriti u budućem članku. Ovaj se članak uglavnom fokusira na najjednostavnije načine prijenosa informacija između web stranica, koji koriste GET i POST metode u kombinaciji s HTTP protokolom za stvaranje dinamički generiranih stranica i obradu podataka obrasca.

GET parametri

Metoda GET prosljeđuje parametre s prethodne stranice na sljedeću kao dio niza upita, koji je predstavljen u formatu Uniform Resource Identifier URI. Kada koristite metodu GET za obradu obrasca, nakon URL-a identificiranog atributom akcije obrasca slijedi upitnik nakon razdjelnika, nakon čega slijedi specificirano ime(na) varijable i vrijednost(i), a zatim se cijeli niz proslijeđen agentu za obradu (u ovom slučaju, web poslužitelju).

Dolje je primjer HTML obrasca koji koristi metodu GET (upišite ovu oznaku i spremite datoteku kao sportselect.html):

Osnove PHP-a

Odaberite svoj omiljeni sport

Nakon što korisnik odabere i klikne gumb Pošalji, preglednik će povezati sljedeće elemente prikazanim redoslijedom, bez razmaka između elemenata:

  • URL u navodnicima nakon riječi akcija (http://localhost/sports.php).
  • Upitnik (?) koji označava da sljedeći znakovi čine niz GET.
  • Varijabla imena, znak jednakosti (=) i odgovarajući parametar vrijednosti (value=Hockey).
  • Ampersend (&) iza kojeg slijedi par ime=vrijednost (ako postoji).

Tako će preglednik generirati sljedeći URL niz:
http://localhost/sports.php?sport=Hokej

Preglednik zatim preusmjerava rezultirajući URL niz unutar vlastitog adresnog prostora kao novi zahtjev. PHP skripta u nastavku (sports.php), kojoj se šalje obrazac, dohvaća vrijednosti GET varijable iz posljednjeg dijela niza upita, umeće te varijable i vrijednosti varijabli u $_GET superglobalni niz (koji će biti opisano ukratko) i izvodi neke potrebne radnje s tim vrijednostima; u ovom slučaju, umetanje se događa u tekstualni niz.

Ispod je primjer koda koji prikazuje PHP rukovatelj obrascima za gornji HTML obrazac:

Najdraži sport

Vaš omiljeni sport je

Imajte na umu da je vrijednost unesena u polje HTML obrasca s atributom name="sport" na prethodnoj stranici sada dostupna kao PHP varijabla pod nazivom $_GET["sport"]. Sljedeća slika pokazuje kako ovaj primjer funkcionira:

Sada moramo točno objasniti kako možete pristupiti vrijednostima koje se prenose sa stranice na stranicu. Ovaj članak govori o dvije glavne metode prosljeđivanja vrijednosti koje se koriste u obrascima - GET i POST. Svaka metoda ima povezan superglobalni niz. Superglobalni nizovi detaljnije su opisani u članku "Varijable i konstante". Posebnost superglobalnih nizova od drugih nizova je prisutnost prefiksa u imenu u obliku podvlake.

Procesor obrasca pristupa svakom elementu dostavljenom metodom GET pristupom polju $_GET, a svakom elementu dostavljenom metodom POST pristupom polju $_POST. Sintaktička struktura koja se koristi za pristup bilo kojem elementu superglobalnog niza je jednostavna i potpuno ujednačena:

$_array_name["index_name"]

Ovdje je index_name dio naziva para naziv-vrijednost (za metodu GET) ili naziv polja HTML obrasca (za metodu POST). Slijedeći prethodni primjer, $_GET["sport"] specificira vrijednost odabranog elementa obrasca pod nazivom "sport"; ova je vrijednost proslijeđena korištenjem GET operacije izvedene na izvornoj datoteci. Rukovatelj obrazaca mora koristiti niz koji odgovara metodi kojom su podaci dostavljeni. Konkretno, u ovom primjeru, vrijednost $_POST["sport"] je nedefinirana jer izvorni obrazac nije poslao nikakve podatke korištenjem POST metode.

Metoda obrade obrasca GET ima jednu značajnu prednost u odnosu na metodu POST - zapravo vam omogućuje da svaki put generirate novi niz upita URL-a, koji odgovara trenutnoj situaciji. Korisnici zatim mogu označiti ovu stranicu. S druge strane, rezultati slanja obrazaca metodom POST ne mogu se označiti.

Samo zato što se željena funkcionalnost može postići pomoću GET parametara ne znači da se mora koristiti GET metoda. Nedostaci GET metode koji se nalaze u većini vrsta obrade obrazaca su toliko značajni. Izvorna radna specifikacija HTML 4.0, objavljena 1997., nije preporučivala ovu metodu. Glavni nedostaci GET metode navedeni su u nastavku:

  • GET metoda nije primjenjiva za kreiranje registracijskih prozora, budući da su korisničko ime i lozinka u potpunosti vidljivi na ekranu, a moguće je i da se ti podaci pohranjuju u memoriju preglednika klijenta kao informacija o posjećenoj stranici.
  • Svaka operacija GET prijenosa, uključujući sam skup podataka, bilježi se na web poslužitelju.
  • Metoda GET dodjeljuje podatke varijabli okruženja poslužitelja, tako da je duljina URL-a ograničena. Možda ste vidjeli kako izgledaju vrlo dugi URL-ovi kada se prosljeđuju metodom GET, i doista, malo je vjerojatno da bi itko želio poslati dio HTML teksta od 300 riječi koristeći ovu metodu.

Izvorna HTML specifikacija navodi da duljina niza upita ne smije premašiti 255 znakova. Naravno, to je ograničenje kasnije uklonjeno i ostala je samo preporuka da se pridržavate ograničenja od 255 znakova, no korištenje duljih redaka i dalje može uzrokovati smetnje.

POST parametri

Trenutačno je preferirana metoda za slanje podataka obrasca POST (posebno u slučajevima kada izvođenje radnji rezultira trajnim promjenama, kao što je unos informacija u bazu podataka). Skup podataka obrasca uključen je u tijelo obrasca kada se obrazac preusmjeri na agenta za obradu (u ovom slučaju PHP interpreter). URL niz ne prolazi nikakve vidljive promjene koje odražavaju raznolikost podataka koji se prenose.

Među programerima je rašireno neopravdano uvjerenje da je POST metoda sigurnija od GET. U stvarnosti, nijedna metoda nije više ili manje sigurna od druge. Posjetitelj može vidjeti varijable i podatke poslane metodom POST jednako dobro kao i metodom GET. Jedina razlika je u tome što se u prvom slučaju preneseni podaci ne nalaze u adresnoj traci. Ali to ne znači da su skriveni. Podatke poslane POST metodom korisnik web stranice može pregledavati i mijenjati.

Prvo i najvažnije pravilo programiranja, posebice mrežnog programiranja, je sljedeće:
Nikada ne vjerujte ulaznim podacima.

Uvijek biste trebali pretpostaviti da je posjetitelj možda zlonamjerno ili čak slučajno promijenio podatke koji se prosljeđuju određenoj aplikaciji, stoga morate pažljivo provjeriti te podatke.

Podaci obrasca koji se prenose sigurni su više ili manje samo ako je zahtjev zaštićen SSL-om, TLS-om ili nekom drugom metodom šifriranja. No podaci ipak stižu krajnjem korisniku ili posjetitelju u preglednom obliku, pa on i dalje ima mogućnost pregledavati i mijenjati podatke na ovaj ili onaj način. Činjenica je da SSL protokol jednostavno šifrira podatke koji se prenose preko mreže, što ne dopušta da se podaci vide u čistom tekstu u fazi njegovog prolaska od pošiljatelja do primatelja. Što se tiče mogućnosti posjetitelja da mijenja podatke obrazaca, SSL protokol ne pruža ništa što bi to spriječilo.

Da biste promijenili način prijenosa podataka u prethodnom primjeru, morate napraviti sljedeće promjene:

...

Rad s višestrukim vrijednostima

Ako obrazac ima potvrdne okvire ili radio gumbe, javlja se novi problem. Na primjer, korisnik može odabrati dvije vrijednosti odjednom u obrascu, ali varijabla ne može pohraniti više od jedne vrijednosti, pa će se morati koristiti niz. Ova situacija je prikazana u primjeru u nastavku:

" method="post">
Odaberite svoje omiljene ljubimce

Odabrane životinje: "; foreach ($animal as $a) ( echo " ".htmlentiteti($a).""; } } ?>

Ovaj obrazac omogućuje korisniku da odabere svoje omiljene ljubimce. U ovom primjeru, korisnik može odabrati nekoliko potvrdnih okvira odjednom. To znači da je prilikom obrade podataka obrazaca u PHP skripti potrebno osigurati mogućnost pristupa višestrukim vrijednostima koristeći jedno ime. Postavili smo par uglatih zagrada () iza imena u atributu imena kako bismo mogli poslati više izbora kao niz. Ako su uglate zagrade izostavljene i korisnik je označio više potvrdnih okvira, njegov bi odabir bio prebrisan zadnjim označenim potvrdnim okvirom. Stavljanjem uglatih zagrada iza imena, naznačili smo da vrijednosti treba pohraniti kao niz.

U rukovatelju, niz je pohranjen u varijabli $animal i nabrojan pomoću foreach petlje, poput običnog polja.

Provjera valjanosti obrasca i oblikovanje varijabli obrasca

Kada aplikacija primi podatke od korisnika, mora svaki put provjeriti njihovu ispravnost. Ako ne provjerite podatke koje je korisnik unio, možete imati mnoge probleme, uključujući sigurnosne rizike. Provođenje provjere prošlosti nije tako teško kao što se čini.

Korisnicima je praktičnije provjeravati na strani klijenta pomoću JavaScripta, ali bez obzira na to koristi li se ova provjera, mora se izvršiti provjera na strani poslužitelja.

Još jedna stvar koju treba uzeti u obzir pri stvaranju HTML obrazaca je da ako obrazac treba prikazati unaprijed ispunjeni unos, tada mora biti postavljen atribut vrijednosti. Ovo se posebno odnosi na dvije vrste obrazaca - one koji se koriste za uređivanje podataka primljenih iz baze podataka i one koji su dizajnirani za eventualno višestruko slanje podataka. Potonji je slučaj vrlo čest u situacijama kada se obrazac mora ponovno prikazati nakon što se otkriju pogreške u podacima koji su već unaprijed ispunjeni. Primjer je obrazac za registraciju koji ne prihvaća podatke za obradu sve dok korisnik ne unese valjanu e-mail adresu ili druge potrebne podatke.

Primjer u nastavku pokazuje kako obraditi obrazac, uključujući provjeru valjanosti na strani poslužitelja i obradu na istoj stranici obrasca:

Osnove PHP-a

" method="post">
Podaci za kontakt "klasa="">
"klasa="">

Ovaj primjer koristi funkciju filter_var(), koja testira varijablu pomoću filtra i uzima dva parametra - izvorni niz i konstantu koja označava vrstu filtra. Osim provjere valjanosti adresa e-pošte (FILTER_VALIDATE_EMAIL), ova funkcija podržava sljedeće konstante: FILTER_VALIDATE_URL - provjerava vrijednost za ispravnost URL-a (na primjer), FILTER_VALIDATE_IP - provjerava vrijednost za ispravnost IP adresa, FILTER_VALIDATE_REGEXP - provjerava vrijednost za ispravnost sintakse regularnog izraza i nekoliko drugih konstanti, koje su alternative funkcijama is_bool(), is_float(), is_int() itd.

Ovaj i sljedeći odjeljci ukratko će opisati kako izraditi osnovne web aplikacije koristeći PHP. Ono o čemu se raspravljalo u odjeljku očito nije dovoljno da bi vaša aplikacija mogla komunicirati s korisnikom i formulirati ovisno o radnjama koje je izvršio ili parametrima koje je unio. Sto nedostaje? Ne postoji dovoljno znanja o tome kako organizirati unos korisničkih podataka i prijenos tih podataka na poslužitelj. Pa, trebali biste već imati osnovno znanje o tome kako programski obraditi informacije primljene na poslužitelju.

Metode HTTP zahtjeva i njihovi parametri

Svaka dinamička web aplikacija generira odgovor korisniku u skladu s parametrima koje on unese ili radnjama izvršenim na strani klijenta. Kontaktiranje poslužitelja najčešće se svodi na dvije vrste zahtjeva: GET metodom ili POST metodom. Nekoliko riječi o razlikama između ove dvije vrste zahtjeva.

GET metoda:

    Parametri se prosljeđuju u zaglavlju HTTP zahtjeva, pa su vidljivi u naredbenom retku, a takav se zahtjev može spremiti kao oznake. Budući da je ukupna duljina zaglavlja ograničena, broj i duljina parametara proslijeđenih korištenjem GET-a također je ograničena.

    Vjeruje se da bi rezultati nekoliko identičnih GET zahtjeva izvršenih u nizu trebali biti isti.

POST metoda:

    Parametri zahtjeva prosljeđuju se u tijelu HTTP zahtjeva, tako da nisu prisutni u naredbenom retku. Broj i veličina parametara je neograničen.

    Vjeruje se da rezultati više identičnih POST zahtjeva mogu vratiti različite vrijednosti jer mogu promijeniti svojstva ciljanog objekta.

Metoda GET trebala bi se koristiti za dohvaćanje sadržaja informacijskog izvora prema parametrima kada nema potrebe mijenjati strukture podataka ciljnog izvora, a ima smisla spremiti zahtjev (URL) u knjižne oznake. Metoda GET može biti brža od sličnih zahtjeva koji koriste metodu POST.

Metoda POST trebala bi se koristiti kada trebate sakriti parametre proslijeđene poslužitelju s URL-a. Ovu metodu također treba koristiti u zahtjevima za promjenama sadržaja ciljnog resursa, prosljeđujući opis tih promjena u parametrima (u tijelu zahtjeva).

Put do resursa?parametar1=vrijednost1¶metar2=vrijednost2&…

Ako nemate poseban HTML obrazac za ispunjavanje parametara, tada možete otkloniti pogreške u radu vaše PHP aplikacije prosljeđivanjem testnih parametara izravno u naredbenom retku preglednika, na primjer:

Http://site/php-samples/sql.php?sql=select * from d_staff

Za pristup parametrima zahtjeva na strani poslužitelja, trebali biste koristiti globalne nizove $_GET I $_POST odnosno. Ako vašoj aplikaciji nije važno kojom metodom joj se pristupa, trebali biste koristiti polje $_REQUEST, koji kombinira podatke nizova $_GET i $_POST, na primjer, ovako:

$sql = isset($_REQUEST["sql"]) ? $_REQUEST["sql"] : "";

U ovom primjeru program utvrđuje je li proslijeđen parametar “sql”: ako jest, njegovu vrijednost dodjeljuje odgovarajućoj varijabli, a ako nije, dodjeljuje joj praznu vrijednost.

Definiranje parametara HTTP zahtjeva putem HTML forme

Naravno, ručno definiranje parametara izravno u naredbenom retku preglednika nije baš zgodno. Ova je metoda prikladna za programsko izvršavanje HTTP zahtjeva kada web aplikacije međusobno komuniciraju. Za unos i provođenje početne provjere podataka na strani klijenta potrebno je koristiti HTML obrasce i . U nastavku je primjer najjednostavnijeg obrasca kojim se upisuje tekstualni parametar (vrijednost) koji se zatim prosljeđuje poslužitelju kao parametar POST metode.

metoda = "post" akcijski =’sql.php’ > SQL:

Atribut metode elementa forme specificira metodu koja određuje metodu prijenosa podataka na poslužitelj (get ili post). Atribut radnje specificira php datoteka, koji će obraditi zahtjev. Ako rukovatelj treba biti trenutna datoteka, tada atribut akcije ne treba dodavati. Za sve elemente čija se vrijednost mora proslijediti kao parametar HTTP zahtjeva, morate definirati jedinstvenu vrijednost za atribut name. To je vrijednost atributa Ime bit će indeks u nizovima $_GET, $_POST ili $_REQUEST (pogledajte gornji primjer). Pritiskom na gumb podnijetišalje obrazac sa svim unesenim vrijednostima na server.