WEBFEJLESZTÉS 2. ADATTÁROLÁS, FÁJLOK



Hasonló dokumentumok
WEBFEJLESZTÉS 2. ADATTÁROLÁS, FÁJLOK

WEBFEJLESZTÉS 2. ADATTÁROLÁS, MUNKAMENET- KEZELÉS, AJAX

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

PHP-MySQL. Adatbázisok gyakorlat

BASH script programozás II. Vezérlési szerkezetek

PHP. Adatbázisok gyakorlat

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Adatbázis rendszerek Gy: Az adattárolás fejlődése

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

Informatika terméktervezőknek

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

S z á m í t ó g é p e s a l a p i s m e r e t e k

PHP MySQL, Java JDBC MySQL. Adatbázisok az iskolában 2012 Dr. Balázs Péter Palatinus Endre és Erdőhelyi Balázs diái alapján

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Listák, szótárak, fájlok Listák, szótárak, fájlok

A DBM függvények használata

WEBFEJLESZTÉS 2. PHP NYELVI ALAPOK

Pénzügyi algoritmusok

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

ELTE SAP Excellence Center Oktatóanyag 1

Operációs rendszerek. UNIX fájlrendszer

Programozási nyelvek Python

A webhelyhez kötődő szoftverek architektúrája

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Internet programozása. 1. előadás

MATLAB. 9. gyakorlat. Cellatömbök, struktúrák, fájlműveletek

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

PHP gyorstalpaló, avagy a Hello World-től az űrlapellenőrzésig

Webprogramozás szakkör

Technikai információk fejlesztőknek

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 5.ELŐADÁS. Sütik és munkamenetek kezelése

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

3. modul - Szövegszerkesztés

ECDL Táblázatkezelés A táblázatkezelés első lépései Beállítások elvégzése

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Webapp (in)security. Gyakori hibákról és azok kivédéséről fejlesztőknek és üzemeltetőknek egyaránt. Veres-Szentkirályi András

BASH SCRIPT SHELL JEGYZETEK

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Mintavételes szabályozás mikrovezérlő segítségével

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Programozás Minta programterv a 1. házi feladathoz 1.

Nyilvántartási Rendszer

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

AWK programozás, minták, vezérlési szerkezetek

Web-technológia PHP-vel

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

Bevezetés Működési elv AJAX keretrendszerek AJAX

Szkriptnyelvek. 1. UNIX shell

A JavaScript főbb tulajdonságai

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Tartalomjegyzék. I. rész Az elsõ lépések

Körkörös listák. fej. utolsó. utolsó. fej

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Programozás II. 2. Dr. Iványi Péter

ECDL Információ és kommunikáció

PFW Programing Fundamentals Wizard

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Érdekes informatika feladatok

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

1. Alapok. #!/bin/bash

Programozás alapjai. 5. előadás

Szkriptnyelvek II. Perl programok

Programozás 6. Dr. Iványi Péter

10.óra CodeIgniter Framework #3. Gyimesi Ákos

Web-fejlesztés NGM_IN002_1

WEBFEJLESZTÉS 2. BEMENET, ŰRLAPOK

INFORMATIKA javítókulcs 2016

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

Powershell 2. gyakorlat

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Adatbázis rendszerek. dr. Siki Zoltán

A PHP nyelv alapjai. Web-Sky Consulting Kft Tóth Imre 2009

Foglalkozási napló a 20 /20. tanévre

Pénzügyi algoritmusok

Programozás C nyelven (10a. ELŐADÁS) Sapientia EMTE

10. ÓRA. Fájlok használata

MŰSZAKI DOKUMENTÁCIÓ. Aleph WebOPAC elérhetővé tétele okostelefonon. Eötvös József Főiskola 6500 Baja, Szegedi út 2.

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Összefüggő szakmai gyakorlat témakörei évfolyam. 9. évfolyam

Összefüggő szakmai gyakorlat témakörei. 13 évfolyam. Információtechnológiai gyakorlat 50 óra

MATLAB gyakorlat. Fájlműveletek folytatás, gyakorlás

Átírás:

WEBFEJLESZTÉS 2. ADATTÁROLÁS, FÁJLOK Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816

2 Ismétlés

Ismétlés 3 Dinamikus szerveroldali webprogramozás: program (PHP) állítja elő a tartalmat (HTML) Input kliens: link, űrlap PHP: $_GET, $_POST 1 Szerver HTTP 2 CGI 3 4 PHP Űrlapfeldolgozás Kliens Adatok (nincsen: $_POST, $_GET, HTML) Beolvasás, ellenőrzés ($_POST, $_GET) Kimenet (HTML)

Adatok a klienstől PHP-ig 4 Böngésző 1 2 3 HTTP CGI PHP Címsor URL (query) QUERY_STRING $_GET[] Hivatkozás Űrlap Üzenettörzs Fejléc Standard bemenet Környezeti változó $_POST[] $_SERVER[] JavaScript Kérés módja

PHP programok adatforrása 6 Kliens Futtatókörnyezet Fájl (alkalmazásszintű) Változók (memória) PHP Adatbázis (alkalmazásszintű) Munkamenet (kliensszintű)

Szkriptbeli változók 7 Élettartamuk a szkript futása Utána megszűnnek 2 if (isset($szamlalo)) { $szamlalo += 1; else { $szamlalo = 0; var_dump($szamlalo); 1 Szerver HTTP 4 CGI 3 PHP Kliens

Külső adattárolás 8 Fájl/Adatbázis 3 4 Szerver 2 CGI 5 PHP 1 HTTP 6 Kliens

9 Fájlkezelés PHP-ban

Fájlműveletek PHP-ban 10 PHP-ban van lehetőség fájlok használatára (írás, olvasás, stb) Mint a legtöbb programozási nyelvben Csak a szerver helyi fájljai érhetők el Sokféle nyelvi lehetőség Tipikus folyamat megnyitás feldolgozás bezárás

Alacsony szintű általános fájlműveletek 11 $f = fopen($fájlnév, $mód) feof($f) $mód fájl vagy URL megnyitása $f: logikai fájlkezelő $mód: megnyitás módját r (csak olvasás) r+ (olvasás, írás) w (csak írás, üres fájl) w+ (olvasás, írás, üres fájl) a (hozzáfűzés) a+ (hozzáfűzés, olvasás) fájl vége? fclose($f) fájl bezárása x (csak írás, üres fájl, ha létezik a fájl, akkor hiba) x+ (olvasás, írás, üres fájl, ha létezik, akkor hiba) c (csak írás, ha létezik, akkor elejére áll) c+ (írás, olvasás, ha létezik, elejére áll)

Alacsony szintű beolvasás/kiírás 12 Beolvasás fread($f, $hossz) $hossz byte beolvasása fscanf($f, $formátum) formátum szerinti beolv. fgets($f[, $hossz]) sor beolvasása fgetcsv($f, $hossz[, $elválasztó]) CSV sor beolvasása Kiírás fwrite($f, $s) $s kiírása fputs($f, $s) ld. fwrite() fprintf($f, $formátum, $változók) formázott kiírás fputcsv($f, $tömb[, $elválasztó]) CSV sor kiírása

Magas szintű beolvasás/kiírás 13 Beolvasás $tömb = file($fájlnév[, módosítók]) fájl soronként a tömbbe $s = file_get_contents($fájlnév) egész fájl szövegként readfile($fájlnév) fájl kimenetre írása (pl. képek kiírása) fpassthru($f) Kiírás megnyitott fájl maradék részének kimenetre írása (pl. képek) file_put_contents($fájlnév, $s) szöveg fájlba írása

További fájlműveletek 14 mkdir($útvonal) könyvtár létrehozása rmdir($könyvtárnév) könyvtár törlése copy($forrás, $cél) másolás rename($mit, $mire) átnevezés, mozgatás unlink($fájlnév) törlés is_dir($fájlnév) is_file($fájlnév) is_readable($fájlnév) is_writable($fájlnév) is_link($fájlnév) is_executable($fájlnév)

További fájlműveletek 15 basename($útvonal) fájlnevet adja vissza chown($fájl, $user) chmod($fájl, $mód) chgrp($fájl, $group) stat($fájl) fájl adatai tömbben fseek($f, $offset) fájlmutató mozgatása

Hibakezelés 16 Hiba esetén hamis visszatérési érték @ operátor: hibaüzenet kiírásának elnyomása $f = fopen('nem_letezik.txt', 'r'); if ($f) { /*... */ fclose($f); $f = @fopen('nem_letezik.txt', 'r'); if ($f) { /*... */ fclose($f);

17 Adatszerkezet-vezérelt tárolás

Adatszerkezet 18 Adatszerkezet mentése és betöltése Fájl tartalma nem érdekes Az adat rendelkezésre állása az érdekes Adatszerkezet szöveges formátum Sorosítás

Sorosítás 19 Sorosítás egy adatszerkezet visszaalakítható szöveges megfelelője. Tároláshoz, átküldéshez szokták használni Sorosító függvények serialize($érték) szöveg unserialize($szöveg) érték json_encode($érték) szöveg json_decode($szöveg) érték

20 Példa Rekordok tömbje cím rendező év szereplők $filmek = array( array( 'cim' => 'Passió', 'rendezo' => 'Mel Gibson', 'ev' => '2004', 'szereplok'=> array( 'Jim Caviezel', 'Maia Morgenstern', 'Christo Jivkov', ), ), array( 'cim' => 'Pio atya - A csodák embere', 'rendezo' => 'Carlo Carlei', 'ev' => '2000', 'szereplok'=> array( 'Sergio Castellitto', 'Sergio Albelli', ), ), );

Serialize, unserialize 22 $s = serialize($filmek); echo $s; //a:2:{i:0;a:4:{s:3:"cim";s:7:" Passió";s:7:"rendezo";s:10:"Mel Gibson";s:2:"ev";s:4:"2004";s:9 :"szereplok";a:3:{i:0;s:12:"jim Caviezel";i:1;s:16:"Maia Morgenstern";i:2;s:14:"Christo Jivkov";i:1;a:4:{s:3:"cim";s: 27:"Pio atya - A csodák embere";s:7:"rendezo";s:12:"car lo Carlei";s:2:"ev";s:4:"2000";s:9 :"szereplok";a:2:{i:0;s:18:"ser gio Castellitto";i:1;s:14:"Sergio Albelli"; $filmek2 = unserialize($s); print_r($filmek2); /*Array ( [0] => Array ( [cim] => Passió [rendezo] => Mel Gibson [ev] => 2004 [szereplok] => Array ( [0] => Jim Caviezel [1] => Maia Morgenstern [2] => Christo Jivkov ) )*/ ) [1] => Array ( [cim] => Pio atya - A csodák embere [rendezo] => Carlo Carlei [ev] => 2000 [szereplok] => Array ( [0] => Sergio Castellitto [1] => Sergio Albelli ) )

23 json_encode $s = json_encode($filmek); echo $s; //[{"cim":"passi\u00f3","rendez o":"mel Gibson","ev":"2004","szereplok" :["Jim Caviezel","Maia Morgenstern","Christo Jivkov"],{"cim":"Pio atya - A csod\u00e1k embere","rendezo":"carlo Carlei","ev":"2000","szereplok" :["Sergio Castellitto","Sergio Albelli"]] /* [ { "cim":"passi\u00f3", "rendezo":"mel Gibson", "ev":"2004", "szereplok":[ "Jim Caviezel", "Maia Morgenstern", "Christo Jivkov" ], { "cim":"pio atya - A csod\u00e1k embere", "rendezo":"carlo Carlei", "ev":"2000", "szereplok":[ "Sergio Castellitto", "Sergio Albelli" ] ] */

json_decode 24 $filmek3 = json_decode($s, true); print_r($filmek3); /*Array ( [0] => Array ( [cim] => Passió [rendezo] => Mel Gibson [ev] => 2004 [szereplok] => Array ( [0] => Jim Caviezel [1] => Maia Morgenstern [2] => Christo Jivkov ) ) [1] => Array ( [cim] => Pio atya - A csodák embere [rendezo] => Carlo Carlei [ev] => 2000 [szereplok] => Array ( [0] => Sergio Castellitto [1] => Sergio Albelli ) )*/ )

Segédfüggvények 25 Két segédfüggvény Betöltés Mentés Akármilyen adatszerkezetre működik function fajlbol_betolt($fajlnev) { $s = file_get_contents($fajlnev); return json_decode($s, true); function fajlba_ment($fajlnev, $adat) { $s = json_encode($adat); return file_put_contents($fajlnev, $s, LOCK_EX);

Hibakezelés 26 Hibalehetőségek beolvasásnál nincs (még) meg a fájl egyéb hiba történik alapértelmezett szerkezet megadása function fajlbol_betolt($fajlnev, $alap = array()) { $s = @file_get_contents($fajlnev); return ($s === false? $alap : json_decode($s, true)); $filmek = fajlbol_betolt('filmek.txt', array()); //vagy $filmek = fajlbol_betolt('filmek.txt');

Példa új szereplő hozzáadása 27 $filmek = fajlbol_betolt('filmek.txt'); $filmek[0]['szereplok'][] = 'Monica Bellucci'; fajlba_ment('filmek.txt', $filmek); [{"cim":"passi\u00f3","rendezo":"mel Gibson","ev":"2004","szereplok":["Jim Caviezel","Maia Morgenstern","Christo Jivkov","Monica Bellucci"],{"cim":"Pio atya - A csod\u00e1k embere","rendezo":"carlo Carlei","ev":"2000","szereplok":["Sergio Castellitto","Sergio Albelli"]]

28 Fájlszerkezet-vezérelt tárolás

Használati esetek 29 Fájl szerkezete kötött mikroformátum áttekinthetőség interoperabilitás Magas és alacsony szintű fájlműveletek

1. példa 30 Adott filmcímek listája egy fájlban, soronként egy filmmel. Olvassuk ezt be egy tömbbe! $filmek = file('lista.txt', FILE_IGNORE_NEW_LINES FILE_SKIP_EMPTY_LINES); /* Array ( [0] => A hobbit ) */ [1] => A Gyűrűk Ura [2] => Út a vadonba [3] => Passió A hobbit A Gyűrűk Ura Út a vadonba Passió

1. példa hibaellenőrzés 31 $filmek = @file('lista_.txt', FILE_IGNORE_NEW_LINES FILE_SKIP_EMPTY_LINES) or die('nincs meg a fájl'); vagy $filmek = @file('lista_.txt', FILE_IGNORE_NEW_LINES FILE_SKIP_EMPTY_LINES); if (!$filmek) { $filmek = array();

2. példa 32 Egy filmcímeket tartalmazó tömb fájlba mentése (egy cím egy sor) //Kiírás alacsony szintű műveletekkel define('sorveg', "\n"); $f = @fopen('mesek.txt', 'w') or die('hiba!'); if ($f) { foreach ($filmek as $film) { fputs($f, $film. SORVEG); fclose($f); //A tömb filmcímekkel $filmek = array( 'Vuk', 'Lolka és Bolka', 'Macskafogó', 'Kisvakond és barátai', ); define('sorveg', "\n"); //Elemek összefűzése $s = implode(sorveg, $filmek). SORVEG; //Kiírás magas szintű művelettel $siker = @file_put_contents('mesek.txt', $s);

3. példa 33 Adott egy rekordokból álló tömb. Végezzük el a kiírását úgy, hogy egy sorban egy rekordnyi információ legyen, az egyes értékeket soron belül tabulátorral válasszuk el! $filmek = array( array( 'cim' => 'Passió', 'rendezo' => 'Mel Gibson', 'ev' => '2004', ), array( 'cim' => 'Pio atya - A csodák embere', 'rendezo' => 'Carlo Carlei', 'ev' => '2000', ), );

3. példa 34 $filmek = array( array( 'cim' => 'Passió', 'rendezo' => 'Mel Gibson', 'ev' => '2004', ), array( 'cim' => 'Pio atya - A csodák embere', 'rendezo' => 'Carlo Carlei', 'ev' => '2000', ), ); define('sorveg', "\n"); $f = @fopen('filmek.txt', 'w') or die('hiba!'); if ($f) { foreach ($filmek as $film) { fputcsv($f, $film, "\t"); fclose($f); Passió Mel Gibson 2004 Pio atya - A csodák embere Carlo Carlei 2000

35 4. példa Passió Mel Gibson 2004 Pio atya - A csodák embere Carlo Carlei 2000 //Beolvasás a file paranccsal, és az utólagos soronkénti bontás $filmek = file('filmek.txt', FILE_IGNORE_NEW_LINES FILE_SKIP_EMPTY_LINES); foreach($filmek as &$film) { list($c, $r, $e) = explode("\t", $film); $film = array( 'cim' => $c, //Beolvasás soronként az fgetcsv-vel 'rendezo' => $r, $filmek = array(); 'ev' => $e, $f = @fopen('filmek.txt', 'r'); ); if ($f) { while ($sor = fgetcsv($f, 0, "\t")) { Az előző példában kapott fájlt olvassuk be rekordok tömbjeként! $filmek[] = array( 'cim' => $sor[0], 'rendezo' => $sor[1], 'ev' => $sor[2], ); fclose($f);

5. példa 36 Az előző feladatbeli rekordok tömbjét tároljuk úgy a fájlban, hogy a rekord minden egyes mezeje külön sorba kerüljön, és az egyes rekordokat üres sor válassza el egymástól. Oldjuk meg a tömb beolvasását is! Alacsony szintű fájlműveletek

5. példa kiírás 37 $filmek = array( array( 'cim' => 'Passió', 'rendezo' => 'Mel Gibson', 'ev' => '2004', ), array( 'cim' ), ); => 'Pio atya - A csodák embere', 'rendezo' => 'Carlo Carlei', 'ev' => '2000', //Mentés fájlba define('sorveg', "\n"); $f = @fopen('filmek_tobbsor.txt', 'w') or die('hiba!'); if ($f) { foreach ($filmek as $film) { fputs($f, $film['cim']. SORVEG); fputs($f, $film['rendezo']. SORVEG); fputs($f, $film['ev']. SORVEG); fputs($f, SORVEG); fclose($f); Passió Mel Gibson 2004 Pio atya - A csodák embere Carlo Carlei 2000

5. példa beolvasás 38 Passió Mel Gibson 2004 Pio atya - A csodák embere Carlo Carlei 2000 //Beolvasás fájlból $filmek = array(); $f = @fopen('filmek_tobbsor.txt', 'r'); if ($f) { while (!feof($f)) { $cim = trim(fgets($f)); $rendezo = trim(fgets($f)); $ev = trim(fgets($f)); $ures = fgets($f); if ($cim!= '') { $filmek[] = array( 'cim' => $cim, 'rendezo' => $rendezo, 'ev' => $ev, ); fclose($f);

Konkurens fájlhasználat 39 Ha egyszerre többen hívják meg a szkriptet konkurens használat flock($f, $op) $op LOCK_SH (olvasáshoz) LOCK_EX (íráshoz) LOCK_UN (kioldáshoz) fflush($f) define('sorveg', "\n"); $f = @fopen('mesek.txt', 'w') or die('hiba!'); if ($f) { if (flock($f, LOCK_EX)) { foreach ($filmek as $film) { fputs($f, $film. SORVEG); flock($f, LOCK_UN); fclose($f); fájlpuffer ürítése

Konkurens fájlhasználat 40 Olvasáshoz is érdemes lockolni a fájlt, hogy közben ne kezdődhessen el egy írási folyamat. $filmek = array(); $f = @fopen('lista.txt', 'r'); if ($f) { if (flock($f, LOCK_SH)) { while (!feof($f)) { $sor = trim(fgets($f)); if ($sor!= '') { $filmek[] = $sor; flock($f, LOCK_UN); fclose($f);

URL-ek olvasása 41 A fájlműveletek többsége nemcsak fájlt, hanem URL-t is képes olvasni (általában folyamokat) PHP-ban fel tudunk dolgozni más oldalakat Egy egyszerű oldal megjelenítése: $s = file_get_contents('http://www.elte.hu/'); echo $s;

42 Kódszervezés

Hármas struktúra 43 Adatok és függvények adatszerkezetek megadása adatok betöltése betöltő és mentő függvény adatok feldolgozásához kapcsolódó függvények Kérés feldolgozása beolvasás ($_POST, $_GET, stb.) és ellenőrzés feldolgozás meghívása kimeneti adatok előkészítése Kimenet HTML sablon

Vázlat 44 <?php //Adatok //IO függvények function fajlbol_betolt($fajlnev, $alap = array()) { $s = @file_get_contents($fajlnev); return (s === false? $alap : json_decode($s, true)); function fajlba_ment($fajlnev, $adat) { $s = json_encode($adat); return file_put_contents($fajlnev, $s, LOCK_EX); //Adatokkal kapcsolatos függvények function feldolgozas{$adat { //... //--------------------------------------------------- //Kérés feldolgozása //... //--------------------------------------------------- //Kimenet?> HTML sablon

Külön fájlba helyezés 45 Funkcionálisan elváló részeket külön fájlokban tárolni karbantartás Fájlok beemelése: include($fájlnév) hiba esetén warninggal továbbmegy include_once($fájlnév) require($fájlnév) hiba esetén hibával megáll require_once($fájlnév) Mintha odamásolnánk a fájl tartalmát

Vázlat 46 fileio.php betöltés és mentés fix adat.php feladatfüggő név és tartalom kimenet.php feladatfüggő név és tartalom <?php include('fileio.php'); include('adat.php'); //Kérés feldolgozása //... include('kimenet.php');

Szétszedés hátránya 47 Minden funkcióhoz három fájl tartozik adat, kimenet, kérést fogadó ez növeli a bonyolultságot rontja az áttekinthetőséget (javítja a karbantarthatóságot) Csak a kérés fogadót szabad meghívni! ő húzza be a többit erre figyelni kell

Tokenes védelem 48 Kérést kiszolgáló szkriptben token definiálása <?php define('token', 'Védelem'); include('fileio.php'); include('adat.php'); //Kérés feldolgozása //... include('kimenet.php'); Többi szkript első sora ezt vizsgálja <?php if (! defined('token')) exit('közvetlenül nem elérhetõ!');

.htaccess védelem 49 Könyvtár alapú konfigurációs fájl Apache képes kezelni Ehhez külön könyvtárba kell

Könyvtárba szervezés 50 Az azonos funkcionalitású fájlok azonos könyvtárba kerüljenek Könyvtárak kozos adat kimenet Könyvtáranként.htaccess állomány

Könyvtárba szervezés 51 Könyvtárszerkezet (D) kozos fileio.php.htaccess (D) adat adat.php.htaccess (D) kimenet kimenet.php.htaccess fajl.php fajl.php <?php define('token', 'Védelem'); include('kozos/fileio.php'); include('adat/adat.php'); //Kérés feldolgozása //... include('kimenet/kimenet.php');.htaccess deny from all

Összefoglalás 52 Adattárolás a kérés-válaszon kívül Fájlkezelés Adatszerkezet-vezérelt sorosítás + magas szintű fájlműveletek Fájlszerkezet-vezérelt alacsony vagy magas szintű fájlműveletek Kódszervezés hármas egység fájlba és könyvtárba szervezés