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



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

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

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

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

PHP. Adatbázisok gyakorlat

A Http és a PHP kapcsolata. Web-Sky Consulting Kft Tóth Imre 2009

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

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

API tervezése mobil környezetbe. gyakorlat

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

Model View Controller alapú alkalmazásfejlesztés

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

WEB PROGRAMOZÁS 3.ELŐADÁS. Űrlapok

PHP-MySQL. Adatbázisok gyakorlat

PHP alapjai II. Vincze Dávid Miskolci Egyetem, IIT

Weboldalak Biztonsági Kérdései

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

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

TUDNIVALÓK A WEB-FEJLESZTÉS I. KURZUSRÓL

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

Gyakorlati vizsgatevékenység A

Valimed API. REST API a magyarországi orvos pecsétszámok validálására

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

Gyakorlati vizsgatevékenység B

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

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

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

Memória játék. Felhasználói dokumentáció

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

S, mint secure. Nagy Attila Gábor Wildom Kft.

Programozás és adatbázis kezelés PHP ben

A WEB programozása - Bevezetés őszi félév Dr. Gál Tibor

Nyilvántartási Rendszer

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

Web-technológia PHP-vel

Web-fejlesztés NGM_IN002_1

Biztonságos mobilalkalmazás-fejlesztés a gyakorlatban. A CryptTalk fejlesztése során alkalmazott módszerek. Dr. Barabás Péter Arenim Technologies

Webszolgáltatások (WS)

Készítette: Gál Tamás. A tananyag programozott változata itt érhető el: Webfejlesztés

Webtárhely létrehozása a helyen. Lépések Teendő 1. Böngészőbe beírni: 2. Jobb oldalon regisztrálni (tárhelyigénylés).

Moodle -egy ingyenes, sokoldalú LMS rendszer használata a felsőoktatásban

III. RÉSZ Munka a PHP-vel

Web programozás I. 4. előadás

SZOLGÁLTATÓI NYILVÁNTARTÁSI RENDSZER FELHASZNÁLÓI KÉZIKÖNYV

WEBES ALKALMAZÁSFEJLESZTÉS 1.

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

Példa webáruház kialakítás rendszerdokumentáció

Internet technológiák

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

Pick Pack Pont kereső és boltválasztó alkalmazás

Hálózati architektúrák és Protokollok GI Kocsis Gergely

WEBFEJLESZTÉS 2. BEMENET, ŰRLAPOK

JavaServer Pages (JSP) (folytatás)

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

Információ és kommunikáció

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

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

Web fejlesztés IV. Illés Zoltán ELTE TTK Informatika I n f o r m a t i k a

Enterprise extended Output Management. exom - Greendoc Systems Kft. 1

HÁLÓZATI HASZNÁLATI ÚTMUTATÓ

Thomson Speedtouch 780WL

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.

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

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

MOL NYRT - WEB ISA 3.0 FELHASZNÁLÓI KÉZIKÖNYV

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

Webes űrlapok és az XForms ajánlás

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Tudás Reflektor. Copyright 2011; Kodácsy Tamás;

TERC V.I.P. hardverkulcs regisztráció

Regionális forduló november 18.

Környezeti változók, űrlapok kezelése

Ö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

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

Információ és kommunikáció

A számítástechnika gyakorlata WIN 2000 I. Szerver, ügyfél Protokoll NT domain, Peer to Peer Internet o WWW oftp opop3, SMTP. Webmail (levelező)

Gyakorlati vizsgatevékenység A

Természetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt.

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

PFW Programing Fundamentals Wizard

5-ös lottó játék. Felhasználói dokumentáció

Információ és kommunikáció

Nokia N97_mini (Mail for Exchange) beállítása Virtualoso levelezésre

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

Web programoz as

Vezető Partner Szeminárium IMIR

10. évfolyam 105 óra azonosító számú Hálózatok, programozás és adatbázis-kezelés 105 óra Adatbázis- és szoftverfejlesztés gyakorlat tantárgy

Elektronikus levelek. Az informatikai biztonság alapjai II.

Sakk játék. Feladat: JavaScript segítségével olyan programot kell írni, ami egy sakktáblát szimulál. Kiválasztásra változtatják a helyüket.

WEBSZERKESZTÉS ELMÉLETI VIZSGAKÉRDÉSEK

e-papír Felhasználói Kézikönyv

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk

Webes alkalmazások fejlesztése 6. előadás. Állapotfenntartás (ASP.NET) 2015 Giachetta Roberto

WEBFEJLESZTÉS 2. PHP NYELVI ALAPOK

Dspace fejlesztési tapasztalatok, problémák és megoldások

Vezető Kedvezményezetti Szeminárium IMIR

Adatbázis alapú rendszerek

Átírás:

WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS 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

PHP beadandó 2 Honlapról elérhető Labirintus-játék szerveroldali funkcionalitása tárolás (fájlban) listázás szerkesztés AJAX Határidő: 2014. május 25. éjfél

3 Ismétlés

Ismétlés 4 Dinamikus szerveroldali webprogramozás Output (HTML generálás) Input (link, űrlap) Adattárolás: fájlok Fájlműveletek alacsony szintű műveletek Szerver 2 CGI 5 magas szintű műveletek Fájlszerkezet-vezérelt Adatszerkezet-vezérelt Sorosítás 1 HTTP Kliens 6 Kódszervezés (logikailag, fizikailag) Fájl/Adatbázis 3 4 PHP

5 Munkamenet-kezelés

HTTP állapotmentesség 6 A HTTP állapotmentes protokoll Nem emlékezik az előző kérés adataira Függetlenül kezeli a kéréseket Ugyanazon kliens különböző kéréseit Különböző kliensek kéréseit Kliens1 szamol.php Kliens3 Kliens2 Kliens4 szamol.php szamol.php szamol.php Kliens1 Kliens1 Kliens1 Kliens1

1. probléma 7 Ugyanazon kliens több kérése között az állapot megtartása Pl. kosár HTTP kéréstől külön tárolni bolt.php bolt.php bolt.php Kliens1 Kliens1 Kliens1 Kliens1

1. probléma 8 Fájl bolt.php bolt.php bolt.php Kliens1 Kliens1 Kliens1 Kliens1

2. probléma 9 Mindegyik kliens ugyanazon az adaton osztozkodik Fájl bolt.php Kliens1 Kliens3 Kliens2 Kliens4

Munkamenet-kezelés 10 Kliensek megkülönböztetése Kliensenkénti adattárolás Példák: levelezés, dokumentumok internetbank webáruház kosara, online szerkesztők (Doodle) Megoldás kliens oldalon szerver oldalon

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

14 Munkamenet-kezelési lehetőségek

Példa 15 Tároljuk egy számláló értékét felhasználónként, és minden kérésnél növeljük a számláló értékét eggyel!

Kliens oldali állapottartás 16 Az adatot a kliensen tároljuk Minden kérésnél felküldjük a szerverre A szerver visszaadja a kliensnek szamlal.php Kliens oldali technológiák szamlal.php URL Rejtett mező Süti szamlal.php Kliens1 Kliens1 Kliens1 Kliens1

Állapottartás URL-ben 17 szamol.php?szamlalo=1 <?php $szamlalo = 0; if (isset($_get['szamlalo'])) { $szamlalo = $_GET['szamlalo']; } $szamlalo += 1; var_dump($szamlalo);?> <a href="szamlalo2.php?szamlalo=<?php echo $szamlalo;?>">növel</a>

Állapottartás URL-ben 18 Hátránya: Minden linkhez oda kell generálni Ha egyről is lemarad, elvész az adat Sok adat nem fér el benne URL hossza legfeljebb 2kB Feltűnő (zavaró) Könnyen átírható Könyvjelzőzhető (nem mindig hátrány)

Állapottartás rejtett mezőben 19 URL: kevés adat, feltűnő, manipulálható űrlap rejtett mezője <input type="hidden" name="szamlalo" value="4"> Előny sok adat nem feltűnő Hátrány manipulálható csak űrlapok esetén normál linkeknél JavaScript kell

Példa számláló 20 <?php $szamlalo = 0; if (isset($_post['szamlalo'])) { $szamlalo = $_POST['szamlalo']; } $szamlalo += 1; var_dump($szamlalo);?> <form action="szamlalo3.php" method="post"> <input type="hidden" name="szamlalo" value="<?php echo $szamlalo;?>"> <input type="submit" value="növel"> </form> <!-- Ez nem működik --> <a href="szamlalo3.php">növel</a>

Állapottartás sütivel 21 Rejtett mező: macerás, manipulálható süti HTTP kérés és PHP Cookie: név1=érték1; név2=érték2; név3=érték3 $_COOKIES HTTP válasz és PHP: Set-Cookie: név=érték[; expires=dátum][; domain=domain][; path=path][; secure] //Általános formája $siker = setcookie($név[, $érték [, $expires = 0 [, $path [, $domain [, $secure = false]]]]]); //Néhány példa setcookie('alma', 'piros'); setcookie('körte', 'sárga', time() + 60); //lejárat 60 mp múlva

Példa számláló 22 <?php $szamlalo = 0; if (isset($_cookie['szamlalo'])) { $szamlalo = $_COOKIE['szamlalo']; } $szamlalo += 1; setcookie('szamlalo', $szamlalo); print_r($_get); print_r($_post); print_r($_cookie); var_dump($szamlalo);?> <a href="szamlalo4.php">növel</a>

23 Példa számláló

Állapottartás sütivel 24 Előny nem feltűnő automatikus küldése Hátrány manipulálható (kódolható) limitált adatmennyiség letiltható

Kliensoldali megoldások 25 Adat a kliensen van Manipulálható Sok adat esetén feleslegesen sok adat megy odavissza a kliens és szerver között szamlal.php szamlal.php szamlal.php Kliens1 Kliens1 Kliens1 Kliens1

Szerveroldali megoldások 26 Tároljuk az adatot a szerveren nem manipulálható kliens oldalon nem kell sok adatot küldözgetni A kliens megkülönböztetése továbbra is szükséges tokent kap, amivel azonosítja magát és hozzáfér a tokenhez tartozó adatokhoz Token kliensoldali megoldással közlekedik süti (alapértelmezett) URL (ha nincs süti)

Szerveroldali megoldás szamol.php 27 Kliens1 Kliens3 Kliens2 Kliens4 szamlal.php szamlal.php szamlal.php Kliens1 Kliens1 Kliens1 Kliens1

Szerveroldali megoldás 29 Adatok tárolása fájlban (ld. PHP) adatbázisban Plusz erőforrás a szervertől A tokenre nagyon kell vigyázni! ellopható kilépés

30 Munkamenet-kezelés PHP-ban

Munkamenet-kezelés PHP-ban 31 Munkamenethez tartozó adatok: $_SESSION Munkamenet-kezelő függvények: session_start() session_destroy() SID konstans (PHPSESSID=token)

Példa számláló 32 <?php session_start(); print_r($_get); print_r($_session); $szamlalo = 0; if (isset($_session['szamlalo'])) { $szamlalo = $_SESSION['szamlalo']; } $szamlalo += 1; $_SESSION['szamlalo'] = $szamlalo; var_dump($szamlalo);?> <a href="szamlalo5.php?<?php echo SID;?>">Növel</a>

Példa - számláló 33 Süti letiltása token az URL-ben

Példa számláló 34 Munkamenet megszüntetése <?php session_start(); print_r($_get); print_r($_session); $_SESSION = array(); session_destroy(); print_r($_session);?> <a href="szamlalo5.php">vissza</a>

35 Hitelesítés

Hitelesítés 36 Ki használja az alkalmazást? azonosított felhasználó felhasználónév teljes név névtelen felhasználó vendég Bizonyos oldalak csak azonosított felhasználók számára érhetőek el

Technológiák 37.htaccess,.htpasswd könyvtár alapú védelem WWW-Authenticate Módok Basic Digest (titkosított) HTTP része PHP-ból kiolvasható Ezek PHP-tól független technológiák Plusz adat tárolására nem alkalmasak Csak hitelesítésre

Hitelesítés munkamenettel 38 Azonosított felhasználó munkamenetében egy speciális kulcsot helyezünk el Ezzel jelezzük, hogy már azonosítottuk Folyamat beléptető űrlap (login form) sikeres belépés esetén kulcs minden oldalon: ha ez a kulcs megvan, akkor azonosított ettől függően más logika, más nézet lehet

Regisztráció 39 Űrlap <?php print_r($hibak);?> <form action="reg.php" method="post"> Felhasználónév: <input type="text" name="felhnev"> <br> Jelszó: <input type="password" name="jelszo"> <br> <input type="submit" name="reg" value="regisztrál"> </form>

Regisztráció 40 $hibak = array(); if ($_POST) { $felhnev = trim($_post['felhnev']); $jelszo = $_POST['jelszo']; $jelszavak = fajlbol_betolt('jelszavak.txt'); if (strlen($felhnev) == 0) { $hibak[] = 'Nincs felhnev!'; } if (strlen($jelszo) == 0) { $hibak[] = 'Nincs jelszo!'; } if (array_key_exists($felhnev, $jelszavak)) { $hibak[] = 'Letezo felhnev!'; } if (!$hibak) { $jelszavak[$felhnev] = md5($jelszo); fajlba_ment('jelszavak.txt', $jelszavak); header('location: login.php'); exit(); } }

Beléptetés 41 Űrlap <?php print_r($hibak);?> <form action="login.php" method="post"> Felhasználónév: <input type="text" name="felhnev"> <br> Jelszó: <input type="password" name="jelszo"> <br> <input type="submit" name="belep" value="belép"> </form>

Beléptetés 42 $hibak = array(); if ($_POST) { $felhnev = trim($_post['felhnev']); $jelszo = $_POST['jelszo']; $jelszavak = fajlbol_betolt('jelszavak.txt'); if (!(array_key_exists($felhnev, $jelszavak) && $jelszavak[$felhnev] == md5($jelszo))) { $hibak[] = 'Nem jó!'; } if (!$hibak) { $_SESSION['belepve'] = true; $_SESSION['felhnev'] = $felhnev; header('location: szamlalo5.php'); exit(); } }

Hitelesítés ellenőrzése 43 munkamenet indítása létezik-e a kulcs a munkamenet adatai között kulcs értéke indifferens külön fájlba tehető session_start(); function azonositott_e() { return isset($_session['belepve']); }

Kijelentkezés 44 Kulcs kivétele a munkamenetből Általában az egész munkamenet megszüntetése (feladatfüggő) unset($_session['belepve']);

45 Fájlfeltöltés

Űrlap és feldolgozás 46 <?php print_r($hibak);?> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="fajl"> <input type="submit" value="feltölt"> </form> $hibak = array(); if ($_FILES) { if (array_key_exists('fajl', $_FILES) && $_FILES['fajl']['error'] == 0) { } $honnan = $_FILES['fajl']['tmp_name']; $hova = 'fajlok\\'. $_FILES['fajl']['name']; move_uploaded_file($honnan, $hova); } else { $hibak[] = 'Hiba tortent!'; }

$_FILES 47 Array ( [fajl] => Array ( [name] => Desert_small.jpg [type] => image/jpeg [tmp_name] => C:\eltescorm\tmp\php1750.tmp [error] => 0 [size] => 18218 ) )

Könyvtárlista 48 <ul> <?php foreach($fajlok as $f) :?> <li><?php echo $f;?></li> <?php endforeach;?> </ul> function fajlok($kvt) { $fajlok = array(); $d = opendir($kvt); while (($f = readdir($d))!== false) { $fajlok[] = $f; } closedir($d); return $fajlok; } $fajlok = fajlok('fajlok\\');

50 Hasznos függvények

Tömbműveletek 52 in_array($mit, $tömb): eldöntés (logikai) array_search($mit, $tömb): lineáris keresés (kulcs) sort($tömb): rendezés (többféle van) shuffle($tömb): keverés array_keys($tömb): $tömb kulcsai tömbként array_values($tömb): $tömb értékeit tömbként array_key_exists($kulcs, $tömb): $kulcs szerepel-e a $tömb tömb kulcsai között.

Szövegműveletek 53 szöveg: karakterek tömbje explode($elválasztó, $s): elemekre bontás implode($elválasztó, $tömb): összefűzés substr($s, $kezdet, $hossz): részszöveg ltrim($s), rtrim($s), trim($s): fehérszóköz-eltávolítás. strstr($miben, $mit), strpos($miben, $mit), strrpos($miben, $mit): részszöveg keresése preg_match($minta, $s): regkif illeszkedése

Dátum és idő 54 date($formátum): az aktuális idő kiírása a megadott formátumban. time(): Unix idő visszaadása másodpercben. strtotime($s): szövegként megadott dátum Unix időbe átalakítása. getdate(): dátuminformációk visszaadása tömbként. date_*: dátummal kapcsolatos további függvények

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

További hasznos függvények 56 header() HTTP fejlécek leküldése Pl.: header('location: index.php'); átirányítás másik oldalra

57 Fejlesztői környezet

Fejlesztői környezet részei 58 Szerver oldalon webszerver PHP Kliens oldalon böngésző Fejlesztői környezet Szerkesztő program (HTML, PHP, CSS) SFTP, SCP kliens az állományok webszerverre töltéséhez

Otthoni fejlesztéshez 59 XAMPP telepítőcsomag http://www.apachefriends.org/en/xampp.html Multiplatform WAMP Stack, LAMP Stack http://bitnami.com/stacks/infrastructure