Fejlesztés PHP-NUKE portál rendszerre Horváth Zoltán Második Magyarországi PHP Konferencia március 27. Copyright PHP Konferencia, 2004, Horváth Zoltán
Tartalomjegyzék Bevezetés Adatbázis-tervezés és implementáció Felhasználói felület Adminisztrációs felület Biztonság
Bevezetés
Bevezetés Teendők a fejlesztés előtt: igényfelmérés elvárások meghatározása rendelkezésre álló fejlesztői eszközök az üzemeltetés helye
Bevezetés Gyakorlati példa: egyszerű Kvíz modul Az előadás célja: modulkészítés lépéseinek megismerése PHP-Nuke rendszerbe történő beillesztése
Adatbázis-tervezés és implementáció és implementáció
Adatbázis-tervezés és implementáció Struktúra megtervezése Adattáblák kialakítása Kapcsolatok és beállítások
Adatbázis-tervezés és implementáció Kvíz modul adattábla (logikai terv): idEgyedi azonosító questionKvíz kérdés option1Válaszlehetőség 1 option2Válaszlehetőség 2 option3Válaszlehetőség 3 option4Válaszlehetőség 4 correct_optionHelyes válasz sorszáma (1-4)
Adatbázis-tervezés és implementáció Megvalósítás MySQL rendszerben (fizikai) Integráció módja: Automatizált módon Manuálisan
Adatbázis-tervezés és implementáció A nuke_kviz adattáblát létrehozó SQL parancs: CREATE TABLE `nuke_kviz` ( `id` INT( 11 ) NOT NULL AUTO_INCREMENT, `question` VARCHAR( 255 ) NOT NULL, `option1` VARCHAR( 100 ) NOT NULL, `option2` VARCHAR( 100 ) NOT NULL, `option3` VARCHAR( 100 ) NOT NULL, `option4` ( 100 ) NOT NULL, `correct_option` INT( 1 ) NOT NULL, PRIMARY KEY ( `id` ) );
Felhasználói felület
Fájlok elhelyezése: ‘modules/Kviz’ alkönyvtár létrehozása Modul fő állománya: ‘index.php’ Egyéb fájlok
Felhasználói felület Kapcsolatteremtés a PHP-NUKE rendszerrel: A fájl direkt elérését megakadályozandó: A rendszermotor betöltése: if (!eregi("modules.php", $_SERVER['PHP_SELF'])) { die ("You can't access this file directly...");} require_once("mainfile.php");
Felhasználói felület Modulnév meghatározása: Nyelvi fájl megnyitása: Keretrendszer megjelenítése (fejléc és bal oldali blokkok): $module_name = basename(dirname(__FILE__)); get_lang($module_name); include("header.php");
Felhasználói felület Saját program elemek Keretrendszer (jobb oldali blokkok és lábléc): $index=0; include("footer.php");
Felhasználói felület Nyelvi fájlok elhelyezése: ‘modules/Kviz/language’ könyvtár létrehozása Magyar nyelvű fájl: ‘lang-hungarian.php’ További nyelvek fájljai
Felhasználói felület Felhasználói felület aktiválása és elérése: Modul bekapcsolása A Kvíz modul elérése: ‘modules.php?name=Kviz’
Adminisztrációs felület
Fájlok elhelyezése: Adminisztrációs modul: ‘admin/modules/kviz.php’ Admin modul meghívása: ‘admin/case/case.kviz.php’ Link az admin menüben: ‘admin/links/links.kviz.php’ Nyelvi fájlok helye: ‘admin/language/’
Adminisztrációs felület Kapcsolatteremtés: a fájl direkt hívását megakadályozandó: Az admin jogok lekérdezése: if (!eregi("admin.php", $_SERVER['PHP_SELF'])) { die ("Access Denied"); } $aid = trim($aid); $result = sql_query("select radminsuper from ".$prefix."_authors where aid='$aid'", $dbi); list($radminsuper) = sql_fetch_row($result, $dbi);
Adminisztrációs felület A lekért jogosultságok vizsgálata: Saját programrészek A jogosultságvizsgálat másik ága: if ($radminsuper==1) { } else { echo "Access Denied"; }
Biztonság
Biztonság Biztonsági kérdések: Biztonságos működés Illetéktelenekkel szembeni védelem: A modul megfelelő beillesztésével ez elérhető
Biztonság Biztonságos működés: Az elvárt funkciókat valósítja meg Vissza nem fordítható tevékenységekről megerősítést kér Kellő mennyiségű információt közöl
Összefoglalás
Köszönöm Horváth Zoltán