POST zahtjeve obrađujemo u PHP-u. NodeJS. Kako obraditi POST zahtjeve Obrada http zahtjeva php

Klijenti pretraživača mogu slati informacije na web server.

Prije nego što pretraživač pošalje informacije, on ih kodira pomoću šeme koja se zove URL kodiranje. U ovoj shemi, parovi ime/vrijednost su spojeni znakovima jednakosti, a različiti parovi su razdvojeni znakom ampersanda.

Ime1=vrijednost1&ime2=vrijednost2&ime3=vrijednost3

Razmaci se uklanjaju i zamjenjuju znakom +, a svi ostali nealfanumerički znakovi zamjenjuju se heksadecimalnim vrijednostima. Nakon što su informacije kodirane, šalju se na server.

GET metoda

Metoda GET šalje kodirane korisničke informacije dodane 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 evidenciji vašeg servera u polju "Location" pretraživača.
  • GET metoda je ograničena na slanje samo do 1024 karaktera.
  • Nikada nemojte koristiti metodu GET ako imate lozinku ili druge osjetljive informacije za slanje na server.
  • GET se ne može koristiti za prijenos binarnih podataka, kao što su slike ili tekstualni dokumenti, na server.
  • Podacima poslanim metodom GET može se pristupiti pomoću QUERY_STRING varijable okruženja.
  • PHP obezbeđuje asocijativni niz $_GET za pristup svim poslanim informacijama koristeći GET metod.

if($_GET["name"] || $_GET["age"]) ( echo "Dobro došli ". $_GET["name"]; echo "Vi ste ". $_GET["starost"]. " godina "; Izlaz(); )

ime: Dob:

POST metoda

Metoda POŠTA prenosi informacije putem HTTP zaglavlja. Informacije su kodirane kako je opisano u slučaju metode GET, i postavljeno u zaglavlje QUERY_STRING.

  • POST metoda nema ograničenja u pogledu veličine podataka koje je potrebno poslati.
  • POST metoda se može koristiti za slanje ASCII kao i binarnih podataka.
  • Podaci koji se šalju metodom POST prolaze kroz HTTP zaglavlje, tako da sigurnost ovisi o HTTP protokolu. Koristeći Secure HTTP, možete osigurati da su vaše informacije zaštićene.
  • PHP pruža asocijativni niz $_POST za pristup svim informacijama poslanim korištenjem POST metode.

Isprobajte sljedeći primjer postavljanjem izvornog koda u skriptu test.php.

if($_POST["name"] || $_POST["age"]) ( if (preg_match("[^A-Za-z"-]",$_POST["name"])) ( umri (" nevažeće ime i ime treba da budu alfa"); ) echo "Dobro došli ". $_POST["name"]; echo "Vi ste ". $_POST["starost"]. " godina."; exit(); )

ime: Dob:

$_REQUEST varijabla

PHP varijabla $_REQUEST sadrži sadržaje poput $_GET, $_POST, dakle $_COOKIE. Razgovaraćemo o varijabli $_COOKIE kada govorimo o kolačićima.

PHP varijabla $_REQUEST može se koristiti za dohvaćanje rezultata iz podataka obrasca dostavljenih korištenjem 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 da popune potrebna polja zaglavlja zahtjeva.

Objašnjenje koda

Varijabla $sPD sadrži podatke za prijenos. Mora biti u HTTP formatu stringa 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 pravimo HTTP zahtjev, on će biti lažan u oba primjera. Kada je postavljeno na true za čitanje lokalnog resursa, funkcija će tražiti datoteku na include_path.

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

Korištenje file_get_contents za izradu POST zahtjeva

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

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

Korištenje fread-a za izvođenje POST zahtjeva

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

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

Izrada GET zahtjeva sa PHP-om

Sada ćemo se fokusirati na korištenje fread-a i file_get_contents-a 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 uradili, potrebno je da postavite parametar allow_url_fopen na On u php.ini datoteci.

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

Korišćenje fread-a za preuzimanje ili primanje datoteka preko Interneta

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

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

Imajte na umu da može biti veći ili manji, a može biti i ograničen postavkama sistema na kojem PHP radi.

Korištenje file_get_contents za dobivanje URL-a stranice

Još je lakše koristiti ovu metodu kada čitate datoteku preko HTTP-a, jer ne morate da brinete o čitanju u komadima - sve se rukuje 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 kurs je posvećen proučavanju njegovih osnova. Naglasak je na praktičnoj primjeni stečenih vještina.

PHP jezik je kreiran za rješavanje konkretnog praktičnog problema na Internetu (koji se može saznati čitanjem prvog predavanja kursa). Također ćemo se truditi da ne budemo previše ometani teorijskim rasuđivanjem, te ćemo nastojati da na svakom od predavanja riješimo konkretan problem. Većina primjera je uzeta iz stvarnog sistema: virtuelnog muzeja istorije informatike. Prvi dio predmeta posvećen je proučavanju osnova sintakse i upravljačkih struktura. Nakon toga, tehnologija klijent-server se smatra glavnom aplikacijskom oblasti 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 PHP jeziku nije najbogatiji, njegovo osnovno prisustvo vam omogućava da prirodno opišete modele podataka objekata. Kao osnovni model razmatrat će se model dokumenta virtuelnog informatičkog muzeja. Nakon toga, razmotrit će se niz primijenjenih aspekata: rad sa datotečnim sistemom, sa bazom podataka, stringovima, sesijama, DOM XML - sve to će nam omogućiti da razmotrimo ključne zadatke praktične upotrebe jezika.

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

HTTP protokol i metode prenosa podataka na server

Internet je izgrađen na višeslojnom principu, od fizičkog sloja, koji se bavi fizičkim aspektima prijenosa binarnih informacija, do aplikativnog sloja koji obezbjeđuje interfejs između korisnika i mreže.

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

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

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

HTTP se koristi za komunikaciju između različitih korisničkih programa i gateway programa koji omogućavaju pristup postojećim Internet 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 gatewayima da prenose podatke preko proxy servera bez gubitka.

Protokol implementira princip zahtjev/odgovor. Program koji traži - klijent inicira interakciju sa programom koji odgovara - serverom i šalje zahtjev koji sadrži:

Metod pristupa;

URI adresa;

Verzija protokola;

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

Odgovor servera sadrži:

Statusna linija koja uključuje verziju protokola i povratni kod (uspjeh ili greška);

Poruka (u MIME obliku) koja uključuje informacije o serveru, meta informacije (tj. informacije o sadržaju poruke) i tijelo poruke.

Protokol ne specificira ko treba da otvori i zatvori vezu između klijenta i servera. U praksi, vezu obično otvara klijent, a server nakon slanja odgovora inicira njen prekid.

Pogledajmo bliže formu u kojoj se zahtjevi šalju serveru.

Obrazac zahtjeva korisnika

Klijent šalje zahtjev serveru u jednom od dva oblika: punom ili skraćenom. Zahtjev u prvom obliku naziva se puni zahtjev, a u drugom obliku jednostavan zahtjev.

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 drugi. O najčešćim od njih ćemo govoriti malo kasnije. Traženi URI je najčešće URL resursa.

Primjer jednostavnog zahtjeva:

PREUZMI http://phpbook.info/

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

Potpuni zahtjev sadrži statusnu liniju, nekoliko zaglavlja (zaglavlje zahtjeva, opšte zaglavlje ili zaglavlje sadržaja) i moguće tijelo zahtjeva. Formalno, opći oblik kompletnog zahtjeva može se napisati na sljedeći način:

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

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

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

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

U oba oblika zahtjeva, URI traženog resursa igra važnu ulogu. Najčešći URI se koristi u obliku URL-a resursa. Kada pristupate serveru, možete koristiti i puni oblik URL-a i pojednostavljeni.

Puni obrazac sadrži tip pristupnog protokola, adresu servera resursa i adresu resursa na serveru (slika 4.2).

U skraćenom obliku, protokol i adresa servera su izostavljeni, ukazujući samo na lokaciju resursa iz korijena servera. Pun obrazac se koristi ako je moguće proslijediti zahtjev na drugi server. Ako se rad odvija samo sa jednim serverom, onda se često koristi skraćeni oblik.


Rice. 4.2. Puni URL obrazac

Metode

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

Postoji varijacija GET metode - uslovni GET. Ova metoda govori serveru da na zahtjev treba odgovoriti samo ako je uvjet sadržan u polju if-Modified-Since zaglavlja zahtjeva istinit. Preciznije, tijelo resursa se prosljeđuje kao odgovor na zahtjev ako je resurs izmijenjen od datuma navedenog u if-Modified-Since.

Metoda HEAD je slična GET metodi, ali ne vraća tijelo resursa i nema uslovni pandan. Metoda HEAD se koristi za dobivanje informacija o resursu. Ovo može biti korisno, na primjer, kada se rješava problem testiranja hipertekstualnih veza.

POST metoda je dizajnirana za prijenos informacija na server kao što su napomene o resursima, vijesti i mail poruke, podaci koji se dodaju u bazu podataka, tj. za prenos velike količine i veoma važnih informacija. Za razliku od metoda GET i HEAD, POST prenosi tijelo resursa, koje je informacija primljena iz polja obrasca ili drugih izvora unosa.

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

Korišćenje HTML obrazaca za slanje podataka na server

Kako prenijeti podatke na server? U tu svrhu jezik HTML ima posebnu konstrukciju - forme. Obrasci su dizajnirani da primaju informacije od korisnika. Na primjer, morate znati korisničko ime i lozinku kako biste odredili kojim stranicama stranice može biti dozvoljen pristup. Ili su vam potrebni lični podaci korisnika da biste mogli da ga kontaktirate. Obrasci se upravo koriste za unos takvih informacija. Možete uneti tekst u njih ili odabrati odgovarajuće opcije sa liste. Podaci upisani u formu šalju se na obradu u poseban program (na primjer, PHP skriptu) na serveru. Ovisno o podacima koje unese korisnik, ovaj program može generirati različite web stranice, slati upite bazi podataka, pokretati razne aplikacije itd.

Hajde da razumemo sintaksu HTML obrazaca. Mnogima je to možda poznato, ali ćemo ipak ponoviti glavne stvari jer je važno.

Dakle, za kreiranje obrasca u HTML-u koristi se oznaka FORM. Unutar njega nalazi se jedna ili više INPUT komandi. Koristeći atribute akcije i metode oznake FORM, specificirate ime programa koji će obraditi podatke obrasca i metodu zahtjeva, respektivno. Naredba INPUT specificira tip i različite karakteristike traženih informacija. Podaci obrasca se šalju nakon pritiska na tipku za unos tipa slanja. Napravimo obrazac za registraciju polaznika u dopisnoj školi programiranja.

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


Rice. 4.3. Primjer html forme

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

Za metodu GET

Prilikom slanja podataka obrasca korištenjem metode GET, sadržaj obrasca se dodaje URL-u nakon upitnika kao parovi ime=vrijednost spojeni znakom &:

akcija?ime1=vrijednost1&ime2=vrijednost2&ime3=vrijednost3

Ovdje je akcija URL programa koji treba da obradi obrazac (ili program naveden u atributu akcije oznake obrasca, ili sam trenutni program ako je taj atribut izostavljen). Imena ime1, ime2, ime3 odgovaraju imenima elemenata obrasca, a vrijednost1, vrijednost2, vrijednost3 odgovaraju vrijednostima ovih elemenata. Svi specijalni znakovi, uključujući = i &, bit će izostavljeni iz ovih imena ili vrijednosti parametara. Stoga ne biste trebali koristiti ove simbole i ćiriličke znakove u identifikatorima u nazivima ili vrijednostima elemenata obrasca.

Ako unesete neki uslužni znak u polje za unos, on će se prenijeti u svom heksadecimalnom kodu, na primjer, simbol $ će biti zamijenjen %24. Ruska slova se takođe prenose na isti način.

Za polja za unos teksta i lozinke (ovo su elementi za unos sa atributima type=text i type=password), vrijednost će biti ono što korisnik unese. Ako korisnik ne unese ništa u takvo polje, tada će element name= biti prisutan u nizu upita, gdje ime odgovara imenu ovog elementa obrasca.

Za okvire za potvrdu i dugmad za izbor, vrijednost je određena atributom VALUE kada je dugme označeno. Dugmad koja nisu označena u potpunosti se zanemaruju prilikom sastavljanja niza upita. Više dugmadi za potvrdu mogu imati isti atribut NAME (i različite VRIJEDNOSTI) ako je potrebno. Dugmad tipa radio dugme namenjena su za jednu od svih ponuđenih opcija i stoga moraju imati isti atribut NAME i različite atribute VALUE.

U principu, nije potrebno kreirati HTML obrazac za prijenos podataka pomoću GET metode. Možete jednostavno dodati željene varijable i njihove vrijednosti u URL niz.

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

U tom smislu, prijenos podataka metodom GET ima jedan značajan nedostatak - svako može krivotvoriti vrijednosti parametara. Stoga ne preporučujemo korištenje ove metode za pristup stranicama zaštićenim lozinkom ili za prijenos informacija koje utiču na sigurnost programa ili servera. Osim toga, ne biste trebali koristiti metodu GET za prijenos informacija koje korisniku nije dozvoljeno mijenjati.

Unatoč svim ovim nedostacima, korištenje GET metode je prilično zgodno za otklanjanje greš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 stringa URL-u, sadržaj zahtjeva se šalje kao blok podataka kao dio POST operacije. Ako je prisutan atribut ACTION, tada URL vrijednost koja se tamo nalazi određuje gdje će se poslati ovaj blok podataka. Ova metoda, kao što je već napomenuto, preporučuje se za prijenos velikih blokova podataka.

Informacije koje je korisnik unio i poslao na server koristeći POST metodu se serviraju na standardni ulaz u program specificiran atributom akcije, ili u trenutnu skriptu ako je ovaj atribut izostavljen. Dužina poslane datoteke se prenosi u varijablu okruženja CONTENT_LENGTH, a tip podataka se prosljeđuje u varijablu CONTENT_TYPE.

Podatke možete slati samo metodom POST koristeći HTML obrazac, jer se podaci šalju u tijelu zahtjeva, a ne u zaglavlju, kao u GET-u. U skladu s tim, vrijednost parametara možete promijeniti samo promjenom vrijednosti unesene u obrazac. Kada koristi POST, korisnik ne vidi podatke poslane na server.

Glavna prednost POST zahtjeva je njihova veća sigurnost i funkcionalnost u odnosu na GET zahtjeve. 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, jer podaci POST zahtjeva također mogu biti lažni, na primjer, kreiranjem HTML datoteke na vašem računalu i popunjavanjem potrebnim podacima. Osim toga, ne mogu svi klijenti koristiti metodu POST, što ograničava slučajeve njene upotrebe.

Prilikom slanja podataka na server na bilo koji način, ne prenose se samo podaci koje je korisnik unio, već i niz varijabli, koje se nazivaju varijable okruženja, koje karakteriziraju klijenta, njegovu povijest rada, putanje datoteka itd. Evo nekih varijabli okruženja:

REMOTE_ADDR – IP adresa hosta (računara) koji šalje zahtjev;

REMOTE_HOST – ime hosta sa kojeg je poslan zahtjev;

HTTP_REFERER – adresa stranice koja povezuje trenutnu skriptu;

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

QUERY_STRING – informacije koje se nalaze u URL-u nakon upitnika;

SCRIPT_NAME – virtuelna putanja do programa koji treba da se izvrši;

HTTP_USER_AGENT – informacije o pretraživaču koji klijent koristi

Do sada smo samo spomenuli da se zahtjevi klijenata obrađuju na serveru pomoću posebnog programa. U stvari, ovaj program možemo sami napisati, uključujući i PHP, i on će sa primljenim podacima raditi šta god želimo. Da biste napisali ovaj program, morate se upoznati sa nekim od pravila i alata koje PHP nudi za ovu svrhu.

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

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

Primjer 4.2. Recimo da smo kreirali obrazac za registraciju učesnika za dopisnu školu programiranja, kao u primjeru iznad. Zatim u datoteci 1.php koja obrađuje ovaj obrazac možete napisati sljedeće:

$str = "Zdravo,
".$_REQUEST["first_name"]. "
".$_REQUEST["prezime"]."!
";
$str .="Odabrali ste da studirate kurs u
".$_REQUEST["kurs"];
echo $str;
?>

Zatim, ako smo u formular upisali ime “Vasya”, prezime “Petrov” i odabrali PHP kurs među svim kursevima, na ekranu pretraživača ćemo dobiti sljedeću poruku:

Zdravo, Vasya Petrov!

Nakon uvođenja niza $_REQUEST, nizovi $HTTP_POST_VARS i $HTTP_GET_VARS su preimenovani u $_POST i $_GET, respektivno, radi konzistentnosti, ali sami nisu nestali iz upotrebe zbog kompatibilnosti sa prethodnim verzijama PHP-a. Za razliku od svojih prethodnika, nizovi $_POST i $_GET postali su superglobalni, tj. dostupne direktno i unutar funkcija i metoda.

Dajemo primjer korištenja ovih nizova. Recimo da trebamo obraditi obrazac koji sadrži ulazne elemente pod nazivom first_name, last_name, kurs (na primjer, form.html iznad). Podaci su prebačeni POST metodom i ne želimo da obrađujemo podatke prenesene drugim metodama. To se može uraditi na sljedeći način:

$str = "Zdravo,
".$_POST ["first_name"]."
".$_POST ["prezime"] ."!
";
$str .= "Odabrali ste da studirate kurs na ".
$_POST["kurs"];
echo $str;
?>

Zatim na ekranu pretraživača, ako smo uneli ime “Vasya”, prezime “Petrov” i izabrali PHP kurs među svim kursevima, videćemo poruku, kao u prethodnom primeru:

Zdravo, Vasya Petrov!
Odabrali ste da studirate PHP kurs

Da bi se zadržala mogućnost obrade skripti ranije od PHP 4.1.0, uvedena je direktiva register_globals, koja dozvoljava ili odbija pristup varijablama direktno njihovim imenima. Ako se parametar register_globals=On nalazi u datoteci postavki PHP-a, tada se varijablama proslijeđenim serveru korištenjem metoda GET i POST može pristupiti jednostavno po njihovim imenima (tj. možete napisati $first_name). Ako register_globals=Isključeno, 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 tačke gledišta, bolje je onemogućiti ovu direktivu (tj. register_globals=Off). Sa omogućenom direktivom register_globals, gore navedeni nizovi će također sadržavati podatke koje je proslijedio klijent.

Ponekad morate znati vrijednost varijable okruženja, kao što je metoda koja se koristi za slanje zahtjeva ili IP adresa računara koji je poslao zahtjev. Ove informacije možete dobiti pomoću funkcije getenv(). Vraća vrijednost varijable okruženja čije ime joj se prosljeđuje kao parametar.

getenv("REQUEST_METHOD");
// će vratiti korišteni metod
echo getenv("REMOTE_ADDR");
// će prikazati IP adresu korisnika,
// ko je poslao zahtjev
?>

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

getenv("QUERY_STRING");

Zahvaljujući tome moguće je prenijeti podatke u nekom drugom obliku metodom GET. Na primjer, možete specificirati samo vrijednosti nekoliko parametara pomoću znaka plus, a u 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 jednakim ovoj vrijednosti (cijeli niz upita) pojavit će se u nizu $_GET, a znak “+” koji se susreće u nizu upita bit će zamijenjen donjom crtom “_”.

Kod POST metode podaci se prenose samo pomoću formulara, a korisnik (klijent) ne vidi koji se podaci šalju na server. Da bi ih vidio, haker mora zamijeniti naš obrazac svojim. Tada će server poslati rezultate obrade neispravnog obrasca na pogrešno mjesto. Da biste to izbjegli, možete provjeriti adresu stranice sa koje su podaci poslani. Ovo se može ponoviti pomoću funkcije getenv():

getenv("HTTP_REFERER");

Sada je vrijeme da riješimo problem formuliran na početku predavanja.

Primjer obrade zahtjeva pomoću PHP-a

Prisjetimo se koji je zadatak bio i razjasnimo njegovu formulaciju. Potrebno je da napišete formular za registraciju učesnika u dopisnoj školi programiranja i nakon registracije pošaljete poruku polazniku. Ovu poruku smo nazvali univerzalnim pismom, ali će se malo razlikovati od pisma koje smo sastavili u prethodnom predavanju. Ovdje također nećemo ništa slati e-poštom, kako ne bismo bili kao spameri, već ćemo jednostavno generirati ovu poruku i prikazati je na ekranu pretraživača. Već smo dali početnu verziju obrasca za registraciju iznad. Mi ćemo ga promijeniti tako da svaki registrator može birati onoliko kurseva koliko želi pohađati, a nećemo potvrditi prijem obrasca za registraciju.

Ovdje je sve prilično jednostavno i jasno. Jedina stvar koju treba primijetiti je način na koji se prosljeđuju vrijednosti elementa za potvrdu. Kada upišemo kurs u naziv elementa, to znači da će prvi označeni checkbox element biti upisan u prvi element niza kurs, drugi checkbox će biti upisan u drugi element niza, itd. Možete, naravno, jednostavno dati različite nazive elementima polja za potvrdu, ali to će zakomplicirati obradu podataka ako postoji mnogo kurseva.

Skripta koja će sve ovo raščlaniti i obraditi zove se 1.php (forma se posebno odnosi na ovaj fajl, koji je napisan u njegovom atributu akcije). Standardno se za prijenos koristi GET metoda, ali smo specificirali POST. Na osnovu informacija primljenih od registrovane osobe, skripta generiše odgovarajuću poruku. Ako je osoba odabrala neke kurseve, dobić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ćavaju da se podaci koje unese korisnik pošalju na server, gdje se mogu dalje obraditi. Održavanje formulara se izvodi u dvije faze. Obrazac se prvo mora prikazati korisniku, koji će ga ispuniti svojim podacima, a zatim ga poslati serveru. Svaki obrazac ima odredišnu web stranicu koja se mora učitati za obradu podataka koje je korisnik dostavio. Ovo je često ista datoteka skripte koja generiše obrazac. U ovom slučaju, PHP kod jednostavno provjerava podatke u obrascu kako bi odredio da li da ponovo pozove skriptu da kreira obrazac ili da počne sa obradom primljenih podataka.

Pažnja! Lekcija je zastarjela. Nove lekcije na ovu temu sadržane su u kursu PHP za početnike.

U većini slučajeva, slanje obrazaca na server uključuje neku vrstu rada sa bazom podataka. Na primjer, operacija pretraživanja baze podataka je neophodna 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 korisniku. Jer U ovom trenutku još se nismo upoznali sa interakcijom PHP-a i MySQL DBMS-a, u ovom članku ćemo pogledati jednostavne primjere obrade obrazaca, a glavni zadatak mi 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 se ne odnose 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 karakteristika svake web tehnologije koju uvijek treba imati na umu je da je sam HTTP protokol bez državljanstva. To znači da je svaki HTTP zahtjev (koji u većini slučajeva predstavlja zahtjev za primanje i isporuku jednog resursa, kao što je HTML stranica, .jpg datoteka, stilska tablica, itd.) nezavisan od svih drugih zahtjeva, ne uključuje bilo kakve informacije o identifikaciji klijenta i ne ostavlja trag u memoriji računara.

Čak i ako je stranica dizajnirana na način da navigacija, tj. prelazak sa jedne stranice na drugu odvija se striktno u jednom smjeru (recimo, stranica 1 vodi samo na stranicu 2, koja vodi samo na stranicu 3 itd.), alati za podršku HTTP protokola nemaju informacije i ne uzimaju u obzir da korisnik gledanje stranice 2 mora imati prethodno posjećenu 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 i 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 će jednostavno nestati nakon pomicanja na drugu stranicu.

Tehnologije za obradu obrazaca kao što je PHP su dizajnirane da reše upravo ovaj problem. PHP vam omogućava da presretnete vrijednost varijable koja se prenosi s prethodne stranice na sljedeću i učini tu vrijednost dostupnom za kasniju upotrebu. Kako se ispostavilo, PHP tehnologija pruža mogućnost izuzetno dobrog obavljanja ovih vrsta funkcija prijenosa podataka, tako da vam omogućava da brzo i jednostavno implementirate potrebne alate za rješavanje širokog spektra problema povezanih s osiguravanjem funkcionisanja web stranice.

HTML obrasci pružaju zgodan način za prosljeđivanje malog broja vrijednosti sa date stranice na bilo koju drugu stranicu na web stranici. Postoje i drugi načini održavanja stanja na mnogim prikazima stranica koji su dugotrajniji, kao što su kolačići i sesije, o čemu će biti riječi u budućem članku. Ovaj članak se uglavnom fokusira na najjednostavniji način prijenosa informacija između web stranica, koji koriste metode GET i POST u kombinaciji s HTTP protokolom za kreiranje dinamički generiranih stranica i obradu podataka obrasca.

GET parametre

Metoda GET prosljeđuje parametre s prethodne stranice na sljedeću kao dio niza upita, koji je predstavljen u formatu URI-ja jedinstvenog identifikatora resursa. Kada koristite metodu GET za obradu obrasca, URL identificiran atributom radnje obrasca slijedi znak pitanja nakon graničnika, nakon čega slijedi navedena imena varijable i vrijednost(e), a zatim je cijeli niz proslijeđen agentu za obradu (u ovom slučaju, web serveru).

Ispod je primjer HTML obrasca koji koristi metodu GET (upišite ovu oznaku i sačuvajte datoteku kao sportselect.html):

Osnove PHP-a

Odaberite svoj omiljeni sport

Kada korisnik napravi svoj odabir i klikne na dugme Pošalji, pretraživač će povezati sljedeće elemente prikazanim redoslijedom, bez razmaka između elemenata:

  • URL u navodnicima nakon riječi action (http://localhost/sports.php).
  • Znak pitanja (?) koji označava da sljedeći znakovi čine GET string.
  • Varijabla imena, znak jednakosti (=) i odgovarajući parametar vrijednosti (vrijednost=Hokej).
  • Ampersand (&) iza kojeg slijedi par ime=vrijednost (ako postoji).

Tako će pretraživač generirati sljedeći URL niz:
http://localhost/sports.php?sport=Hockey

Pregledač zatim preusmjerava rezultirajući URL niz unutar vlastitog adresnog prostora kao novi zahtjev. PHP skripta u nastavku (sports.php), kojoj je obrazac dostavljen, dohvaća vrijednosti GET promjenljive 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 sa ovim vrijednostima; u ovom slučaju, umetanje se dešava u tekstualnom nizu.

Ispod je primjer koda koji pokazuje PHP obrasca za rukovanje za gornji HTML obrazac:

Omiljeni sport

Vaš omiljeni sport je

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

Sada moramo objasniti kako tačno 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 superglobalni niz povezan s njim. Superglobalni nizovi su detaljnije opisani u članku "Varijable i konstante". Posebnost superglobalnih nizova od drugih nizova je prisustvo prefiksa u imenu u obliku donje crte.

Procesor obrasca pristupa svakom elementu koji je poslat koristeći GET metodu pristupajući nizu $_GET, a svakom elementu koji je poslat koristeći POST metodu pristupajući nizu $_POST. Sintaktička struktura koja se koristi za pristup bilo kojem elementu superglobalnog niza je jednostavna i potpuno uniformna:

$_array_name["index_name"]

Ovdje je index_name dio imena para ime-vrijednost (za metodu GET) ili ime polja HTML obrasca (za metodu POST). Slijedeći prethodni primjer, $_GET["sport"] specificira vrijednost odabranog elementa forme pod nazivom "sport"; ova vrijednost je proslijeđena pomoću GET operacije izvedene na originalnoj datoteci. Rukovalac obrascima mora koristiti niz koji odgovara metodi kojom su podaci dostavljeni. Konkretno, u ovom primjeru, vrijednost $_POST["sport"] je nedefinirana jer originalni obrazac nije poslao nikakve podatke koristeći POST metodu.

Metoda obrade GET obrasca ima jednu značajnu prednost u odnosu na POST metodu - zapravo vam omogućava da svaki put generišete novi string URL upita, prikladan trenutnoj situaciji. Korisnici tada mogu označiti ovu stranicu. S druge strane, rezultati podnošenja obrasca korištenjem POST metode ne mogu se označiti.

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

  • Metoda GET nije primjenjiva za kreiranje prozora za registraciju, jer su korisničko ime i lozinka u potpunosti vidljivi na ekranu, a moguće je i da se ovi podaci pohranjuju u memoriju pretraživača klijenta kao informacija o posjećenoj stranici.
  • Svaka GET operacija prijenosa, uključujući sam skup podataka, evidentira se na web serveru.
  • Metoda GET dodjeljuje podatke varijabli okruženja servera, tako da je dužina URL-a ograničena. Možda ste vidjeli kako izgledaju vrlo dugački URL-ovi kada se prosljeđuju pomoću GET metode, i zaista, malo je vjerovatno da bi iko želio poslati dio HTML teksta od 300 riječi koristeći ovu metodu.

Originalna HTML specifikacija je navela da dužina niza upita ne bi trebalo da prelazi 255 znakova. Naravno, ovo ograničenje je kasnije uklonjeno i ostala je samo preporuka da se pridržavate ograničenja od 255 znakova, ali upotreba dužih redova i dalje može uzrokovati poremećaj.

POST parametri

Trenutno, preferirani metod za dostavljanje podataka obrasca je POST (posebno u slučajevima kada izvođenje radnji rezultira trajnim promjenama, kao što je unošenje informacija u bazu podataka). Skup podataka obrasca je uključen u tijelo obrasca kada se obrazac preusmjeri na agenta za obradu (u ovom slučaju, PHP interpreter). URL string ne trpi nikakve vidljive promjene koje bi odražavale raznolikost podataka koji se prenose.

Postoji široko rasprostranjeno neopravdano uvjerenje među programerima da je POST metoda sigurnija od GET-a. U stvarnosti, nijedna metoda nije više ili manje sigurna od druge. Posjetilac može vidjeti varijable i podatke poslane POST metodom 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, posebno mrežnog programiranja, je ovo:
Nikada nemojte vjerovati ulaznim podacima.

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

Preneseni podaci obrasca su manje ili više sigurni samo ako je zahtjev osiguran korištenjem SSL, TLS ili neke druge metode šifriranja. Ali podaci i dalje stižu do krajnjeg korisnika ili posjetitelja u jasnom obliku, tako da on i dalje ima mogućnost pregleda i promjene podataka na ovaj ili onaj način. Činjenica je da SSL protokol jednostavno šifrira podatke koji se prenose preko mreže, što ne dozvoljava da se podaci pregledaju u čistom tekstu u fazi njihovog prolaska od pošiljaoca do primaoca. Što se tiče mogućnosti posjetitelja da izvrši promjene u podacima forme, SSL protokol ne pruža ništa što bi to spriječilo.

Da biste promijenili način na koji se podaci prenose u prethodnom primjeru, potrebno je izvršiti sljedeće promjene:

...

Rad sa višestrukim vrijednostima

Ako obrazac ima potvrdne okvire ili radio dugmad, 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 ispod:

" method="post">
Odaberite svoje omiljene kućne ljubimce

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

Ovaj obrazac omogućava korisniku da odabere svoje omiljene kućne ljubimce. U ovom primjeru, korisnik može odabrati nekoliko okvira za potvrdu odjednom. To znači da je prilikom obrade podataka obrasca u PHP skripti potrebno obezbijediti mogućnost pristupa više vrijednosti pomoću jednog imena. Postavili smo par uglatih zagrada () iza imena u atributu name da bismo mogli poslati višestruke izbore kao niz. Ako su uglaste zagrade izostavljene, a korisnik je označio više potvrdnih okvira, njihov izbor bi bio prepisan zadnjim označenim potvrdnim okvirom. Stavljanjem uglastih zagrada iza imena naznačili smo da vrijednosti treba pohraniti kao niz.

U rukovaocu, niz se pohranjuje u varijablu $animal i nabraja pomoću foreach petlje, kao običan niz.

Validacija obrasca i formatiranje varijabli obrasca

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

Za korisnike je zgodnije da provjere na strani klijenta koristeći JavaScript, ali bez obzira da li se koristi ova provjera, mora se izvršiti provjera na strani servera.

Još jedna stvar koju treba uzeti u obzir prilikom kreiranja HTML obrazaca je da ako obrazac treba da prikaže unaprijed popunjeni unos, onda se mora postaviti atribut vrijednosti. Ovo se posebno odnosi na dvije vrste obrazaca – one koje se koriste za uređivanje podataka primljenih iz baze podataka i one koje su dizajnirane da mogu podnijeti podatke više puta. Potonji slučaj je vrlo čest u situacijama kada se obrazac mora ponovo prikazati nakon što se otkriju greške u podacima koji su već popunjeni unaprijed. Primjer je obrazac za registraciju koji ne prihvaća podatke za obradu sve dok korisnik ne unese ispravnu adresu e-pošte ili druge potrebne podatke.

Primjer ispod pokazuje kako obraditi obrazac, uključujući provjeru valjanosti na strani servera i obradu na istoj stranici obrasca:

Osnove PHP-a

" method="post">
Kontakt informacije "class="">
"class="">

Ovaj primjer koristi funkciju filter_var() koja testira varijablu pomoću filtera i uzima dva parametra - izvorni niz i konstantu koja ukazuje na tip filtera. Osim validacije email adresa (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 će ukratko pokriti kako kreirati osnovne web aplikacije koristeći PHP. Ono o čemu se govorilo u odjeljku očito nije dovoljno da vaša aplikacija komunicira s korisnikom i formulira u zavisnosti od radnji koje je izvršio ili parametara koje je unio. Šta nedostaje? Nema dovoljno znanja o tome kako organizovati unos korisničkih podataka i prenos ovih podataka na server. Pa, već biste trebali imati osnovno znanje o tome kako programski obraditi informacije primljene na serveru.

Metode HTTP zahtjeva i njihovi parametri

Svaka dinamička web aplikacija generiše odgovor korisniku u skladu sa parametrima koje je on uneo ili radnjama koje obavlja na strani klijenta. Kontaktiranje servera najčešće se svodi na dvije vrste zahtjeva: korištenje GET metode ili POST metode. Nekoliko riječi o razlikama između ove dvije vrste zahtjeva.

GET metoda:

    Parametri se prosleđuju u zaglavlju HTTP zahteva, tako da su vidljivi na komandnoj liniji, a takav zahtev se može sačuvati kao obeleživači. Budući da je ukupna dužina zaglavlja ograničena, broj i dužina parametara proslijeđenih pomoću GET-a je također ograničen.

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

POST metoda:

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

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

Metodu GET treba koristiti za dohvaćanje sadržaja informacijskog resursa prema parametrima kada nema potrebe za mijenjanjem strukture podataka ciljnog resursa, a ima smisla sačuvati zahtjev (URL) u bookmarkovima. Metoda GET može biti brža od sličnih zahtjeva koji koriste POST metodu.

POST metodu treba koristiti kada trebate sakriti parametre proslijeđene serveru iz URL-a. Ovu metodu takođe treba koristiti u zahtevima za izmene sadržaja ciljnog resursa, prenoseći opis ovih promena u parametrima (u telu zahteva).

Put do resursa?parametar1=value1¶meter2=value2&…

Ako nemate poseban HTML obrazac za popunjavanje parametara, tada možete otkloniti greške u radu vaše PHP aplikacije tako što ćete proslijediti test parametre direktno u komandnu liniju pretraživača, na primjer:

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

Za pristup parametrima zahtjeva na strani servera, trebali biste koristiti globalne nizove $_GET I $_POST respektivno. Ako vašoj aplikaciji nije važno kojom metodom se pristupa, onda biste trebali koristiti niz $_REQUEST, koji kombinuje podatke nizova $_GET i $_POST, na primjer, ovako:

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

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

Definiranje parametara HTTP zahtjeva putem HTML obrasca

Naravno, ručno definisanje parametara direktno u komandnoj liniji pretraživača nije baš zgodno. Ova metoda je prikladna za programsko izvršavanje HTTP zahtjeva kada web aplikacije komuniciraju jedna s drugom. Da biste unijeli i izvršili početnu provjeru podataka na strani klijenta, trebate koristiti HTML forme i . Ispod je primjer najjednostavnije forme pomoću koje se unosi tekstualni parametar (vrijednost), koji se naknadno prosljeđuje serveru kao parametar POST metode.

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

Atribut method elementa forme specificira metodu koja određuje način prenošenja podataka na server (dobi ili pošalji). Atribut akcije specificira php fajl, koji će obraditi zahtjev. Ako rukovalac treba da bude trenutna datoteka, tada atribut akcije ne treba dodati. Za sve elemente čija vrijednost mora biti proslijeđena kao parametar HTTP zahtjeva, morate definirati jedinstvenu vrijednost za atribut name. To je vrijednost atributa ime bice index u nizovima $_GET, $_POST ili $_REQUEST (pogledajte primjer iznad). Pritiskom na dugme submitšalje obrazac sa svim unesenim vrijednostima na server.