Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz

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

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

PHP-MySQL. Adatbázisok gyakorlat

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

Adatbázis. AMP! (Apache + MySql + PHP) XAMPP, LAMP, MAMP, WAMP et cetera

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

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

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Adatbázis Rendszerek II. 2. Gyakorló környezet

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

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).

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Adatbázisok webalkalmazásokban

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Az SQL*Plus használata

Adatbázis használata PHP-ből

Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva

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

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

Adatbázis kezelés Delphiben. SQL lekérdezések

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Mobil Telefonon Keresztüli Felügyelet Felhasználói Kézikönyv

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

TABLE ACCESS FULL HASH CLUSTER BY INDEX ROWID BY USER ROWID BY GLOBAL INDEX ROWID BY LOCAL INDEX ROWID

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A 1-1

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

LOGalyze Telepítési és Frissítési Dokumentáció Verzió 3.0

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

Adatbázis rendszerek II. Adatbázis elérése C# kliens programból ADO.NET API-n keresztül

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Kalmár György Adatbázis alapú rendszerek

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

OpenVPN kliens telepítése a RITEK Zrt. szervereinek eléréséhez.

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

Gyakorlati vizsgatevékenység A

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

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

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

Egyetemi könyvtári nyilvántartó rendszer

Gyakorlati vizsgatevékenység B


Adatbázis rendszerek. dr. Siki Zoltán

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

N Y I L A T K O Z A T

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

II. ADATLAP - Programmodul részletes bemutatása

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Egyetemi könyvtári nyilvántartó rendszer

Tranzakciókezelés PL/SQL-ben

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

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

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Készítette: Szabóné Nacsa Rozália

Java és web programozás

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

GEIAL Kovács László. GEIAL Kovács László GEIAL Kovács László

Oracle Audit Vault and Database Firewall. Gecseg Gyula Oracle DBA

Az Oracle rendszer komponensei

WEBES ALKALMAZÁSFEJLESZTÉS 1.

Cisco Catalyst 3500XL switch segédlet


Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

AdoDB a gyakorlatban

Internet technológiák

Extrémen brutál, gyors talpaló PHP nyelvhez (database). v2.1

A WORDPRESS TELEPÍTÉSÉNEK LÉPÉSEI

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

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Adattípusok. Max. 2GByte

Adatbázisok* tulajdonságai

Elemi adatbázis kezelés

Adattípusok. Max. 2GByte

Oracle E-Business Suite üzemeltetés a Rába Járműipari Holding Nyrt.-nél

Socket programozás Példák


Adatbázis rendszerek 7. előadás State of the art

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

SQL DDL-2 (aktív elemek) triggerek

Nyilvántartási Rendszer

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

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Hozzunk ki többet abból amink van. Fehér Lajos

2. fejezet Hálózati szoftver

Adatbázis, adatbázis-kezelő

Vizuális programozás gyakorlat

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

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

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

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

Adatbázisok elmélete

A telepítési útmutató tartalma

Laborsegédlet 3. Labor

Átírás:

PHP Adatbázis Tartalomjegyzék PHP ADATBÁZIS...1 TARTALOMJEGYZÉK...1 EDDIG VOLT...1 MAI ANYAG...1 TEHÁT RÉSZLETESEBBEN...1 Kapcsolódás web-alkalmazásokból adatbázisokhoz...1 Biztonsági kérdések...2 PHP...2 MySQL egyszerű általános interface...3 Oracle egyszerű általános interface...3 Egy példa alkalmazás...4 MA MEGTANULTUK...5 EZUTÁN JÖN...5 Eddig volt Már képesek vagyunk kliens oldali megejelenítésre (HTML) Ottani adatok ellenőrzésére (Java script futtatás) Adatok feltöltésére és szerver oldali programozásra (Webszerver, PHP) Ismerjük az architekturális lehetőségeket. Mai anyag Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz Tehát részletesebben Kapcsolódás web-alkalmazásokból adatbázisokhoz Az adott nyelvben saját függvények és/vagy osztályok vannak az egyes adatbáziskezelő rednszerekhez. Ezekkel a függvényekkel egy interface-n keresztül tudjuk az adatbázisok által nyujtott lehetőségeket programozni. NAGYON FONTOS!!! Minden adatbázisművelet előtt hozzá kell kapcsolódnunk a megfelelő adatbázishoz, és mindig le kell zárnunk a létrejött kapcsolatot a munka végeztével. Ha él a kapcsolat, akkor SQL utasításokat tudunk kiadni az adatbázisban az adott nyelv függvényeinek segítségével, vagyis az interface-n keresztük közvetlenül az adatbázisban. Lefuttathatunk utasításokat, lekérdezhetünk adatokat, eredmény-lista sorait visszakaphatjuk. Ezért nem csak a nyelv speciális utasításait kell ismernünk, hanem az SQL-vel is tisztában kell lennünk. Van mód a modulárisabb programozásra is, de most erre részletesen nem térünk ki, csak a biztonságról szóló részben lesz egy kevés róla. (Design, programozás, adatbázis-alkalmazás fejlesztés, tartalomfejlesztés mind elkülönülhet egy projektben több ember végezheti.)

Biztonsági kérdések PHP Hogy lehet SQL utasításokat összeállítani? o Sztring-műveletekkel o Más módon (BIND) Közvetlen SQL utasításokat adjunk ki? o Miért ne? (INSERT INTO, DELETE, SELECT, több táblát érintenek(?)) o Miért igen? (Tárolt eljárások (gyorsabb, átláthatóbb (modulárisabb), jogosultságok kezelése)) Példák o Van két változónk: user= alma és pwd= korte o SQL a belépéshez: SELECT count(1) from users where userid= +user+ and passwd= +pwd+ ; o Vagyis: SELECT count(1) from users where userid= alma and passwd= korte ; o DE HA: user= és pwd= ' or '1'='1 o SELECT count(1) from users where userid='' and passwd='' or '1'='1'; is BEENGED. o Előfordulhat, hogy a string műveletekkor olyan a változó értéke, ami módosítja az SQL utasítást (pl az előbb.), ezért jobb a BIND használata, ahol egy adatbázisbeli változóhoz rendelhetünk hozzá egy külső (programnyelvbeli) változót, az értékek a memóriában cím szerint rendelődnek össze és a tartalom egy-az-egyben másolásra kerül. o SELECT count(1) from users where userid=:userid and passwd=:passwd;, majd a :userid adatbázisbeli változóhoz hozzárendeljük a user változót, illetve a :passwd-hez a pwd-t. o Mégjobb megoldás, a tárolt eljárás használata (persze BIND-dal), így ott még több műveletet lehet gyorsan végrehajtani: Menteni a rossz probálkozások számát, letilteni egy idő után, jelszó cseréjét kezdeményezni, ha régóta ugyanaz, menteni az IP-címet, időt, A PHP a MySQL adatbázist nagyban támogatja, függvényei beépített függvények (teljes beépített interface). Az Oracle adatbázist nem támogatja, ehhez az interface-t elérhetővé kell tenni, sőt a PHP-t futató webszerveren egy Oracle-klienst is kell telepíteni az OCI osztályokkal, hogy használni tudja a szervert. Két megközelítést nézünk meg: 1. Egyszerű általános interface-t írunk, melyet SQL utasításokat futtathatunk adatbázisokban, illetve onnan adatokat kérdezhetünk le. (ma) 2. Oracle specifikus műveleteket próbálunk ki, nem általános interface-ben (BIND; tárolt eljárás; file fel-, letöltés/blob kezelés) (következő órán) 1. A következő műveletekre lesz szükségünk: a. Connect: DB_connect(): Csatlakozás az adatbázishoz b. Disconnect: DB_disconnect(): Az adatbáziskapcsolat megszüntetése c. Execute: DB_exec($sql): Futtatunk egy SQL utasítást d. Select: DB_query($sql): Futtat egy lekérdező SQL utasítást e. Next row: DB_getnextrow(): Az eredmény halmaz következő sorát adja vissza

MySQL egyszerű általános interface <? $dbid = 0; $result = 0; $num_of_rows = 0; $row = 0; function DB_connect() global $dbid; $dbid = mysql_connect("szerver", "USER", "PWD"); mysql_select_db("adatbazis"); function DB_exec($query) global $num_of_rows; $result = mysql_query($query); function DB_query($query) global $num_of_rows; $result = mysql_query($query); if($result) $num_of_rows = mysql_num_rows($result); else $num_of_rows = 0; function DB_getnextrow() global $row; if($result) $row = mysql_fetch_assoc($result); else $row = 0; return $row; function DB_disconnect() global $dbid; mysql_free_result($result); mysql_close($dbid);?> Oracle egyszerű általános interface <? $conn = 0; $stmnt = 0; function DB_connect() global $conn; $conn=ocilogon("user_schema", "PWD", "ADATBAZIS/TNSALIAS");

if (!$conn) exit; function DB_exec($query) global $conn; $stmnt = OCIParse($conn,$query); if ($stmnt) if (OCIExecute($stmnt, OCI_DEFAULT)) OCICommit($conn); return 1; else OCIRollback($conn); return 0; function DB_query($query) $stmnt = ociparse($conn,$query); if ($stmnt) ociexecute($stmnt,oci_default); function DB_getnextrow() if (OCIFetchInto($stmnt,$row,OCI_ASSOC)) return $row; function DB_disconnect() OCIFreeStatement($stmnt); if ($conn) OCILogoff($conn);?> Egy példa alkalmazás Zenei adatokat tároljuk egy táblában. Listázzuk ki őket, törölhessünk, módosíthassunk illetve vehessünk fel új bejegyzést. Adatbázis létrehozása o https://xml.inf.elte.hu/mysqlxwing/ o https://xwing.inf.elte.hu/xoa/login.jsp o create_table_with_data.sql o COMMIT DB.INC létrehozása (ez lesz a központi adatbázisválasztó file) + MYSQL.INC és ORACLE.INC módosítása o $dbid = mysql_connect("xwing.inf.elte.hu", "wabpx", "wabp2005"); o mysql_select_db("wabpx"); o illetve o $conn=ocilogon("wabpx_etrazon", "wabp2005", "XWINGDB");

Keret létrehozása: index.html Menü: menu.html Listázás szűréssel: main.php Törlés: torol.php Szerkesztés: edit.php + beszur.php + javit.php Ma megtanultuk Hogyan kell egy web-alkalmazással adatbázishoz csatlakozni, Hogy kell ezt csinálni PHP-ből MySQL-hez és Oracle-höz. Ezután jön BIND BLOB kezelés Multimédiás tartalmak kezelése dinamikusan Letöltés / feltöltés dinamikus Flash