POST zahteve obdelujemo v PHP. NodeJS. Kako obdelati zahteve POST Obdelava http zahtev php

Odjemalci brskalnika lahko pošiljajo informacije spletnemu strežniku.

Preden brskalnik pošlje informacije, jih kodira s shemo, imenovano kodiranje URL-jev. V tej shemi so pari ime/vrednost povezani z enakimi znaki, različni pari pa so ločeni z znakom &.

Ime1=vrednost1&ime2=vrednost2&ime3=vrednost3

Presledki so odstranjeni in nadomeščeni z znakom +, vsi drugi nealfanumerični znaki pa so nadomeščeni s šestnajstiškimi vrednostmi. Ko so informacije kodirane, se pošljejo na strežnik.

Metoda GET

Metoda GET pošlje kodirane informacije o uporabniku, priložene zahtevi strani. Ali so strani in kodirane informacije ločene drug od drugega? vprašaj.

http://www.test.com/index.htm?name1=value1&name2=value2

  • Metoda GET ustvari dolg niz, ki se prikaže v dnevnikih vašega strežnika v polju »Lokacija« brskalnika.
  • Metoda GET je omejena na pošiljanje do 1024 znakov.
  • Nikoli ne uporabljajte metode GET, če imate geslo ali druge občutljive podatke za pošiljanje strežniku.
  • GET ni mogoče uporabiti za prenos binarnih podatkov, kot so slike ali besedilni dokumenti, na strežnik.
  • Do podatkov, poslanih z metodo GET, lahko dostopate s spremenljivko okolja QUERY_STRING.
  • PHP ponuja asociativno polje $_GET za dostop do vseh poslanih informacij z uporabo metode GET.

if($_GET["name"] || $_GET["age"]) ( echo "Dobrodošli ". $_GET["name"]; echo "Ste ". $_GET["age"]. " let "; izhod(); )

ime: starost:

metoda POST

Metoda OBJAVI prenaša informacije prek glav HTTP. Informacije so kodirane, kot je opisano v primeru metode DOBITI, in postavljeno v glavo QUERY_STRING.

  • Metoda POST nima omejitev glede velikosti podatkov, ki jih je treba poslati.
  • Metodo POST je mogoče uporabiti za pošiljanje ASCII kot tudi binarnih podatkov.
  • Podatki, poslani z metodo POST, gredo skozi glavo HTTP, zato je varnost odvisna od protokola HTTP. Z uporabo Secure HTTP lahko zagotovite, da so vaši podatki zaščiteni.
  • PHP ponuja asociativno polje $_POST za dostop do vseh informacij, poslanih z metodo POST.

Poskusite z naslednjim primerom, tako da postavite izvorno kodo v skript test.php.

if($_POST["name"] || $_POST["age"]) ( if (preg_match("[^A-Za-z"-]",$_POST["name"])) ( die (" neveljavno ime in ime mora biti alfa"); ) echo "Dobrodošli ". $_POST["name"]; echo "Vi ste ". $_POST["age"]. " let."; exit(); )

ime: starost:

spremenljivka $_REQUEST

PHP spremenljivka $_REQUEST vsebuje vsebine, kot je $_GET, $_POST, torej $_COOKIE. Razpravljali bomo o spremenljivki $_COOKIE ko govorimo o piškotkih.

Spremenljivko PHP $_REQUEST je mogoče uporabiti za pridobitev rezultata iz podatkov obrazca, poslanih z metodama GET in POST.

Prva metoda za izvedbo zahteve PHP POST je uporaba file_get_contents. Druga metoda bo uporabljala fread v kombinaciji z nekaj drugimi funkcijami. Obe možnosti uporabljata funkcijo stream_context_create za izpolnjevanje zahtevanih polj glave zahteve.

Koda Razlaga

Spremenljivka $sPD vsebuje podatke za prenos. Biti mora v obliki niza zahteve HTTP, zato morajo biti nekateri posebni znaki kodirani.

Tako v funkciji file_get_contents kot v funkciji fread imamo dva nova parametra. Prvi je use_include_path. Ker postavljamo zahtevo HTTP, bo v obeh primerih napačna. Ko je za branje lokalnega vira nastavljeno na true, bo funkcija poiskala datoteko na include_path.

Drugi parameter je kontekst, ki je napolnjen s povratno vrednostjo stream_context_create, ki prevzame vrednost matrike $aHTTP.

Uporaba file_get_contents za izdelavo zahtev POST

Če želite poslati zahtevo POST z uporabo file_get_contents v PHP, morate uporabiti stream_context_create, da ročno izpolnite polja glave in določite, kateri "ovitek" uporabiti - v tem primeru HTTP:

$sURL = "http://brugbart.com/Examples/http-post.php"; // URL OBJAVE $sPD = "name=Jacob&bench=150"; // Podatki POST $aHTTP = array("http" => // Ovoj, ki bo uporabljen array("method" => "POST", // Metoda zahteve // ​​Glave zahtev so nastavljene pod "header" => "Content" - tip: application/x-www-form-urlencoded", "content" => $sPD)); $context = stream_context_create($aHTTP); $contents = file_get_contents($sURL, false, $context); echo $contents;

Uporaba freada za izdelavo zahtev POST

Funkcijo fread lahko uporabite za izdelavo zahtev POST. Naslednji primer uporablja stream_context_create za sestavljanje potrebnih glav zahtev HTTP:

$sURL = "http://brugbart.com/Examples/http-post.php"; // URL OBJAVE $sPD = "name=Jacob&bench=150"; // Podatki POST $aHTTP = array("http" => // Ovoj, ki bo uporabljen array("method" => "POST", // Metoda zahteve // ​​Glave zahtev so nastavljene pod "header" => "Content" - tip: application/x-www-form-urlencoded", "content" => $sPD)); $context = stream_context_create($aHTTP); $handle = fopen($sURL, "r", false, $context); $vsebina = ""; medtem ko (!feof($handle)) ( $contents .= fread($handle, 8192); ) fclose($handle); echo $contents;

Izdelava GET zahtevkov s PHP

Zdaj se bomo osredotočili na uporabo fread in file_get_contents za prenos vsebine iz interneta prek HTTP in HTTPS. Če želite uporabiti metode, opisane v tem članku, morate omogočiti možnost fopen wrappers. Če želite to narediti, morate parameter allow_url_fopen nastaviti na On v datoteki php.ini.

Izvajanje zahtev POST in GET v PHP se uporablja za prijavo na spletna mesta, pridobivanje vsebine spletne strani ali preverjanje novih različic aplikacij. Opisali bomo, kako narediti preproste zahteve HTTP.

Uporaba freada za prenos ali prejemanje datotek prek interneta

Ne pozabite, da je branje spletne strani omejeno na dostopni del paketa. Zato morate uporabiti funkcijo stream_get_contents ( podobno file_get_contents) ali zanko while za branje vsebine v manjših kosih, dokler ni dosežen konec datoteke:

V tem primeru obdelave zahteve PHP POST je zadnji argument funkcije fread enak velikosti fragmenta. Na splošno ne sme biti večji od 8192 ( 8*1024 ).

Upoštevajte, da je lahko večji ali manjši in je lahko tudi omejen z nastavitvami sistema, v katerem se izvaja PHP.

Uporaba file_get_contents za pridobitev URL-ja spletnega mesta

To metodo je še enostavneje uporabljati pri branju datoteke prek HTTP-ja, saj vam ni treba skrbeti za branje v kosih – vse se izvaja v PHP-ju.

Ta publikacija je prevod članka “Making POST Requests With PHP”, ki ga je pripravila prijazna projektna ekipa

PHP je trenutno eden najbolj priljubljenih jezikov za implementacijo spletnih aplikacij. Ta tečaj je namenjen preučevanju njegovih osnov. Poudarek je na praktični uporabi pridobljenih veščin.

Jezik PHP je bil ustvarjen za reševanje določenega praktičnega problema na internetu (katerega lahko izveste ob branju prvega predavanja predmeta). Trudili se bomo tudi, da nas teoretično razmišljanje ne bo preveč zamotilo, in se bomo na vsakem predavanju trudili rešiti določen problem. Večina primerov je vzetih iz resničnega sistema: virtualnega muzeja zgodovine računalništva. Prvi del predmeta je namenjen študiju osnov sintakse in kontrolnih struktur. Po tem se tehnologija odjemalec-strežnik šteje za glavno področje uporabe jezika PHP. Nato preidemo na preučevanje najbolj uporabnih vgrajenih funkcij po našem mnenju in reševanje praktičnih problemov z njihovo pomočjo. Čeprav objektni model v jeziku PHP ni najbogatejši, njegova osnovna prisotnost omogoča naraven opis objektnih podatkovnih modelov. Kot osnovni model bo obravnavan dokumentni model virtualnega muzeja računalništva. Po tem bodo obravnavani številni uporabni vidiki: delo z datotečnim sistemom, z bazo podatkov, nizi, sejami, DOM XML - vse to nam bo omogočilo, da razmislimo o ključnih nalogah praktične uporabe jezika.

Kot je razvidno iz zgornje tabele, strežnik Apache zaseda vodilno mesto. Vse, kar bomo kdaj rekli o spletnih strežnikih, je osredotočeno na Apache, razen če ni drugače navedeno. O tem, kako ga namestiti na svoj računalnik, smo govorili že na prvem predavanju. In zdaj, kot smo obljubili, se obrnemo na protokol HTTP.

HTTP protokol in načini prenosa podatkov na strežnik

Internet je zgrajen na večplastnem principu, od fizične plasti, ki se ukvarja s fizičnimi vidiki prenosa binarnih informacij, do aplikacijske plasti, ki zagotavlja vmesnik med uporabnikom in omrežjem.

HTTP (HyperText Transfer Protocol) je protokol aplikacijskega sloja, zasnovan za izmenjavo hiperbesedilnih informacij na internetu.

HTTP nudi nabor metod za določanje namena zahteve, poslane strežniku. Te metode temeljijo na referenčni disciplini, kjer se univerzalni identifikator vira, bodisi kot univerzalni lokator vira (URL) ali univerzalno ime vira, uporablja za označevanje vira, za katerega naj se metoda uporabi. ,URN).

Sporočila po omrežju pri uporabi protokola HTTP se prenašajo v formatu, podobnem formatu sporočil internetne pošte (RFC-822) ali formatu sporočil MIME (Multipurpose Internet Mail Exchange).

HTTP se uporablja za komunikacijo med različnimi uporabniškimi programi in prehodnimi programi, ki omogočajo dostop do obstoječih internetnih protokolov, kot so SMTP (E-poštni protokol), NNTP (Protokol za prenos novic), FTP (Protokol za prenos datotek), Gopher in WAIS. HTTP je zasnovan tako, da takim prehodom omogoča prenos podatkov prek proxy strežnikov brez izgub.

Protokol izvaja princip zahteva/odgovor. Zahtevajoči program - odjemalec sproži interakcijo z odzivnim programom - strežnikom in pošlje zahtevo, ki vsebuje:

Način dostopa;

URI naslov;

Različica protokola;

Sporočilo (po obliki podobno MIME), ki vsebuje informacije o vrsti podatkov, ki se prenašajo, informacije o odjemalcu, ki je poslal zahtevo, in po možnosti vsebino (telo) sporočila.

Odgovor strežnika vsebuje:

Statusna vrstica, ki vključuje različico protokola in povratno kodo (uspeh ali napaka);

Sporočilo (v obliki, podobni MIME), ki vključuje informacije o strežniku, meta informacije (to je informacije o vsebini sporočila) in telo sporočila.

Protokol ne določa, kdo naj odpre in zapre povezavo med odjemalcem in strežnikom. V praksi običajno povezavo odpre odjemalec, strežnik pa po poslanem odgovoru sproži njeno prekinitev.

Oglejmo si podrobneje obliko, v kateri so zahteve poslane strežniku.

Obrazec za zahtevo stranke

Odjemalec pošlje zahtevo strežniku v eni od dveh oblik: polni ali skrajšani. Zahtevo v prvi obliki imenujemo popolna zahteva, v drugi obliki pa preprosta zahteva.

Preprosta zahteva vsebuje način dostopa in naslov vira. Formalno lahko to zapišemo takole:

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

Metoda je lahko GET, POST, HEAD, PUT, DELETE in druge. O najpogostejših med njimi bomo govorili malo kasneje. Zahtevani URI je največkrat URL vira.

Primer preproste zahteve:

PRIDOBITE http://phpbook.info/

Tukaj je GET metoda dostopa, tj. metoda, ki jo je treba uporabiti za zahtevani vir, in http://phpbook.info/ je URL zahtevanega vira.

Popolna zahteva vsebuje statusno vrstico, več glav (glava zahteve, splošna glava ali glava vsebine) in po možnosti telo zahteve. Formalno lahko splošno obliko popolne zahteve zapišemo na naslednji način:

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

Oglati oklepaji tukaj označujejo neobvezne elemente glave, alternativne možnosti pa so navedene skozi navpično vrstico. Element<Строка состояния>vsebuje metodo zahteve in URI vira (tako kot preprosta zahteva) ter poleg tega različico uporabljenega protokola HTTP. Če želite na primer poklicati zunanji program, lahko uporabite to vrstico stanja:

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

V tem primeru se uporablja metoda POST in HTTP različice 1.0.

Pri obeh oblikah zahteve ima URI zahtevanega vira pomembno vlogo. Najpogostejši URI se uporablja v obliki URL-ja vira. Pri dostopu do strežnika lahko uporabite tako polno kot poenostavljeno obliko URL-ja.

Celoten obrazec vsebuje vrsto dostopovnega protokola, naslov strežnika vira in naslov vira na strežniku (slika 4.2).

V skrajšani obliki sta protokol in naslov strežnika izpuščena, označuje pa le lokacijo vira iz korena strežnika. Polni obrazec se uporabi, če je možno zahtevo posredovati drugemu strežniku. Če delo poteka samo z enim strežnikom, se pogosto uporablja skrajšana oblika.


riž. 4.2. Celoten obrazec URL

Metode

Kot že omenjeno, se mora vsaka zahteva odjemalca strežniku začeti s specifikacijo metode. Metoda sporoča namen odjemalčeve zahteve. Protokol HTTP podpira kar nekaj metod, vendar se dejansko uporabljajo samo tri: POST, GET in HEAD. Metoda GET vam omogoča, da pridobite vse podatke, ki jih identificira URI v zahtevi za vir. Če URI kaže na program, potem je vrnjen rezultat delovanja programa in ne njegovo besedilo (če seveda ni besedilo rezultat njegovega delovanja). Dodatne informacije, potrebne za obdelavo zahteve, so vgrajene v samo zahtevo (v statusni vrstici). Pri uporabi metode GET so dejanske zahtevane informacije (na primer besedilo dokumenta HTML) vrnjene v polje telesa vira.

Obstaja različica metode GET - pogojni GET. Ta metoda sporoči strežniku, da je treba na zahtevo odgovoriti le, če je pogoj v polju if-Modified-Since v glavi zahteve resničen. Natančneje, telo vira se posreduje kot odgovor na zahtevo, če je bil vir spremenjen od datuma, določenega v if-Modified-Since.

Metoda HEAD je podobna metodi GET, vendar ne vrne telesa vira in nima pogojnega dvojnika. Metoda HEAD se uporablja za pridobivanje informacij o viru. To je lahko koristno na primer pri reševanju problema testiranja hiperbesedilnih povezav.

Metoda POST je zasnovana za prenos informacij na strežnik, kot so opombe virov, novice in e-poštna sporočila, podatki, ki jih je treba dodati v bazo podatkov, tj. za prenos velikih količin in zelo pomembnih informacij. Za razliko od metod GET in HEAD POST prenese telo vira, ki so informacije, prejete iz polj obrazca ali drugih vhodnih virov.

Do sedaj smo le teoretizirali in se seznanjali z osnovnimi pojmi. Zdaj je čas, da se naučimo vse to uporabiti v praksi. V nadaljevanju predavanja si bomo ogledali, kako poslati zahteve strežniku in kako obdelati njegove odgovore.

Uporaba obrazcev HTML za pošiljanje podatkov v strežnik

Kako prenesti podatke na strežnik? V ta namen ima jezik HTML posebno konstrukcijo – forme. Obrazci so namenjeni prejemanju informacij od uporabnika. Na primer, poznati morate uporabniško ime in geslo, da ugotovite, do katerih strani spletnega mesta lahko dostopa. Ali pa potrebujete osebne podatke uporabnika, da lahko z njim vzpostavite stik. Obrazci se uporabljajo ravno za vnos takih podatkov. Vanje lahko vnesete besedilo ali izberete ustrezne možnosti s seznama. Podatki, zapisani v obrazcu, se pošljejo v obdelavo posebnemu programu (na primer PHP skript) na strežniku. Glede na podatke, ki jih vnese uporabnik, lahko ta program ustvari različne spletne strani, pošilja poizvedbe v podatkovno bazo, zažene različne aplikacije itd.

Razumejmo sintakso obrazcev HTML. Mnogi ga morda poznajo, vendar bomo vseeno ponovili glavne točke, ker je pomemben.

Torej, za ustvarjanje obrazca v HTML se uporablja oznaka FORM. V njem je en ali več ukazov INPUT. Z uporabo atributov akcije in metode oznake FORM določite ime programa, ki bo obdelal podatke obrazca oziroma metodo zahteve. Ukaz INPUT podaja vrsto in različne značilnosti zahtevanih informacij. Podatki obrazca se pošljejo po pritisku gumba za vnos vrste oddaje. Izdelajmo obrazec za prijavo udeležencev v dopisno šolo programiranja.

Ko jo brskalnik obdela, bo ta datoteka videti nekako takole:


riž. 4.3. Primer html obrazca

Tako nastanejo in izgledajo obrazci HTML. Domnevali bomo, da smo se jih naučili ali spomnili, kako jih ustvariti. Kot lahko vidimo, lahko v obrazcu določite način prenosa podatkov. Poglejmo, kaj se zgodi, če določite metodo GET ali POST, in kakšna bo razlika.

Za metodo GET

Pri oddaji podatkov obrazca z metodo GET je vsebina obrazca pripeta URL-ju za vprašajem kot pari ime=vrednost, povezani z znakom &:

dejanje?ime1=vrednost1&ime2=vrednost2&ime3=vrednost3

Tukaj je dejanje URL programa, ki bi moral obdelati obrazec (bodisi program, naveden v atributu dejanja oznake obrazca, bodisi sam trenutni program, če je ta atribut izpuščen). Imena ime1, ime2, ime3 ustrezajo imenom elementov obrazca, vrednost1, vrednost2, vrednost3 pa ustrezajo vrednostim teh elementov. Vsi posebni znaki, vključno z = in &, bodo izpuščeni iz teh imen ali vrednosti parametrov. Zato teh simbolov in ciriličnih znakov ne smete uporabljati v identifikatorjih v imenih ali vrednostih elementov obrazca.

Če v polje za vnos vnesete servisni znak, bo ta poslan v šestnajstiški kodi, na primer simbol $ bo zamenjan z %24. Na enak način se prenašajo tudi ruske črke.

Za polja za vnos besedila in gesla (to so vnosni elementi z atributoma type=text in type=password) bo vrednost enaka tisti, ki jo uporabnik vnese. Če uporabnik v tako polje ne vnese ničesar, bo element name= prisoten v nizu poizvedbe, kjer ime ustreza imenu tega elementa obrazca.

Za gumbe potrditvenih polj in izbirnih gumbov je vrednost določena z atributom VALUE, ko je gumb označen. Nepreverjeni gumbi so pri sestavljanju poizvedbenega niza v celoti prezrti. Več gumbov potrditvenih polj ima lahko isti atribut NAME (in različne VREDNOSTI), če je potrebno. Gumbi tipa radio button so namenjeni eni od vseh ponujenih opcij in morajo zato imeti enak atribut NAME in različne atribute VALUE.

Za prenos podatkov z metodo GET načeloma ni treba ustvariti obrazca HTML. V niz URL lahko preprosto dodate želene spremenljivke in njihove vrednosti.

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

V zvezi s tem ima prenos podatkov z metodo GET eno pomembno pomanjkljivost - vsakdo lahko ponaredi vrednosti parametrov. Zato ne priporočamo uporabe te metode za dostop do strani, zaščitenih z geslom, ali za prenos informacij, ki vplivajo na varnost programa ali strežnika. Poleg tega ne smete uporabljati metode GET za prenos informacij, ki jih uporabnik ne sme spreminjati.

Kljub vsem tem pomanjkljivostim je uporaba metode GET precej priročna pri odpravljanju napak v skriptih (takrat lahko vidite vrednosti in imena spremenljivk, ki se posredujejo) in za posredovanje parametrov, ki ne vplivajo na varnost.

Za metodo POST

Vsebina obrazca je kodirana na povsem enak način kot za metodo GET (glejte zgoraj), vendar se namesto dodajanja niza URL-ju vsebina zahteve pošlje kot blok podatkov kot del operacije POST. Če je prisoten atribut ACTION, potem tam najdena vrednost URL določa, kam poslati ta blok podatkov. Ta način, kot smo že omenili, priporočamo za prenos velikih podatkovnih blokov.

Informacije, ki jih vnese uporabnik in pošlje strežniku z metodo POST, se na standardnem vhodu posredujejo programu, ki ga določa atribut dejanja, ali trenutnemu skriptu, če je ta atribut izpuščen. Dolžina poslane datoteke je posredovana v spremenljivki okolja CONTENT_LENGTH, vrsta podatkov pa v spremenljivki CONTENT_TYPE.

Podatke lahko pošljete samo z metodo POST z obrazcem HTML, saj se podatki pošljejo v telesu zahteve in ne v glavi, kot je GET. V skladu s tem lahko spremenite vrednost parametrov samo tako, da spremenite vrednost, vneseno v obrazec. Pri uporabi POST uporabnik ne vidi podatkov, poslanih strežniku.

Glavna prednost zahtev POST je njihova večja varnost in funkcionalnost v primerjavi z zahtevami GET. Zato se metoda POST pogosteje uporablja za prenos pomembnih informacij, pa tudi obsežnih informacij. Vendar se ne smete povsem zanašati na varnost tega mehanizma, saj je mogoče podatke zahteve POST tudi ponarediti, na primer tako, da ustvarite datoteko HTML na vašem računalniku in jo izpolnite s potrebnimi podatki. Poleg tega vsi odjemalci ne morejo uporabljati metode POST, kar omejuje primere njene uporabe.

Pri pošiljanju podatkov strežniku na kateri koli način se ne prenašajo le podatki, ki jih vnese uporabnik, temveč tudi številne spremenljivke, imenovane spremenljivke okolja, ki označujejo odjemalca, njegovo zgodovino delovanja, poti datotek itd. Tukaj je nekaj spremenljivk okolja:

REMOTE_ADDR – IP naslov gostitelja (računalnika), ki pošilja zahtevo;

REMOTE_HOST – ime gostitelja, s katerega je bila poslana zahteva;

HTTP_REFERER – naslov strani, ki se povezuje s trenutnim skriptom;

REQUEST_METHOD – metoda, ki je bila uporabljena pri pošiljanju zahteve;

QUERY_STRING – informacije, ki se nahajajo v URL-ju za vprašajem;

SCRIPT_NAME – navidezna pot do programa, ki naj se izvede;

HTTP_USER_AGENT – informacije o brskalniku, ki ga odjemalec uporablja

Doslej smo omenili le, da se zahteve odjemalcev obdelujejo na strežniku s posebnim programom. Pravzaprav lahko ta program napišemo sami, tudi v PHP, in s prejetimi podatki bo počel, kar želimo. Če želite napisati ta program, se morate seznaniti z nekaterimi pravili in orodji, ki jih PHP ponuja za ta namen.

Znotraj skripta PHP obstaja več načinov za dostop do podatkov, ki jih pošilja odjemalec prek HTTP. Pred PHP 4.1.0 je bil dostop do takih podatkov izveden z imeni prenesenih spremenljivk (ne pozabite, da se podatki prenašajo v obliki parov "ime spremenljivke, simbol "=", vrednost spremenljivke"). Tako, če je bilo na primer posredovano first_name=Nina, se je znotraj skripta pojavila spremenljivka $first_name z vrednostjo Nina. Če je bilo treba razlikovati, na kakšen način so bili podatki preneseni, so bili uporabljeni asociativni nizi $HTTP_POST_VARS in $HTTP_GET_VARS, katerih ključi so bili imena prenesenih spremenljivk, vrednosti pa so bile vrednosti ​teh spremenljivk. Torej, če je par first_name=Nina posredovan z metodo GET, potem $HTTP_GET_VARS["first_name"]="Nina".

Uporaba imen posredovanih spremenljivk neposredno v programu ni varna. Zato je bilo odločeno, začenši s PHP 4.1.0, za uporabo posebne matrike – $_REQUEST – za dostop do spremenljivk, poslanih prek zahtev HTTP. Ta niz vsebuje podatke, prenesene z metodama POST in GET ter s piškotki HTTP. To je superglobalni asociativni niz, tj. njegove vrednosti je mogoče pridobiti kjer koli v programu z uporabo imena ustrezne spremenljivke (element obrazca) kot ključa.

Primer 4.2. Recimo, da smo ustvarili obrazec za prijavo udeležencev v dopisno šolo programiranja, kot v zgornjem primeru. Nato lahko v datoteko 1.php, ki obdeluje ta obrazec, zapišete naslednje:

$str = "Pozdravljeni,
".$_REQUEST["ime"]. "
".$_REQUEST["priimek"]."!
";
$str .="Izbrali ste študij tečaja v
".$_REQUEST["kurs"];
echo $str;
?>

Nato, če smo v obrazec vnesli ime “Vasya”, priimek “Petrov” in med vsemi tečaji izbrali tečaj PHP, bomo na zaslonu brskalnika prejeli naslednje sporočilo:

Pozdravljeni, Vasya Petrov!

Po uvedbi matrike $_REQUEST sta bili matriki $HTTP_POST_VARS in $HTTP_GET_VARS zaradi doslednosti preimenovani v $_POST oziroma $_GET, vendar sami nista izginili iz uporabe zaradi združljivosti s prejšnjimi različicami PHP. Za razliko od svojih predhodnikov sta matriki $_POST in $_GET postali superglobalni, tj. dostopen neposredno in znotraj funkcij in metod.

Dajmo primer uporabe teh nizov. Recimo, da moramo obdelati obrazec, ki vsebuje vhodne elemente z imenom first_name, last_name, kurs (na primer obrazec.html zgoraj). Podatki so bili preneseni z metodo POST in podatkov, prenesenih z drugimi metodami, ne želimo obdelovati. To je mogoče storiti na naslednji način:

$str = "Pozdravljeni,
".$_POST ["ime"]."
".$_POST ["priimek"] ."!
";
$str .= "Izbrali ste študij na ".
$_POST["kurs"];
echo $str;
?>

Če smo nato na zaslonu brskalnika vnesli ime “Vasya”, priimek “Petrov” in med vsemi tečaji izbrali tečaj PHP, bomo videli sporočilo, kot v prejšnjem primeru:

Pozdravljeni, Vasya Petrov!
Odločili ste se za tečaj PHP

Da bi ohranili zmožnost obdelave skriptov, starejših od PHP 4.1.0, je bila uvedena direktiva register_globals, ki omogoča ali zavrača dostop do spremenljivk neposredno po njihovih imenih. Če je parameter register_globals=On v datoteki z nastavitvami PHP, lahko do spremenljivk, posredovanih strežniku z metodama GET in POST, dostopate preprosto z njihovimi imeni (tj. lahko napišete $first_name). Če register_globals=Off, potem morate napisati $_REQUEST["first_name"] ali $_POST["first_name"], $_GET["first_name"], $HTTP_POST_VARS["first_name"], $HTTP_GET_VARS["first_name"]. Z varnostnega vidika je bolje onemogočiti to direktivo (tj. register_globals=Off). Z omogočeno direktivo register_globals bodo zgoraj navedeni nizi vsebovali tudi podatke, ki jih posreduje odjemalec.

Včasih morate poznati vrednost spremenljivke okolja, kot je metoda, uporabljena za pošiljanje zahteve, ali naslov IP računalnika, ki je poslal zahtevo. Te informacije lahko dobite s funkcijo getenv(). Vrne vrednost spremenljivke okolja, katere ime ji je posredovano kot parameter.

getenv("REQUEST_METHOD");
// vrne uporabljeno metodo
echo getenv("REMOTE_ADDR");
// bo prikazal uporabnikov naslov IP,
// kdo je poslal zahtevo
?>

Kot smo rekli, če je uporabljena metoda GET, se podatki prenesejo z dodajanjem poizvedbenega niza v obliki parov variable_name=value URL-ju vira. Karkoli za vprašajem v URL-ju je mogoče pridobiti z ukazom

getenv("QUERY_STRING");

Zahvaljujoč temu je mogoče z metodo GET prenesti podatke v kakšni drugi obliki. Na primer, z znakom plus lahko določite samo vrednosti več parametrov, v skriptu pa lahko poizvedbeni niz razčlenite na dele ali pa posredujete vrednost samo enega parametra. V tem primeru se bo v matriki $_GET pojavil prazen element s ključem, ki je enak tej vrednosti (celoten poizvedbeni niz), znak »+« v poizvedbenem nizu pa bo nadomeščen s podčrtajem »_«.

Pri metodi POST se podatki prenašajo samo s pomočjo obrazcev, uporabnik (odjemalec) pa ne vidi, kateri podatki so poslani na strežnik. Če jih želi videti, mora heker zamenjati naš obrazec s svojim. Nato bo strežnik poslal rezultate obdelave nepravilnega obrazca na napačno mesto. Da bi se temu izognili, lahko preverite naslov strani, s katere so bili poslani podatki. To lahko storite znova s ​​funkcijo getenv():

getenv("HTTP_REFERER");

Zdaj je čas, da rešimo problem, ki smo ga zastavili na začetku predavanja.

Primer obdelave zahteve s pomočjo PHP

Spomnimo se, kakšna je bila naloga, in pojasnimo njeno formulacijo. Za prijavo udeležencev v dopisno šolo programiranja morate napisati obrazec in po prijavi poslati udeležencu sporočilo. To sporočilo smo poimenovali univerzalno pismo, vendar se bo nekoliko razlikovalo od pisma, ki smo ga sestavili v prejšnjem predavanju. Tukaj prav tako ne bomo pošiljali ničesar po e-pošti, da ne bi bili podobni pošiljateljem neželene pošte, ampak bomo preprosto ustvarili to sporočilo in ga prikazali na zaslonu brskalnika. Začetno različico registracijskega obrazca smo že posredovali zgoraj. Spremenili ga bomo tako, da si bo lahko vsak prijavitelj izbral toliko tečajev, kolikor jih bo želel obiskovati, in ne bomo potrdili prejema vpisnice.

Tukaj je vse precej preprosto in jasno. Edina stvar, ki jo je treba upoštevati, je način posredovanja vrednosti elementa potrditvenega polja. Če v ime elementa zapišemo kurs, to pomeni, da bo prvi označeni element potrditvenega polja zapisan v prvi element matrike kurs, drugi označeni element polja bo zapisan v drugi element polja itd. Seveda lahko preprosto poimenujete elemente potrditvenega polja, vendar bo to zapletlo obdelavo podatkov, če je tečajev veliko.

Skript, ki bo vse to razčlenil in obdelal, se imenuje 1.php (obrazec se nanaša posebej na to datoteko, kar je zapisano v njenem atributu action). Privzeto se za prenos uporablja metoda GET, podali pa smo POST. Na podlagi podatkov, prejetih od registrirane osebe, skripta ustvari ustrezno sporočilo. Če je oseba izbrala nekaj tečajev, bo prejela sporočilo o uri izvajanja in predavateljih, ki jih izvajajo. Če oseba ni izbrala ničesar, se prikaže sporočilo o naslednjem srečanju Dopisne šole programerjev (ZSH).

HTML obrazci omogočajo pošiljanje uporabniško vnesenih podatkov na strežnik, kjer jih je možno nadalje obdelati. Vzdrževanje obrazca poteka v dveh fazah. Obrazec je treba najprej predstaviti uporabniku, ki ga izpolni s svojimi podatki in nato odda na strežnik. Vsak obrazec ima ciljno spletno stran, ki jo je treba naložiti za obdelavo podatkov, ki jih pošlje uporabnik. To je pogosto ista skriptna datoteka, ki generira obrazec. V tem primeru koda PHP preprosto preveri podatke v obrazcu, da ugotovi, ali naj znova pokliče skript za ustvarjanje obrazca ali začne obdelovati prejete podatke.

Pozor! Lekcija je zastarela. Nove lekcije o tej temi so v tečaju PHP za začetnike.

V večini primerov pošiljanje obrazcev strežniku vključuje neke vrste delo z bazo podatkov. Operacija iskanja po bazi podatkov je na primer nujno dejanje za najrazličnejše aplikacije, pa naj bo to iskanje po forumih, uporabnikih ali spletnem dnevniku. V vsakem primeru lahko ta operacija uporabniku olajša življenje. Ker Na tej točki se še nismo seznanili z interakcijo PHP in MySQL DBMS, v tem članku si bomo ogledali preproste primere obdelave obrazcev, moja glavna naloga pa je pokazati, kako se informacije prenašajo z jezikom PHP .

Prenos informacij z uporabo jezika PHP

V tem razdelku so osnovne informacije o tem, kako je mogoče podatke prenašati med spletnimi stranmi. Nekatere od teh informacij se ne nanašajo izključno na tehnologijo PHP, temveč opisujejo interakcijo orodij PHP in HTML ali zadevajo sam protokol HTTP.

Pomanjkanje državne podpore v protokolu HTTP

Najpomembnejša značilnost katere koli spletne tehnologije, ki jo je treba vedno imeti v mislih, je, da je sam protokol HTTP brez stanja. To pomeni, da je vsaka zahteva HTTP (ki v večini primerov pomeni zahtevo za sprejem in dostavo enega vira, kot je stran HTML, datoteka .jpg, slogovni list itd.) neodvisna od vseh drugih zahtev, ne vključuje vse podatke o identifikaciji stranke in ne pušča sledi v pomnilniku računalnika.

Tudi če je stran zasnovana tako, da navigacija, tj. prehod z ene strani na drugo poteka strogo v eni smeri (recimo, da stran 1 vodi le do strani 2, ki vodi samo do strani 3 itd.), orodja za podporo protokolu HTTP nimajo informacij in ne upoštevajo, da uporabnik ogled strani 2 je moral predhodno obiskati stran 1. Ne morete dodeliti vrednosti spremenljivki na strani 1 in pričakovati, da bo uvožena na stran 2 s samim HTML-jem. Kodo HTML lahko uporabite za prikaz obrazca in to kodo lahko uporabite celo za vnos informacij, toda razen če se uporabi kakršen koli dodaten način za prenos vnesenih informacij na drugo stran ali program, bo vrednost, dodeljena spremenljivki, po premikanju preprosto izginila na drugo stran.

Tehnologije za obdelavo obrazcev, kot je PHP, so zasnovane za reševanje točno tega problema. PHP vam omogoča, da prestrežete vrednost spremenljivke, ki se prenaša s prejšnje strani na naslednjo, in to vrednost naredite na voljo za kasnejšo uporabo. Izkazalo se je, da tehnologija PHP omogoča izjemno dobro izvajanje tovrstnih funkcij prenosa podatkov, tako da vam omogoča hitro in preprosto uvajanje potrebnih orodij za reševanje najrazličnejših težav, povezanih z zagotavljanjem delovanja spletnega mesta.

Obrazci HTML zagotavljajo priročen način za prenos majhnega števila vrednosti z dane strani na katero koli drugo stran na spletnem mestu. Obstajajo tudi drugi načini za ohranjanje stanja med številnimi ogledi strani, ki so dolgotrajnejši, kot so piškotki in seje, o čemer bomo govorili v prihodnjem članku. Ta članek se osredotoča predvsem na najenostavnejše načine prenosa informacij med spletnimi stranmi, ki uporabljajo metode GET in POST v kombinaciji s protokolom HTTP za ustvarjanje dinamično generiranih strani in obdelavo podatkov obrazcev.

GET parametre

Metoda GET posreduje parametre s prejšnje strani na naslednjo kot del poizvedbenega niza, ki je predstavljen v obliki URI enotnega identifikatorja vira. Ko za obdelavo obrazca uporabite metodo GET, URL-ju, identificiranemu z atributom dejanja obrazca, sledi vprašaj za ločilom, ki mu sledi podano ime(-a) spremenljivke in vrednost(-e), nato pa je celoten niz posredovano agentu za obdelavo (v tem primeru spletnemu strežniku).

Spodaj je primer obrazca HTML, ki uporablja metodo GET (vnesite to oznako in shranite datoteko kot sportselect.html):

Osnove PHP

Izberite svoj najljubši šport

Ko uporabnik izbere in klikne gumb Pošlji, bo brskalnik povezal naslednje elemente v prikazanem vrstnem redu, brez presledkov med elementi:

  • URL v narekovajih za besedo action (http://localhost/sports.php).
  • Vprašaj (?), ki označuje, da naslednji znaki sestavljajo niz GET.
  • Ime spremenljivke, enačaj (=) in ustrezen parameter vrednosti (value=Hockey).
  • Ampersand (&), ki mu sledi par ime=vrednost (če obstaja).

Tako bo brskalnik ustvaril naslednji niz URL-ja:
http://localhost/sports.php?sport=Hokej

Brskalnik nato preusmeri dobljeni URL-niz znotraj lastnega naslovnega prostora kot novo zahtevo. Spodnji skript PHP (sports.php), ki mu je predložen obrazec, pridobi vrednosti spremenljivke GET iz zadnjega dela poizvedbenega niza, vstavi te spremenljivke in vrednosti spremenljivk v superglobalno matriko $_GET (ki bo opisano na kratko) in izvede nekaj potrebnih dejanj s temi vrednostmi; v tem primeru pride do vstavljanja v besedilni niz.

Spodaj je primer kode, ki prikazuje program za obravnavo obrazca PHP za zgornji obrazec HTML:

Najljubši šport

Vaš najljubši šport je

Upoštevajte, da je vrednost, vnesena v polje obrazca HTML z atributom name="sport" na prejšnji strani, zdaj na voljo kot spremenljivka PHP z imenom $_GET["sport"]. Naslednja slika prikazuje, kako deluje ta primer:

Zdaj moramo natančno razložiti, kako lahko dostopate do vrednosti, ki se prenašajo s strani na stran. Ta članek obravnava dve glavni metodi posredovanja vrednosti, uporabljenih v obrazcih - GET in POST. Vsaka metoda ima z njo povezano superglobalno matriko. Superglobalni nizi so podrobneje opisani v članku "Spremenljivke in konstante". Posebnost superglobalnih nizov od drugih nizov je prisotnost predpone v imenu v obliki podčrtaja.

Procesor obrazca dostopa do vsakega elementa, predloženega z metodo GET, z dostopom do matrike $_GET, do vsakega elementa, predloženega z metodo POST, pa z dostopom do matrike $_POST. Sintaktična struktura, ki se uporablja za dostop do katerega koli elementa superglobalnega polja, je preprosta in popolnoma enotna:

$_array_name["index_name"]

Tukaj je index_name del imena para ime-vrednost (za metodo GET) ali ime polja obrazca HTML (za metodo POST). Po prejšnjem primeru $_GET["sport"] podaja vrednost izbranega elementa obrazca z imenom "sport"; ta vrednost je bila posredovana z operacijo GET, izvedeno na izvirni datoteki. Upravljavec obrazca mora uporabiti matriko, ki ustreza metodi, s katero so bili podatki predloženi. Natančneje, v tem primeru je vrednost $_POST["sport"] nedefinirana, ker prvotni obrazec ni poslal nobenih podatkov z metodo POST.

Metoda obdelave obrazca GET ima eno pomembno prednost pred metodo POST - dejansko vam omogoča, da vsakič ustvarite nov poizvedbeni niz URL-ja, ki ustreza trenutni situaciji. Uporabniki lahko to stran nato dodajo med zaznamke. Po drugi strani pa rezultatov oddaje obrazcev z metodo POST ni mogoče dodati med zaznamke.

Samo zato, ker je želeno funkcionalnost mogoče doseči z uporabo parametrov GET, še ne pomeni, da je treba uporabiti metodo GET. Slabosti metode GET, ki jih najdemo v večini vrst obdelave obrazcev, so tako pomembne. Prvotna delovna specifikacija HTML 4.0, objavljena leta 1997, te metode ni priporočala. Spodaj so navedene glavne slabosti metode GET:

  • Metoda GET ni uporabna za ustvarjanje registracijskih oken, saj sta uporabniško ime in geslo v celoti vidna na zaslonu, možno pa je tudi, da se ti podatki shranijo v pomnilnik odjemalčevega brskalnika kot informacija o obiskani strani.
  • Vsaka operacija prenosa GET, vključno s samim naborom podatkov, je zabeležena na spletnem strežniku.
  • Metoda GET dodeli podatke spremenljivki okolja strežnika, zato je dolžina URL-ja omejena. Morda ste že videli, kako izgledajo zelo dolgi URL-ji, če jih posredujete z metodo GET, in dejansko je malo verjetno, da bi kdo želel poslati 300-besedno besedilo HTML s to metodo.

Prvotna specifikacija HTML je določala, da dolžina poizvedbenega niza ne sme presegati 255 znakov. Seveda je bila ta omejitev kasneje odpravljena in je ostalo samo priporočilo, da se držimo omejitve 255 znakov, vendar lahko uporaba daljših vrstic vseeno povzroči motnje.

POST parametri

Trenutno je najprimernejši način pošiljanja podatkov obrazca POST (zlasti v primerih, ko izvajanje dejanj povzroči trajne spremembe, kot je vnos informacij v bazo podatkov). Nabor podatkov obrazca je vključen v telo obrazca, ko je obrazec preusmerjen na agenta za obdelavo (v tem primeru tolmača PHP). Niz URL-ja ni podvržen nobenim vidnim spremembam, ki bi odražale raznolikost podatkov, ki se prenašajo.

Med razvijalci je razširjeno neupravičeno prepričanje, da je metoda POST bolj varna kot GET. V resnici nobena metoda ni bolj ali manj varna od druge. Obiskovalec si lahko spremenljivke in podatke, poslane z metodo POST, ogleda enako dobro kot z metodo GET. Edina razlika je v tem, da v prvem primeru prenesenih podatkov ni v naslovni vrstici. Vendar to ne pomeni, da so skrite. Podatke, poslane z metodo POST, lahko uporabnik spletne strani pregleduje in spreminja.

Prvo in najpomembnejše pravilo programiranja, še posebej mrežnega programiranja, je naslednje:
Nikoli ne zaupajte vnesenim podatkom.

Vedno morate domnevati, da je obiskovalec morda zlonamerno ali celo pomotoma spremenil podatke, ki se posredujejo določeni aplikaciji, zato morate te podatke natančno preveriti.

Posredovani podatki obrazca so bolj ali manj varni le, če je zahteva zavarovana s SSL, TLS ali kakšno drugo metodo šifriranja. A podatki še vedno pridejo do končnega uporabnika oziroma obiskovalca v jasni obliki, tako da ima ta še vedno možnost pregledovati in tako ali drugače spreminjati podatke. Dejstvo je, da protokol SSL preprosto šifrira podatke, ki se prenašajo po omrežju, kar onemogoča ogled podatkov v čistem besedilu na stopnji njegovega prehoda od pošiljatelja do prejemnika. Kar zadeva zmožnost obiskovalca, da spremeni podatke obrazca, protokol SSL ne zagotavlja ničesar, kar bi to preprečilo.

Če želite spremeniti način prenosa podatkov v prejšnjem primeru, morate narediti naslednje spremembe:

...

Delo z več vrednostmi

Če ima obrazec potrditvena polja ali izbirne gumbe, se pojavi nova težava. Na primer, uporabnik lahko izbere dve vrednosti hkrati v obrazcu, vendar spremenljivka ne more shraniti več kot ene vrednosti, zato bo treba uporabiti matriko. To stanje je prikazano v spodnjem primeru:

" method="post">
Izberite svoje najljubše ljubljenčke

Izbrane živali: "; foreach ($animal kot $a) ( echo " ".htmlentitete($a).""; } } ?>

Ta obrazec omogoča uporabniku, da izbere svoje najljubše hišne ljubljenčke. V tem primeru lahko uporabnik označi več potrditvenih polj hkrati. To pomeni, da je treba pri obdelavi podatkov obrazca v skriptu PHP zagotoviti možnost dostopa do več vrednosti z enim imenom. Za ime v atributu imena smo postavili par oglatih oklepajev (), da lahko pošljemo več izbir kot niz. Če bi bili oglati oklepaji izpuščeni in bi uporabnik označil več potrditvenih polj, bi bil njihov izbor prepisan z zadnjim označenim potrditvenim poljem. Z oglatimi oklepaji za imenom smo nakazali, da je treba vrednosti shraniti kot matriko.

V upravljalniku je matrika shranjena v spremenljivki $animal in oštevilčena z uporabo zanke foreach, kot običajna matrika.

Preverjanje obrazca in oblikovanje spremenljivk obrazca

Ko aplikacija prejme podatke od uporabnika, mora vsakokrat preveriti njihovo pravilnost. Če ne preverite podatkov, ki jih vnese uporabnik, lahko naletite na številne težave, vključno z varnostnimi tveganji. Preverjanje preteklosti ni tako težko, kot se morda zdi.

Za uporabnike je bolj priročno, da preverijo na strani odjemalca z uporabo JavaScripta, vendar ne glede na to, ali se to preverjanje uporablja, je treba izvesti preverjanje na strani strežnika.

Druga stvar, ki jo je treba upoštevati pri ustvarjanju obrazcev HTML, je, da če mora obrazec prikazati vnaprej izpolnjen vnos, mora biti nastavljen atribut vrednosti. To še posebej velja za dve vrsti obrazcev – tiste, ki se uporabljajo za urejanje podatkov, prejetih iz zbirke podatkov, in tiste, ki so namenjeni morebitni večkratni predložitvi podatkov. Slednji primer je zelo pogost v situacijah, ko je treba obrazec ponovno prikazati, potem ko so odkrite napake v že vnaprej izpolnjenih podatkih. Primer bi bil obrazec za registracijo, ki ne sprejema podatkov v obdelavo, dokler uporabnik ne posreduje veljavnega e-poštnega naslova ali drugih zahtevanih podatkov.

Spodnji primer prikazuje, kako obdelati obrazec, vključno s preverjanjem na strani strežnika in obdelavo na isti strani obrazca:

Osnove PHP

" method="post">
Kontaktni podatki "razred="">
"razred="">

Ta primer uporablja funkcijo filter_var(), ki preizkusi spremenljivko s filtrom in sprejme dva parametra – izvorni niz in konstanto, ki označuje vrsto filtra. Poleg preverjanja e-poštnih naslovov (FILTER_VALIDATE_EMAIL) ta funkcija podpira naslednje konstante: FILTER_VALIDATE_URL - preveri vrednost za pravilnost URL-ja (na primer), FILTER_VALIDATE_IP - preveri vrednost za pravilnost naslovov IP, FILTER_VALIDATE_REGEXP - preveri vrednost za pravilnost sintakse regularnega izraza in več drugih konstant, ki so alternative funkcijam is_bool(), is_float(), is_int() itd.

Ta in naslednji razdelki bodo na kratko opisali, kako ustvariti osnovne spletne aplikacije s PHP. Kar je bilo obravnavano v razdelku, očitno ni dovolj, da bi vaša aplikacija komunicirala z uporabnikom in se oblikovala glede na dejanja, ki jih je izvedel, ali parametre, ki jih je vnesel. Kaj manjka? Ni dovolj znanja o tem, kako organizirati vnos uporabniških podatkov in prenos teh podatkov na strežnik. No, že morate imeti osnovno znanje o programski obdelavi informacij, prejetih na strežnik.

Metode zahtev HTTP in njihovi parametri

Vsaka dinamična spletna aplikacija generira odziv uporabniku v skladu s parametri, ki jih vnese, ali dejanji, ki jih izvaja na strani odjemalca. Vzpostavitev stika s strežnikom se najpogosteje zmanjša na dve vrsti zahtev: z uporabo metode GET ali metode POST. Nekaj ​​besed o razlikah med tema dvema vrstama zahtev.

Metoda GET:

    Parametri so posredovani v glavi zahteve HTTP, zato so vidni v ukazni vrstici, takšno zahtevo pa je mogoče shraniti kot zaznamke. Ker je skupna dolžina glave omejena, je omejeno tudi število in dolžina parametrov, posredovanih z GET.

    Menijo, da bi morali biti rezultati več identičnih zahtev GET, izvedenih zaporedoma, enaki.

Metoda POST:

    Parametri zahteve so posredovani v telesu zahteve HTTP, zato niso prisotni v ukazni vrstici. Število in velikost parametrov je neomejeno.

    Domneva se, da lahko rezultati več enakih zahtev POST vrnejo različne vrednosti, ker lahko spremenijo lastnosti ciljnega predmeta.

Metodo GET je treba uporabiti za pridobivanje vsebine informacijskega vira glede na parametre, kadar ni treba spreminjati podatkovnih struktur ciljnega vira in je smiselno zahtevo (URL) shraniti med zaznamke. Metoda GET je lahko hitrejša od podobnih zahtev z uporabo metode POST.

Metodo POST je treba uporabiti, ko morate skriti parametre, posredovane strežniku iz naslova URL. To metodo je treba uporabiti tudi v zahtevah za spremembe vsebine ciljnega vira, pri čemer posredujete opis teh sprememb v parametrih (v telesu zahteve).

Pot do vira?parameter1=value1¶meter2=value2&…

Če nimate posebnega obrazca HTML za izpolnjevanje parametrov, lahko razhroščite delovanje vaše aplikacije PHP tako, da posredujete testne parametre neposredno v ukazni vrstici brskalnika, na primer:

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

Za dostop do parametrov zahteve na strani strežnika morate uporabiti globalna polja $_GET in $_POST oz. Če je vaši aplikaciji vseeno, s katero metodo dostopa do nje, potem uporabite matriko $_REQUEST, ki združuje podatke polj $_GET in $_POST, na primer takole:

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

V tem primeru program ugotovi, ali je bil parameter »sql« predan: če da, dodeli njegovo vrednost ustrezni spremenljivki, če ni, ji dodeli prazno vrednost.

Določanje parametrov HTTP zahteve prek obrazca HTML

Seveda ročno določanje parametrov neposredno v ukazni vrstici brskalnika ni zelo priročno. Ta metoda je primerna za programsko izvajanje zahtev HTTP, ko spletne aplikacije komunicirajo med seboj. Za vnos in izvedbo začetnega preverjanja podatkov na strani odjemalca uporabite obrazce HTML in . Spodaj je primer najenostavnejšega obrazca, s katerim se vnese besedilni parameter (vrednost), ki se nato posreduje strežniku kot parameter metode POST.

metoda ="objava" ukrepanje =’sql.php’ > SQL:

Atribut metode elementa obrazca podaja metodo, ki določa način prenosa podatkov na strežnik (get ali post). Atribut dejanja določa php datoteko, ki bo obdelal zahtevo. Če bi morala biti obravnavalnik trenutna datoteka, potem atributa dejanja ni treba dodati. Za vse elemente, katerih vrednost je treba posredovati kot parameter zahteve HTTP, morate definirati enolično vrednost za atribut name. To je vrednost atributa ime bo kazalo v nizih $_GET, $_POST ali $_REQUEST (glejte primer zgoraj). Pritisk na gumb predložiti pošlje obrazec z vsemi vnesenimi vrednostmi na strežnik.