PHP oktatási tapasztalatok Palócz István palocz.istvan@phpconf.hu Első Magyarországi PHP Konferencia 2003. március 29. Copyright PHP Konferencia, 2003, Palócz István
Nem csak webes alkalmazás Információs társadalom építőköve Miért tanítsunk PHP-t? Egyszerű Könnyen tanulható Modern technológia Nem csak webes alkalmazás Információs társadalom építőköve
Webszerver PHP értelmezővel Eszközök Webszerver PHP értelmezővel Fejlesztő környezet egyszerű szövegszerkesztővel Adatbázis szerver
Eszközválasztás szempontjai Jogtiszta szoftver Magyar nyelvű Könnyen telepíthető Több platformon elérhető Megbízhatóan működik
Diákszerver felállítása Konkrét megoldások Egylemezes megoldás Diákszerver felállítása
Xitami(phpconfCD/webserver/Xitami) Egylemezes megoldás Xitami(phpconfCD/webserver/Xitami) PHP CGI Windows telepítő(phpconfCD/PHP/install/Win32) Előnyei: Hazavihető Könnyen telepíthető "Hátrányok" Nem egységes beállítások Nem látható állandóan
Diákszerver felállítása Linux alap install +Apache +PHP Előnyei Egységes beállítások Bárhonnan elérhető (otthonrol is tud dolgozni a diák) Hátrányok Jóval nagyobb figyelemet kell fordítani a biztonságra Több munka a tanárnak
Kényelem vagy biztonság? Hogyan telepítsük Csomag Forrás Milyen módon kapcsolódjon a webszerverhez? CGI Modul
Kódkiemelés(phpconfCD/Devel/Editor/Win32/Crimson) Kódkiegészítés Fejlesztőkörnyezet Sorszámozás Kódkiemelés(phpconfCD/Devel/Editor/Win32/Crimson) Kódkiegészítés Helyzet érzékeny súgó Nyomkövetés
Algoritmizálási képesség HTML szerkesztés kód szinten Előismeretek Algoritmizálási képesség HTML szerkesztés kód szinten
Rövid elméleti bevezetés Konkrét példa: Vendégkönyv Hogyan kezdjünk neki? Rövid elméleti bevezetés Konkrét példa: Vendégkönyv <?php $fp = fopen ('szoveg.txt', "a"); fwrite($fp, $_POST['nev'].' : '.$_POST['szoveg'].'<br>'); fclose($fp); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <form method="POST" action="index.php"> <input type="text" name="nev"> <input type="text" name="szoveg"> <input type="submit"> </form> <?php readfile('szoveg.txt'); ?> </body> </html>
Rövid elméleti bevezetés Konkrét példa: Vendégkönyv Hogyan kezdjünk neki? Rövid elméleti bevezetés Konkrét példa: Vendégkönyv <?php $fp = fopen ('szoveg.txt', "a"); fwrite($fp, $_POST['nev'].' : '.$_POST['szoveg'].'<br>'); fclose($fp); ?> <?php $fp = fopen ('szoveg.txt', "a"); fwrite($fp, $_POST['nev'].' : '.$_POST['szoveg'].'<br>'); fclose($fp); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <form method="POST" action="index.php"> <input type="text" name="nev"> <input type="text" name="szoveg"> <input type="submit"> </form> <?php readfile('szoveg.txt'); ?> </body> </html>
Rövid elméleti bevezetés Konkrét példa: Vendégkönyv Hogyan kezdjünk neki? Rövid elméleti bevezetés Konkrét példa: Vendégkönyv <form method="POST" action="index.php"> <input type="text" name="nev"> <input type="text" name="szoveg"> <input type="submit"> </form> <?php readfile('szoveg.txt'); ?> <?php $fp = fopen ('szoveg.txt', "a"); fwrite($fp, $_POST['nev'].' : '.$_POST['szoveg'].'<br>'); fclose($fp); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <form method="POST" action="index.php"> <input type="text" name="nev"> <input type="text" name="szoveg"> <input type="submit"> </form> <?php readfile('szoveg.txt'); ?> </body> </html>
Program, javítása csinosítása Problémák felvetése További lépések Program, javítása csinosítása Problémák felvetése Biztonsági kérdések (PHP, HTML) Konkurens hozzáférés Munkamenet kezelés Adattárolás Duma v TKR program készítése
Amit érdemes megtanítani II. Tömbkezelő függvények XVIII. Dátummal és időponttal kapcsolatos függvények XXIV. Könyvtárkezelő függvények XXX. Filesystem functions XCIII. Munkamenet kezelő függvények XCVIII. String functions CI. URL függvények CII. Változókkal kapcsolatos függvények valamilyen adatbázis kezelő függvényei egy sablon rendszer használata
Kliens-szerver és a HTTP mechanizmus Munkamenet túlmisztifikálása Alapvető hibák HTML programozás Kliens-szerver és a HTTP mechanizmus Munkamenet túlmisztifikálása Adatellenőrzés hiánya
Szemléletbeli különbségek Hagyományos adatfeldolgozás Esemény vezérelt programozás PHP program Elindul és megáll, nem fut folyamatosan Nincs állandóan a memóriában lévő változó Egyszerre több példányban fut Csak a webszerveren keresztül működik (file://.... nem jó)
Saját munkamenet kezelő írása Munkamenet kezelés Működése Biztonság Nyílt szöveg /tmp könyvtár Saját munkamenet kezelő írása A PHP beípített lehetőségének testreszabása
Felhasználótól érkező adatok Adatellenőrzés HTML kimenet htmlspecialchars htmlentities urlencode strip_tags Felhasználótól érkező adatok _GET[], _POST[], _SESSION[]... Típus kényszerítés (int), (float), stb Szabályos kifejezésekkel való vizsgálat
Köszönöm