• Nem Talált Eredményt

Feltöltött állományok kezelése

6. Lecke: Kliensoldali adatok feldolgozása, állapotkezelés

6.4 Fájlok feltöltése

6.4.2 Feltöltött állományok kezelése

A kérésekkel érkező fájlokat ideiglenesen, véletlenszerűen generált egyedi névvel a php.ini-ben beállítható mappába (upload_tmp_dir) teszi a PHP. A fájlok leíró adatai a $_FILES asszociatív tömbbe kerülnek, aminek elemei az űrlap FILE típusú INPUT tagjeinek nevei lesznek. Az elemek szintén asszocia-tív tömbök, a fájl eredeti neve a ["name"], a mérete a ["size"], típusá-nak MIME-kódja a ["type"], az ideiglenes állomány jelenlegi útvonala pedig a [tmp_name] tömbelemben található. Az ["error"] elem a feltöltés hi-bakódját tartalmazza. A hibás feltöltést 0-tól eltérő érték jelezi.

Ha például az állományok mérete meghaladja a beállított limitet, ak-kor a hibakód 2.

126 Kliensoldali adatok feldolgozása, állapotkezelés

49. ábra Két feltöltött fájl adatai a $_FILES tömbben

A feltöltött fájlt a [tmp_name] tömbelemben található útvonalról kell a megfelelő helyre áthelyeznie a feldolgozó programnak.

50. ábra Feltöltést kezelő szkript

 A művelethez a PHP move_uploaded_file(forrás,cél) függvé-nyét használhatjuk. Az első paraméter az ideiglenes fájl teljes útvonala, a második a végleges állomány helye és neve. Utóbbi megadható abszo-lút és – a szkript mappájából induló – relatív útvonallal is.

A file_upload.php 10. sorában megvizsgáljuk, van-e feltöltött fájl, majd a

$destdir változóba tesszük a feltöltött fájlok végleges tárolására kiválasztott mappa nevét.

A 12. sorban kezdődő ciklus sorra veszi a feltöltött fájlokat. A $files cik-lusváltozóba minden egyes iterációban a soron következő fájl adatai kerülnek.

Ha az adott állomány feltöltésekor nem történt hiba (13. sor) akkor az $src változóba az ideiglenes útvonalat (14. sor), a $dest változóba pedig a célútvo-nalat tesszük (15. sor). A 16. sorban, move_upload_file() függvény segít-ségével kerül a helyére a fájl.

6.5 ÖSSZEFOGLALÁS, KÉRDÉSEK

6.5.1 Összefoglalás

Tananyagunk 6. leckéje a felhasználótól érkező adatok fogadásáról, feldol-gozásáról, és többállapotú alkalmazások állapotmegőrzéséről szólt.

A leckében megtanultuk, hogy a felhasználói oldalon a HTML FORM tagjével és az abba ágyazott elemekkel létrehozott űrlapokon van lehetőség. Az űrlap adatai név=érték formában kerülnek a szerverre. GET metódus esetén az URL-címhez kapcsolva, POST esetén pedig a kéréstestbe ágyazva.

A feltöltött adatokat FORM tag ACTION attribútumában jelzett szkript kapja meg. Az értékek a $_GET, illetve a $_POST asszociatív tömbökből olvas-hatók ki, és használolvas-hatók fel a szerver oldali alkalmazásban. Nagyon fontos, hogy a feltöltött adatokat mindig ellenőrizzük, és csak akkor használjuk fel, ha azok megfelelnek a programunk követelményeinek.

Ha olyan alkalmazást készítünk, ami több állapoton keresztül jut el a fela-dat megoldásához, akkor valamilyen technikával gondoskodnunk kell az utolsó állapot adatainak megőrzéséről. Erre a kliensnek küldött weblapok forrásában tárolódó rejtett INPUT-mezők, a cookie-k illetve a munkamenet kezelés ad lehe-tőséget.

A leghatékonyabb a sessionök kezelése, mert az állapotadatok biztonságo-san tárolódnak a szerveren, szerver oldali hozzáférés egyszerű, és bonyolult adatszerkezetek tárolására is van lehetőség. Ennek ellenére a három tanult technikát vegyesen szokták alkalmazni a webprogramozók.

6.5.2 Önellenőrző kérdések

1. Mi a különbség az űrlapadatok POST és a GET metódussal történő feltöltése között?

 A GET metódus esetén az URL-cím végéhez illesztve, a POST esetén pedig a kéréstestbe ágyazva jutnak a szerverre az adatok. A POST metódussal feltöltött ér-tékek rejtve maradnak a felhasználó előtt.

128 Kliensoldali adatok feldolgozása, állapotkezelés

2. Miért fontos a feltöltött adatok ellenőrzése?

 Azért mert a felhasználó által megadott hibás adatok kezeletlen állapotot idézhetnek elő a szerver oldali al-kalmazásban. Ez jó esetben csak hibaüzenetet, rossz esetben akár súlyos adatvesztést is okozhatnak.

3. Hogyan fér hozzá a szerver oldalon futó program a felhasználói felü-letről feltöltött adatokhoz?

 A POST metódussal feltöltött adatok a $_POST, a GET metódussal küldött változók pedig a $_GET asszociatív tömbökön keresztül válnak elérhetővé.

4. Hogyan küldhet cookie-ként tárolódó adatokat a böngészőnek?

 A setcookie(név, érték, lejárat, útvonal, domain) függ-vénnyel.

5. Mi a sessionök és a cookie-k használata közötti alapvető különbség?

 Az, hogy a cookie adatok a kliensoldalon, a felhasználó számítógépén lévő szövegfájlokban vannak, és a böngé-sző kezeli őket, a munkamenetek pedig a szerveren tá-rolódnak. A munkamenetet leíró adatok általában mun-kamenetfájlba kerülnek, de akár adatbázisban is tárolódhatnak.

7. LECKE: ALPROGRAMOK ÉS

PARAMÉTERÁTADÁS, BEÉPÍTETT FÜGGVÉNYEK

7.1 CÉLKITŰZÉSEK ÉS KOMPETENCIÁK

Az előző fejezetben láthattuk, hogy még egy egyszerű feladat megoldása is jelentős méretű programkódot eredményez. Elő kell állítani a kliensoldali felü-letet, be kell olvasni az adatokat, el kell juttatni azokat a szerveroldalra, ellenő-rizni kell a bevitelt, föl kell dolgozni a változókban tárolt értékeket, elő kell állí-tani a kimenetet, azaz az új állapotnak megfelelő felhasználói felületet, és gondoskodni kell az utolsó állapot rögzítéséről is.

A bonyolultabb feladatok megoldásakor a kód jóval nagyobb lesz. A méret növekedésével csökken az áttekinthetőség és egyre nehezebbé válik a program utólagos megváltoztatása, az esetleges hibák javítása.

A bonyolult és áttekinthetetlen programkód kialakulását alapos tervező-munkával lehet megelőzni. Nagyobb programok esetén a teljes, összetett fel-adatot részfeladatokra bontjuk, és azok megoldására külön-külön programkó-dokat, úgynevezett alprogramokat készítünk. A teljes feladatot a főprogrammal oldjuk meg. Amikor a főprogram kódjában egy részfeladat elvégzésére van szükség, akkor egyszerűen meghívjuk, elindítjuk a megfelelő alprogramot. A főprogram ilyenkor csak az alprogram befejeződése után, de az attól visszaka-pott adatok felhasználásával folytatódik.

Mai leckénkben a PHP alprogramjaival, az úgynevezett függvényekkel fog-lalkozunk.

 A lecke végére tudni fogja, hogyan hozhat létre saját függvényeket.

 Megismeri a formális és aktuális paraméterlista fogalmát.

 Megérti a globális és a lokális változók jelentőségét.

 Tudni fogja, mit jelent és hogyan hozható létre az érték és a cím para-méter.

 Képes lesz alapértelmezett paraméterek kialakítására.

 Tudni fogja, hogyan hívhat meg függvényeket, és hogyan adhat vissza értékeket a főprogramnak.

130 Alprogramok és paraméterátadás, beépített függvények