• Nem Talált Eredményt

Adatfeldolgozás

In document Dinamikus webprogramozás (Pldal 34-37)

9. Adatkezelő alkalmazások készítése

9.2. Adatfeldolgozás

A form-tól az adatokat el kell juttatnunk az adatfeldolgozáshoz készített programrészig. Ez nem bonyolult feladat, de a működését mindenképpen meg kell értenünk ahhoz, hogy hatékonyan tudjuk kezelni a beérkező információt. Ha az adatáramlás működését vizsgáljuk, ki kell térnünk a WEB sajátos állapotnélküliségére.

Ellentétben az kliens gépeken működő programokkal, a weboldalak egy sajátos, úgynevezett „állapot nélküli”

állapotban léteznek. Valójában ez az első látásra ellentmondásos helyzet teszi biztonságossá a webes felületet és a weboldalak egymás közötti, valamint a weboldalak és a web-szerver közti adatáramlást.

Ha egy oldal címét begépeljük a böngészőbe, akkor az letölti a szerverről a címben kért tartalmat. A weboldal forrásában szereplő programrészek létrehoznak változókat és feltöltik azokat adatokkal. Az így létrejött változók, valamint adatok halmazát nevezzük a program állapotterének.

A weboldal használója kattint egyet az oldalon, vagy egyszerűen csak frissíti a böngészőjét, a program által használt változók nagy része teljesen, másoknak csak a tartalma vész el, mivel a frissítés esetén a program újra lefut és minden olyan utasítást végrehajt, amit az előző futása során is végrehajtott. Így sajnos felülírja a

korábban értékkel ellátott változóit. Az „éppen futó” weboldalak közti adatcsere csak speciális módon oldható meg. Globális értékek tárolására használhatunk munkamenet változókat, vagy külső tárolókat, fájlt, esetleg adatbázist. A session kezelésről később még lesz szó, mert a használata elengedhetetlen a felhasználók beléptetéséhez és nyomkövetéséhez...

A form-ok esetében az adatátvitel nem ennyire kényelmetlen, de itt is oda kell figyelnünk, ha mindent szépen és helyesen akarunk megvalósítani. A web-szerver beállításaitól függően, kétféleképpen lehet az adatokat a form-tól megszerezni. A rossz megoldás az, ha a form-ban definiált változókra a feldolgozást végző programban közvetlenül hivatkozunk ($szovegdoboz1, $file1). Ahogy azt korábban már említettük, ez a megoldás egyes szervereken működik, ahol a REGISTER_GLOBALS direktíva alapértékre van állítva, de ezeknek a szervereknek a száma egyre kevesebb, és abban sem lehetünk biztosak, hogy a szerver üzemeltetője nem változtatja meg a beállításokat.

A jó megoldás az, ha a $_GET, a $_POST, és fájlok esetén a $_FILES tömböket használjuk az adatok feldolgozására. A rendszer ezekbe helyezi el a form-októl érkező adatokat. A post típusú form-ok esetén a

$_POST asszociatív tömbbe, a get típusúnál a $_GET-be. A $_FILES tömbbe a fájl-tallózó felől érkező fájl adatai kerülnek bele. Minden tömbbelem az adott kontroll nevével megegyező nevű változó értékét tartalmazza, melyre a változó nevével megegyező címke segítségével hivatkozhatunk: $_POST['kontroll_neve'].

Igazság szerint ezek a tömbök a weboldalunk globális változói, melyek segítségével megoldhatjuk az adatok tárolását és átvitelét az egyes oldalak és „al” oldalak váltogatása közben. Minden weboldalhoz, illetve minden weboldal egy példányához létrejön egy munkamenet, vagy más néven session, melybe szabadon tárolhatunk akármit. Az adatok védelme a munkamenetek használata esetén is fontos. Lehetőség szerint védjük meg őket az ártó szándékú felhasználóktól. Próbáljuk meg a lehető legtöbbet kihozni a programjainkból az adatvédelem területén...

Most, hogy ismerjük az adatátadás elméleti kérdéseit, nézzük meg, hogy jut el az információ a form-tól a feldolgozást végző modulig. Emlékezzünk vissza, hogy a korábban elkészített űrlapra, ami egy fájlra hivatkozik.

Ennek a fájlnak az a feladata, hogy az űrlap adatait feldolgozza. Ez valójában azt jelenti, hogy ha a felhasználó a submit gombra kattintva aktivizálja a form-ot, a böngészője megkéri a web-szervert a fájlban található forráskód értelmezésére. Ez a fájl nem ír semmit a képernyőre, csak elvégzi a számára előírt feladatokat. Ha elvégezte a munkáját, visszaadja a ''vezérlést'' egy másik programrészhez, ami informálja a felhasználót a történtekről. A 6.2. ábra ezt a folyamatot illusztrálja. Ahogy a képen láthatjuk, ez pontosan úgy működik, mint amikor a főprogram meghív egy függvényt, ami elvégzi a feladatait, majd visszatér az eredménnyel a főprogramhoz. A mi esetünkben a függvény egy fájlba leírt programrész, vagy ha úgy tetszik egy alprogram saját feladatokkal és állapottérrel....

Miután láttuk, hogyan hívódik meg és tér vissza a program, készítsük el azt a modult, ami az adatok felvitelére szolgál. Folytassuk tehát a harmadik fejezetben elkezdett modult. A személyek adatainak felviteléhez szükségünk lesz egy űrlapra, valamint egy olyan programra, ami a felvitt adatokat tárolja, és meg tudja jeleníteni.

6.2. ábra. Függvény és modulhívás

Később készíthetünk keresést, valamint különböző szűréseket is az adatok rendszerezéséhez. Az adatbázis kelező rutinok, valamint az adatok tárolására használható tábla mind rendelkezésre állnak, mivel ezeket korábban elkészítettük

6.3. forrásszöveg.Felhasználók táblája

CREATE TABLE users (

id int primary key auto_increment, name varchar(255),

picture varchar(255), cv text

)

Az űrlap forráskódját a 6.4.-es programszöveg tartalmazza:

6.4. forrásszöveg.Adatbeviteli űrlap

<form action=beszuras.php method=post

enctype=multipart/form-data>

<input type=text name=nev><BR>

<input type=file name=kep><BR>

<textarea rows=10 cols=50 name=cv></textarea>

<BR>

<input type=submit value="Hozzáadás">

</form>

A felvitelt segítő űrlapot érdemes egy css fájlban leírt formátum segítségével megformázni, de legalábbis egy táblázatba illeszteni, hogy átláthatóbb és könnyen kezelhető legyen...

Most, hogy elkészült a forráskód, mentsük el az useradd.php nevű fájlba, majd a menükezelő modulban helyezzünk el egy hivatkozást a fájlra.

6.5. forrásszöveg.Az új funkció menüje

...

switch($_GET["d"]) {

...

case 1:include "useradd.php";break;

case..

} ...

Helyezzük el az új menüpontot a régiek között. Dinamikus menü esetén ez a művelet azzal jár, hogy a menüpontok táblájába felvisszük a megfelelő rekordot. Amennyiben statikus menüt készítettünk, egyszerűen írjuk a kódba a következő linket:

6.6. forrásszöveg.Új menüpont elhelyezése

... <a href=index.php?d=1>MiniFaceBook</a> ...

Ki is próbálhatjuk a munkánk eredményét. Ha mindent jól csináltunk, a menüpontra kattintva az 6.7.

forrásszövegben szereplő űrlapot kell látnunk. Természetesen az adatbevitel még nem működik, mivel a beszúrást végző programot nem készítettük el.

In document Dinamikus webprogramozás (Pldal 34-37)