a programoz s oktat sa web es alkalmaz sfejleszt eszk z k seg ts g vel n.
Download
Skip this Video
Download Presentation
A programozás oktatása WEB-es alkalmazásfejleszt? eszközök segítségével

Loading in 2 Seconds...

play fullscreen
1 / 81

A programozás oktatása WEB-es alkalmazásfejleszt? eszközök segítségével - PowerPoint PPT Presentation


  • 69 Views
  • Uploaded on

A programozás oktatása WEB-es alkalmazásfejlesztő eszközök segítségével. Fábián Zoltán 2006 (az anyag itt elérhető: http://www.szily.hu/photoalbum/2006_Roadshow/2006_suli_webkonferencia_2.ppt ). Előzmények.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'A programozás oktatása WEB-es alkalmazásfejleszt? eszközök segítségével' - torin


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
a programoz s oktat sa web es alkalmaz sfejleszt eszk z k seg ts g vel

A programozás oktatása WEB-es alkalmazásfejlesztő eszközök segítségével

Fábián Zoltán

2006

(az anyag itt elérhető: http://www.szily.hu/photoalbum/2006_Roadshow/2006_suli_webkonferencia_2.ppt)

el zm nyek
Előzmények
  • 1982 – Commodore Plusz4 – Basic, AssemblySzámítástechnika tanítás (C-64 – BASIC), Pascal, Logo, ELAN, CLipper, C, Java, FazztScript nyelvek
  • 1992 – Világbanki project, programozás oktatása a Szilyben – Pascal nyelv
  • 1999 – Ismerkedés a PHP 3-mal, MySql-lel
  • 2000 – PHP oktatás kezdete a számítástechnikai programozók évfolyamán – szakdolgozatok (PHP+MySQL)
sok di k jelentkezik informatik ra az ltal nos iskola ut n mi rt

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Sok diák jelentkezik informatikára az általános iskola után. Miért?
  • A számítógép játék
  • A számítógép egy elvarázsolt világ,
  • A számítógép „titkai” megtanulhatók
  • A családban van informatikus, esetleg programozó
  • Korábbi elhivatott tanár

Van megfelelő motiváció, de kevés az ismeret

az informatikus di kok csek ly r sze lesz programoz mi rt
Az informatikus diákok csekély része lesz programozó. Miért?
  • Hozott képességek. Kell
    • algoritmizálási képesség,
    • kreativitás,
    • alkalmazni kell tudni a tanultakat,
  • Motiváltság
    • szorgalom – otthoni munka
    • kitartás – sokáig tart, amíg látványos eredményeket ér el az ember.
az alkot s v gya az alapvet motiv ci a programoz sra
Az alkotás vágya az alapvető motiváció a programozásra?

Mikor marad fent ez a motiváció?

  • Vannak viszonylag gyors sikerek, látványos előrehaladás
  • Olyan alkalmazások készítésének a képessége, amelyeket nap, mint nap használ
  • Látványos alkalmazások elkészítésének képessége
mi a helyzet k z piskol ban s az okj s szakm kban
Mi a helyzet középiskolában és az OKJ-s szakmákban?

Mi info tanárok mindannyian a Pascalon szocializálódtunk!

  • A középszintű Informatika érettséginek nem része a programozás, emelt szinten elegendő a Pascal nyelv ismerete
  • Informatikai alapismeretek érettségihez középszinten és emelt szinten elegendő a Pascal ismerete
  • OKJ középfokú programozó vizsgát lehet tenni Pascallal (Igaz kellene még egy nyelv, de a pontszám elegendő)
  • A képzési idő nem elég a jó programozási gyakorlat elsajátítására
ma m r a pascal nem motiv l el gg
Ma már a Pascal nem motivál eléggé
  • Nem grafikus – csak Delphi esetén vagy BGI grafikával
  • Nincs képkezelés, gombok, stb...
  • Kevés ahhoz, hogy olyan játékot írjon a gyerek, mint amit szokott játszani
  • Nincs köze az Internethez
  • A számítógép szerepe mára megváltozott, ablak egy kitágult világra
slide8

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás

MegoldásInternetes technológiák használata!

vannak gyors sikerek
Vannak gyors sikerek!

<?php

print(”A hello World!”);

?>

  • Gyorsan fejleszthető
  • A változók használata a típusok keveredése miatt nem túl szigorú
  • Elágazások, ciklusok használata érthető, világos
l tv nyos el rehalad s
Látványos előrehaladás
  • Az alkalmazásokkal egyszerűen HTML és PHP keverésével látványos megoldások érhetők el
olyan alkalmaz sok k sz t s nek a k pess ge amelyeket nap mint nap haszn l
Olyan alkalmazások készítésének a képessége, amelyeket nap, mint nap használ
  • Az internet használata során a diákok látják, hogy a site-ok jelentős része php alapú.
  • Viszonylag könnyen lehet készíteni alkalmazásokat, amelyek hasonlítanak nagy példaképekre.
l tv nyos alkalmaz sok elk sz t s nek k pess ge
Látványos alkalmazások elkészítésének képessége
  • Ha egy diák az Internetről levesz egy-egy ingyenes DHTML megoldást, akkor látványossá teheti az oldalt.
milyen rendszer felel meg az oktat s k vetelm nyeinek
Milyen rendszer felel meg az oktatás követelményeinek?
  • Lehessen interaktív programot írni
  • Legyenek alapvető struktúrák (szekvencia, iteráció, szelekció)
  • Függvény, eljárás hívás
  • Sokféle egyszerű adattípus
  • Összetett adattípusok: tömbök, rekordok
  • Globális és lokális változók
  • Paraméterátadás: cím és érték szerint is
  • Szövegkezelő függvények
  • Fájlkezelés
  • OOP
es lyes technol gi k

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Esélyes technológiák
  • Java (kliens és szerver oldal is)
  • Javascript (kliens oldal)
  • PHP (szerver oldal)
slide15
JAVA
  • Appletekre és kliens alkalmazásokra tökéletesen alkalmas
  • Adattípusok széles választéka áll rendelkezésre
  • Globális, lokális változók használhatók
  • Paraméterátadás: cím és érték szerint is
  • Függvény és eljárás
  • Szigorú programszerkezet. csak formai megfelelőség esetén fordul le a program
  • Fájlkezelés kliens alkalmazások esetén
  • Grafika, képkezelés
  • Vezérlési szerkezetek széles választéka
  • OOP

Kezdőnyelvnek nehéz, mert teljesen OOP centrikus!

javascript
Javascript
  • Majdnem mindenben megfelel
    • Fájlkezelés nincs a böngészőben
    • A tömbök kissé „furcsán” viselkednek
    • Futási idejű hibaellenőrzés nehézkes
slide17
PHP
  • Mindennek megfelel, kivéve
    • Nem túl szigorú a programszerkezet, futási időben történik a hibaellenőrzés
    • Nem interaktív –azért ez megoldható
    • Szerveroldali (majdnem csak)
    • OOP majdnem teljes a PHP5-ben
  • Erősségek
    • Sok szövegkezelő függvény
    • Sok fájlkezelő függvény

Jó választás

slide18

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás

Jó-e a PHP kezdőnyelvnek?

<?php

print(”Hello Word!”);

?>

  • Az elején egyszerű, természetes, a tanulással együtt lehet összetett alkalmazásokat írni.
  • Alapesetben nem interaktív
milyen felt telek kellenek a tan t shoz ha lehet olcs n
Milyen feltételek kellenek a tanításhoz (ha lehet olcsón)?
  • HardverEgy mai átlagos PC, lehet kicsit régibb is.
  • MS Windows 2000, Windows XP vagy Linux op. rendszer, azaz platform független rendszer.

Az eszközök ingyenesek

  • Jegyzettömb, vagy valami erősebb ASCII editor vagy komolyabb alkalmazásként, PSPad
  • Apache és később MySQL
  • Böngésző – IE6 vagy Firefox 1.5+
komolyabb eszk z k
Komolyabb eszközök
  • WAMP – Windows Apache MySQL PHP (XAMP, BigApache, Uniserver, stb)
  • PHP Eclipse platformfüggetlen IDE – JAVA-ra épül
  • Zend IDE – minden ami a fejlesztéshez kell (Editor, Debugger, Profiler)
  • CodeCharge – későbbi előadás
el ismeretek

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Előismeretek
  • Stabil, de egyszerű HTML alapok kellenek
    • A HTML oldal szerkezete
    • Néhány alapvető tag:
      • <p>,<br>, <table>,<th>,<tr>,<td>,
    • A formázáshoz szükséges paraméterek
    • <FORM>
  • Jó, ha van stíluslap, CSS tudás

A fenti dolgokat megtanítjuk, vagy átvesszük az oktatás előtt

slide22
A kliens-szerver architektúra koncepció lényegét elmagyarázom
  • A fejlesztői gépen a kliens és szerver egy és ugyanaz lehet
els l p sek a php k d s a html k d viszonya
Első lépések – a PHP kód, és a HTML kód viszonya
  • A PHP program kimenete HTML kód, amit a böngésző értelmez!
  • Sulykolni kell egyszerű kiírást és formázást létrehozó példákon keresztül
  • Ezalatt szintaktikai alapismeretek a PHP-ban.
  • Ha második nyelv, akkor jelmondat:

Mint a C-ben (majdnem)!

Lássunk néhány példát!

a majdnem hello world php ben
A majdnem „Hello world!” PHP-ben.

Majdnem_Hello_world.php

<html>

<head>

<title>Hello world</title>

</head>

<body>

Hello world!

</body>

</html>

Ha a PHP fájl csak HTML kódból áll, akkor, mintha nem is lenne PHP. A PHP értelmező beolvassa a fájlt, majd kiküldi a szervernek változatlan formában.

a hello world php ben
A „Hello world!” PHP-ben.

helloworld1.php

<html>

<head>

<title>Hello world</title>

</head>

<body>

<?php

echo ”Hello world!”;

?>

</body>

</html>

A PHP nyitó tagtől a zárótagig az interpreter értelmezi a kódot. A kimenet a webszerverhez kerül.

alternat v ki r utas t sok
Alternatív kiíró utasítások

helloworld2.php

<html>

<head>

<title>Hello world</title>

</head>

<body>

<?php

echo ”Ez is jó lesz kiírásra”;

print (”Hello world!<br>”);

printf (”%6d a sorszáma”, 1984);

?>

</body>

</html>

A print() többször használatos, sőt van a c-hez hasonló printf() is, ugyanolyan formázó stringek használatával.

Az egyszerű példákban megjelenítünk HTML tag-eket is a PHP segítségével

v ltoz k s t pusok bevezet se
Változók és típusok bevezetése
  • Ha a változók és adattípusok fogalmát ismerik a diákok, akkor átismételjük a PHP-ben lévőket.
  • Ha nem ismerik azokat, akkor bevezetjük az egyszerű típusokat.
    • A String típus hová soroljuk? Szerintem az egyszerűek közé.
  • Változók használatának szintaktikai szabályai
  • A középiskolás korosztály esetén célszerű a példákon keresztül megközelíteni a programozás tanulását, és így eljutni az elméletig.
a php t pusos nyelv de
A PHP típusos nyelv, de …
  • A változó neve mindig $ jellel kezdődik. A név kis és nagybetű érzékeny!
  • A változó típusa értékadáskor dől el. Pl.:

$s = ”Szia, ez egy string”; // string

$d = 123; // egész szám

$f = 123.23457; // float

$b = true; // logikai típus

$t = array(); // Tömb típus

$fp = fopen(”C:/valami.txt”,”r”); // erőforrás típus

$o = new semmi(); // osztályokról később

Gyakori az automatikus típuskonverzió:

Echo $s . ” : ” . $d; // Stringre konvertál minden kiírandót

// . A stringek összefűzésére használt jel

oper torok haszn lata
Operátorok használata
  • Stringek összefűzése
  • Matematikai alapműveletek

<?php

$x = 5;

$y = 10;

$z = $x.”*”.$y.” eredménye:”.($x*$y).” lesz”;

print($z);

?>

szelekci

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Szelekció

Az elején nem törekszünk minden vezérlési szerkezet megismertetésére

<?php

$x = rand(0,100);

if($x <50){

print(” Nem nyert”);

}else{

print(” Ön nyert!”);

}

?>

szelekci 2
Szelekció 2.

Persze a többi szerkezetet is megtanítjuk később

if( feltétel){

utasíás1;

Utasítás2;

}elseif(feltétel){

alternatív_utasítás1;

alternatív_utasítás2;

}else{

alternatív_2utasítás1;

alternatív_2utasítás2;

}

Switch(ertek){

case kons1 :

utasítás;

break;

case konst2 :

…….

default

utasítás;

}

konstansok default rt kek
Konstansok, default értékek
  • Konstans definiálása

Define(”KNEV”, érték);

  • Ha nem tudom, hogy korábban már definiáltam-e egy konstanst, akkor adok neki egy default értéket

if( !defined(”KNEV”) ) define(”KNEV”, ”default érték”);

  • Ha nem tudom, hogy egy változó már létezik-e, azt is megvizsgálhatom és adhatok neki default értéket.

if(!isset($a) ) $a = 1112; // default érték;

Ha tudni akarom hogy létezik-e a változó vagy az értéke ...

if (!isset($a) || ( $a == 0 ) ) $a = 1;

iter ci

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Iteráció

Mintapélda a ciklus használatának bemutatására

<?php

for($i=0; $i< 100; $i++){

print($i.”<br>”);

}

print(”<table>”);

for($i=0; $i< 100; $i++){

print(”<tr>”);

print(”<td>”.$i.”</td>”);

print(”<td>”.($i+100).”</td>”);

print(”</tr>”);

}

print(”</table>”);

?>

iter ci1
Iteráció

Mintapélda ciklusok alkalmazására:

$i = 0;

$x = 0;

while( $x> 80 && $i < 100 ){

$x = rand(1,100)

print($i.” : ”.$x);

$i++;

}

$i = 0

do{ echo $i;

} while ($i > 0);

Ezekre a ciklusokra a tanulás során a programozási tételeknél lesz szükség

t mb k

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Tömbök
  • Bevezetem a tömböket, mint egyszerű adatok sorozatát.
  • Index, tömbelem van stb...
  • Csak egy dimenziós tömbök
  • Példák a for ciklus és a tömbök együttműködésére ... itt most nem részletezem
iter ci ii
Iteráció II.

A foreach speciális ciklus, később van jelentősége

$t = array("Pista", "géza");

foreach($t AS $i => $e){

print("index: ");

print($i);

print(", Érték: ");

print($e);

print("<br>");

}

A futás eredménye:

Index: 0, Érték: PistaIndex: 1, Érték: géza

elj r sok f ggv nyek

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Eljárások, függvények
  • Hol deklarálhatom, és mikor érhetem el.
  • Paraméterátadás (Érték szerinti, default érték, cím szerint)
  • Eljárás a PHP-ban paraméterekkel

function procnev($a, $b = 123){

echo $a . $b;

}

  • Függvény átadott paraméterekkel

function fnev($a){

$a = $a +2;

return $a;

}

  • Eljárás cím szerinti paraméterátadással

function fnev ( &$a ){

$a = $a *2;

}

v ltoz k hat sk re s globalit sa

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Változók hatásköre és globalitása
  • A php oldalon létrejövő változók globálisak
  • A függvények/eljárásokon belül deklarált minden változó lokális.
  • Ha a globális névtérből importálhatok változókat
  • Léteznek szuperglobális változók, amelyek a PHP kód minden részérő elérhetők.
slide39

Nézzünk egy példát

<?php

$a = 1118; //Globális változók

$b = 123;

$c = 9999;

$GLOBALS[”hello”] = ”Ez szuperglobális” //Mi ez tömb?

Function fn(){

global $a; // Importálom a globális névtérből,

// tehát használhatom a függvényen belül

$c = ”Ez lokális változó”;

$a ++; //A globális változó értékét növeltem

$szoveg = $GLOBALS[”hello”];

echo $szoveg.

}

?>

egy kis kit r get met dus

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Egy kis kitérő - GET metódus
  • Ha egy HTML oldalon van egy link, és arra kattintasz, akkor paramétert adsz át a következő PHP oldalnak:

<a href=”http://localhost/getpelda.php?sz=123&ok=sziamiau”>

Ez itt a link

</a>

Ez a paraméterátadás GET metódussal zajlik.

A meghívott oldalon automatikusan létrejön az alábbi változó:

$_GET[”sz”] és értéke 123 lesz!

getpelda.php

<?php

Echo ”Ezt kaptam: ” . $_GET[”sz”] . ”<br>”;

echo ”Meg ezt: ” . $_GET[”ok”]

?>

post met dus bevezet se interaktivit s
POST metódus bevezetése - interaktivitás

A HTML oldalon lévő űrlap elküldi az adatokat egy másik oldalnak POST metódussal.

Index.html

<form action=”postpelda.php” method=”POST”>

<input type=”text” name=”name”>

<input type=”checkbox” name=”chk”>

<input type=”submit” name=”ok” value=”ok”>

</form>

A meghívott oldalon létrejön automatikusan a $_POST tömb és azt feldolgozzuk

postpelda.php

<?php

foreach( $_POST AS $i => $e){

echo ”index: ” . $i . ”, Érték: ”. $e . ”<br>”;

}

?>

Önmagukat meghívó oldalakat alkalmazhatunk!

asszociat v t mb k t pusok kevered se

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Asszociatív tömbök, típusok keveredése
  • A tömbelemeket tetszőleges típusú értékekkel indexelhetem.
  • A tömb elemeinek indexét tetszőlegesen keverhetem.
  • A tömbökben tárolt adatok típusa keveredhet!

$a[”gj”] = 123;

$a[1] = ”Ez fura”;

  • A tömbökben tárolhatok tömböket
  • A tömbök mérete dinamikusan változhat.

$b = array(”Hi”, 1, true, array(11, 22) );

$b[4] = ”Ez is bekerül!”;

  • A foreach ciklust igazából arra lehet jól használni, hogy feldolgozzunk asszociatív tömböket!
sz vegkezel s

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Szövegkezelés
  • A bőség zavara (97 függvény)
  • A fontosabbak:

substr(),

str_replace(),

strlen(),

pos(),

strpos()

reguláris kifejezések...

  • Mintafeladatok:
    • Állapítsa meg, hogy egy szövegben szerepel-e egy adott karakter, és ha igen, akkor hol szerepel?
    • Cserélje ki egy szövegben előforduló minden email címben a @ jelet #-ra
f jlkezel s

Tartalom

  • Motiváció
  • Irány az internet
  • Eszközválasztás
  • Jó-e a PHP
  • PHP oktatási tematika
    • Első lépések
    • Szelekció
    • Iteráció
    • Tömbök
    • Eljárás, Függ.
    • Változók
    • GET, POST
    • Assz. tömbök
    • Szövegkezelés
    • Fájlkezelés
  • Folytatás
Fájlkezelés
  • Fájlok kezelése C szintaktika szerint,
    • fopen(),fclose(), feof(),fgets(), fgetc()
    • fseek(), fwrite()
  • Fájlok ahogy én szeretem
    • $str = file_get_contents(”file.txt”)
    • file_put_contents(”file.txt”,$str)
    • File() => array
  • Fájlrendszer műveletek
    • is_file(), is_dir(), file_exists(), dir()
    • dirname(), pathinfo()
  • WEB-es fájlműveletek, relatív címzés sulykolása,
    • $_SERVER["DOCUMENT_ROOT"]
    • $_SERVER[”PHP_SELF"]
  • __FILE__
f jlkezel s mintafeladatok
Fájlkezelés mintafeladatok
  • Készíts programot, amely a szerveren elmenti minden letöltő IP címét, és a böngészőjének típusát, majd készíts programot, amely kiértékeli a látogatottsági adatokat
  • Készítsd el egy könyvtárban lévő fájlok listáját! Jelenítsd meg a fájlok méretét is!
  • Készítsd el egy könyvtárban lévő fájlok listáját úgy hogy a fájlokat az internetről le lehessen tölteni. A fájl típusának megfelelő ikonok jelenjenek meg a fájl neve mellett!
  • Egy speciálisan formázott szövegfájlban tároljuk a könyvtárban lévő fényképek leírásait. Írj programot, amely kiírja a képeket egy weboldalra és hozzájuk fűzi a szövegeket.
  • Készíts programot, amellyel rekurzívan be lehet járni a szerver könyvtárstruktúráját
f jlok includol sa
Fájlok includolása
  • Miért kell – újrafelhasználható kód, struktúrált programozás
    • include(), include_once()
    • require(), require_once()
a szuperglob lis t mb k
A szuperglobális tömbök

Ez a téma átvezet a következő év anyagára.

$_GET – A GET metódussal átadott paraméterek tömbje

$_POST – a POST-tal átadott paraméterek tömbje

$_COOKIE – a php oldal meghívásakor a böngészőktől érkező cookie-k tömbje

$_SESSION – a munkamenet azonosítók tömbje (később)

$_SERVER – a webszerver környezeti paramétereit tároló tömb

$_ENV – az operációs rendszer környezeti változóit tároló tömb

$_FILES – A html űrlapról feltöltött file adatait tároló tömb

$_REQUEST – A böngésző által elküldött kérés paramétereit tartalmazó tömb

$GLOBALS – ebben minden benne van

egy nagyon s r tan v v ge
Egy nagyon sűrű tanév vége
  • Körülbelül idáig juthatnak el egy tanév alatt a diákok egy tanév alatt heti 3-4 órában tanulva a programozást a semmiről
  • A tanév alatt természetesen algoritmusokat írunk, amikor csak lehet
  • Programozási tételek szerepelnek azután, miután a ciklusok, eljárások és függvények már ismertek
  • Otthoni munka fontos. Ma már a diákok jelentős részének van otthon számítógépe – lehet HF-et adni nekik. Akinek nincsen, az iskolában kaphat gépidőt.
folytat s a m sodik v
Folytatás – a második év
  • Programok tervezésének ismerete -
  • A tanévben adatbázisokkal kapcsolatos ismeretek
  • OOP programozás, és azok alkalmazása
  • Modern programozási módszertan
  • Kliens oldali megoldások (CSS, DOM, Javascript, Java, XML, AJAX)
adatb zisok kezel se 1 fapados m dszer
Adatbázisok kezelése? 1. „Fapados” módszer
  • A program kapcsolódik az adatbázishoz
  • Kiválasztja a célzott adatbázist
  • Elküld egy SQL lekérdezést az adatbázisra vonatkozólag az adatbázis szervernek
  • Az eredmény rekordszetet feldolgozza
  • Kiírja az eredményt.
  • Nézzük:
kapcsolat l trehoz sa
Kapcsolat létrehozása

<?php$kapcsolat = mysql_connect("localhost", "felhasználónév", "titok");if (!$kapcsolat) {    die('Nem lehet csatlakozni ' . mysql_error()));}echo('A csatlakozás sikerült');mysql_close($kapcsolat);

?>

  • A lefutás után a kapcsolat megszakad a PHP és az adatbázis szerver között. A kapcsolat felépítése a leglassabb az adatbázis műveletek között.
  • Perzisztens kapcsolat időtakarékosabb, mert meglévő kapcsolatot használ az új kapcsolat helyett: mysql_connect() helyett mysql_pconnect().
  • A $kapcsolat változó típusa erőforrás típus (valójában a megadott memória területre mutató pointer)
  • A mysql kapcsolat hibáját le lehet kezelni: mysql_error();
  • A kapcsolatot le is lehet zárni: mysql_close(). az oldal lefutásakor a kapcsolat lezárul
az adatb zis kiv laszt sa
Az adatbázis kiválasztása

<?php

$adatbazis_kivalasztva = mysql_select_db('szily', $kapcsolat);

if (!$adatbazis_kivalasztva) {

die('Nem tudom kiválasztani a szily adatbázist: ' . mysql_error())

}

?>

  • Le lehet kérdezni az adatbázisok listáját is. És még sok egyéb adatbázis-kezelő függvény van a PHP-ben, de erre most nem térek ki.
sql lek rdez s elk ld se
SQL Lekérdezés elküldése

<?php

$kapcsolat = mysql_connect("localhost", "felhasználónév", "titok");

if (!$kapcsolat) {

die('Nem lehet csatlakozni ' . mysql_error()));

}

echo('A csatlakozás sikerült');

$adatbazis_kivalasztva = mysql_select_db('szily', $kapcsolat);

if (!$adatbazis_kivalasztva) {

die('Nem tudom kiválasztani az ize adatbázist: ' . mysql_error())

}

$eredmeny = mysql_query ("SELECT * FROM nevsor");

if (!$eredmeny) {

  die('Érvénytelen lekérdezés:' . mysql_error());

}

?>

A lekérdezés eredménye egy rekordszet, amit fel kell dolgoznunk ciklussal, vagy egyéb módon.

az eredm ny feldolgoz sa s ki r sa t bl zatban egy html oldalra
Az eredmény feldolgozása és kiírása táblázatban egy html oldalra

<?php

$kapcsolat = mysql_connect("localhost", "felhasználónév", "titok");

$adatbazis_kivalasztva = mysql_select_db(‘szily', $kapcsolat);

$eredmeny = mysql_query ("SELECT * FROM nevsor");

echo ”<table>”;

echo ”<tr><td>név</td><td>cím</td><td>Életkor</td></tr>”;

while ($sor = mysql_fetch_array($eredmeny)) {echo ”<tr>”;

echo ” <td>”. $sor['nev'] .” </td>”;

echo ” <td>”. $sor['cim'] .” </td>”

echo ” <td>”. $sor['kor'] . ” </td>”;

echo ”</tr>”;

}

echo ”</table>”;

mysql_close();

?>

  • A mysql_fetch_array() egy rekord adatait beteszi egy asszociatív tömbbe.
  • A while ciklussal addig olvassuk a rekordszet eredménysorokat, amíg vannak még rekordok. Ha nincs több rekord, akkor a $sor értéke false és vége a ciklusnak.
adatok m dos t sa egy adatb zisban t rl s
Adatok módosítása egy adatbázisban - Törlés
  • Egy oldalon rábökünk egy linkre vagy egy nyomógombra, ami meghív egy másik oldalt, ahol a megfelelő SQL utasítás lefut végrehajtja a szerver.

<a href=”torol.php?id=100”>Törlés</a>

Torol.php

<?php

$kapcsolat = mysql_connect("localhost", "felhasználónév", "titok");

$adatbazis_kivalasztva = mysql_select_db(‘szily', $kapcsolat);

$e = mysql_query (”DEL * FROM nevsor WHERE id=”.$_GET[”id”]);

If ($e){

echo ”A törlés sikerült”;

}else{

echo ”A törlés nem sikerült”;

}

mysql_close();

?>

A kódot javíthatjuk a korábbiakban tanult isset() fv. segítségével.

m dos t s j sor besz r sa ugyanezen az elven de nagyon macer s egyszer bben lehet e
Módosítás, Új sor beszúrása, ugyanezen az elven, de nagyon macerás… egyszerűbben lehet-e?
  • Minden oldalon ugyanazokat a műveleteket kell elvégezni (kapcsolódás, adatbázis választás, stb…) => valami include kellene

<?php

Include(”adatbazis.php”);

$e = mysql_query (”DEL * FROM nevsor WHERE id=”.$_GET[”id”]);

If ($e){

echo ”A törlés sikerült”;

}else{

echo ”A törlés nem sikerült”;

}

?>

  • A kapcsolódásért felelős programrészleteket minden oldalon beincludoljuk a programba,
  • Más library jellegű eljárásokat és függvényeket is készíthetünk, betesszük őket az include fájlba és a megfelelő oldalon beincludoljuk.
m g mindig sokat kell dolgozni
Még mindig sokat kell dolgozni!
  • Készítsünk olyan előre gyártott függvényt, amely a gyakori műveleteket (lekérdezés, beszúrás, módosítás, törlés) eljárás formájában hajtja vége, megfelelő paraméterek átvételével
  • A lekérdezés eredményét a függvény eleve tömb formájában adja vissza.
  • Később mutatok ilyet...
adatb zis f ggetlens g
Adatbázis függetlenség
  • A különböző adatbázis-kezelőkhöz nem pontosan ugyanazok a függvények tartoznak
  • Kell egy adatbázis-absztrakció, amely eltakarja az adatbázis-kezelők közti különbséget
  • Létező lehetőségek:
    • PEAR – A PHP-hez fejlesztett hivatalos programcsomag – nagy falat, de sok mindent tud
    • ADODB Library – adatbázis absztrakciós felület, viszonlyag egyszerűbben el lehet sajátítani
    • PHP 5.1.x – PDO, Új hivatalos adatbázis absztrakciós réteg.

Hogyan működnek ezek?

oop alap adatb zis kezel s
OOP alapú adatbázis kezelés
  • Később ilyet láthatunk, tervezést igényel
alkalmaz sfejleszt s model view controler elk pzel s
AlkalmazásfejlesztésModel-View-Controler elképzelés
  • Az alkalmazások további rétegezése
  • Model => az adatbázis modell, eddig erről volt szó
  • View => Az adatbázis adatainak megjelenítését vezérli – az adatbázis absztrakcióra építjük. Kellhet hozzá kliens oldali komponens is.
    • (Javascript, Flash - ActionScript, Java, CSS)
  • Controller => A felhasználó tevékenységére hogyan reagáljon a felület – eseménykezelés a böngészőben
    • Kliens oldali megoldások kellenek (Javascript, CSS, ActionScript, Java Applet, AJAX, stb…)
azonos t s bel ptet s session
Azonosítás, beléptetés, session
  • A user a HTML űrlapon beírja a usernév, password párost
  • Elküldi a szervernek az adatokat, amit az oldal ellenőriz az adatbázis alapján
  • Később már csak a belépettség állapotát ellenőrizzük.
  • Mielőtt ezt megnéznénk egy keveset halljunk a http protokollról
http protokoll gyorstalpal cookie k
HTTP protokoll gyorstalpaló – Cookie-k
  • GET vagy POST kéréskor először a kérés headerei mennek a szerverhez.
  • A headerek közül az egyik legfontosabb a Cookie.
  • A cookie a böngészőn tárolt max. 4 kb-nyi adat. A Netscape vezette be. A cookie-kat a látogató azonosításra, számlálásra használják, stb...
  • A cookie-t a web szerver elküldi a PHP-nak, amit azzal fel lehet dolgozni.
  • A PHP oldal a először a válasz header-eit küldi el, amihez a webszerver hozzáteszi a magáét
  • A PHP oldal a HTML tartalmat csak ezután küldheti ki a szervernek
cookie kezel s p lda h nyszor l togatta az oldalt
Cookie kezelés példa – hányszor látogatta az oldalt

<?php

if(isset($_COOKIE["counter"])) // Elküldte-e a counter nevű cookie-t

$counter = $_COOKIE["counter"]; //Ha igen, akkor megjegyezzük az értéket

else

$counter = 0; //Még nem volt az oldalon

$counter ++; //Növeljük a látogatottság számlálót

if(isset($_POST["nev"])) $nev = $_POST["nev"]; //Ha beírta az adatokat, akkor majd megjelenítjük

else $nev = "";

if(isset($_POST["pwd"])) $pwd = $_POST["pwd"];

else $pwd = "";

setcookie("counter",$counter,time()+30*24*60*60); // Beállítom a cookie értékét és elküldöm a cookie-t a

// böngészőnek. A cookie lejárata 1 hónap

?>

<HTML>

<HEAD><TITLE>Cookieteszt</TITLE></HEAD>

<BODY>

<FORM METHOD="POST" ACTION=”cookietest.php">

<INPUT TYPE="text" NAME="nev" VALUE="<?php print($nev); ?>"><br>

<INPUT TYPE="password" NAME="pwd">

<INPUT TYPE="submit">

</FORM>

Belépések száma: <?php print($counter);?><br>

</BODY>

</HTML>

session k kezel se 1
Session-ök kezelése 1.
  • A kliens oldalon tilos éles információt tárolni - > a szerveren kell olyan helyen, amit a PHP tud olvasni, de a webről nem elérhető
  • A session olyan fájl, amiben a PHP oldalak adatokat tárolhatnak. Ezek a többi oldalon is elérhetők (globális értékek)
  • A tárolás módja: az adatok serializációja (Az értékeket átalakítjuk speciális stringgé, $str = serialize($tomb) és vissza $tomb = unserialize($_SESSION[”tomb”])) pl.:

col|a:4:{

i:0;a:3:{s:5:"order";i:10;s:4:"view";s:1:"1";s:5:"width";i:0;}

i:1;a:3:{s:5:"order";i:9;s:4:"view";s:1:"1";s:5:"width";i:10;}

i:2;a:3:{s:5:"order";i:8;s:4:"view";s:1:"1";s:5:"width";i:20;}

i:3;a:3:{s:5:"order";i:7;s:4:"view";s:1:"1";s:5:"width";i:30;}

i:4;a:3:{s:5:"order";i:6;s:4:"view";s:1:"1";s:5:"width";i:40;}

}

A session véletlenszerű nevet kap, valami ilyet és ilyen nevű fájlba kerülnek az adatok. pl.:

sess_ade7acbe988ecddbfbed16166ded0e54

  • A fájlnevet cookieban elküldi a szerver a böngészőnek. A cookie lejárata azonnali, tehát ha a user kilép a böngészőből a cookie érvénytelenné válik – így a kliens oldalra kerülő információ segítségével sem lehet hozzájutni a sessionben tárolt adatokhoz.
session kezel s 2
Session kezelés 2.

session.php

<?php

session_start(); //megnyitom a sessiont, ha nincsen, akkor létrehozok egyet

if(isset($_SESSION[”szamlalo”]))

$i = $_SESSION[”szamlalo”] + 1;

else

$i = 1;

echo ”Ennyi oldalon át volt session kezelés: ”,$i.”<br>”

$_SESSION[”szamlalo”] = $t; //letároljuk a megőrzendő adatot

session_write_close();

?>

<a href=”session.php”>Kattints ide</a>

  • A session megnyitása előtt semmiféle html tartalom nem kerülhet a kimenetre, mivel a session-cookie is header adat, aminek a html tartalom előtt kell kikerülnie.
  • Ha nem zárjuk le az oldalon a session-t, akkor a rendszer automatikusan lezárja, mihelyt lefutott a script
  • A lezárás után a $_SESSION[] tartalmát már nem lehet cookie-ba írni.
bel ptet rendszer
Beléptető rendszer

<?php

$name ="";

$pwd ="";

Session_start();

if(!isset($_SESSION["logged_in"])) $_SESSION["logged_in"] = False;

If (!$_SESSION["logged_in"]){

if( isset($_POST["name"]) && isset($_POST["pwd"])){ //Ha később login formot használunk POST-tal

$name = $_POST["name"];

$name = $PHP_AUTH_USER;

$pwd = $PHP_AUTH_PW;

//A jelszó és usernév ellenőrzése adatbázisból

mysql_connect("hostname", "username", "password") or die ("Unable to connect to database.");

mysql_select_db("Userlista") or die ("Unable to select database.");

$sql = "SELECT * FROM users WHERE username='$name' and password='$pwd'";

$result = mysql_query($sql); // Ha az eredménynek 0 sora van => nincs ilyen user és jelszó

// ha 1, akkor van

$num = mysql_numrows($result);

if($num>0){ //Ide kell betenni a jelszóellenőrzést

$_SESSION["logged_in"] = True; //vagy sima text vagy mysql lekérdezés stb...

}

}

}

If (!($_SESSION["logged_in"])){ //Authentikálás a szevrer segítségével

header('WWW-Authenticate: Basic realm="Beléptetés!"');

header('HTTP/1.0 401 Unauthorized');

exit;

}

?>

A rendszer csak a beléptetés tényét tárolja, de sem a usernevet, sem a jelszót nem szabad biztonsági okokból a sessionben tárolni.

e mailek k ld se kicsit hossz a k d
E-mailek küldése (kicsit hosszú a kód)

Lehetne fapadosan is, de miért ne tegyük elegánsabban, pl. adatbázisból véve a címeket?

include("phpMailer/class.phpmailer.php");

set_time_limit(20*60);

$maxmail = 220;

$con = mysql_connect('localhost','fz',‘jelszo') or die("Nincs kapcsoalt az adatbázissal");

if(!mysql_select_db("roadshow",$con)) die("Nem sikerült az adatbázishoz csatlakozni");

$sql = "SELECT id, mail, Name, elment, ismeros, nomail FROM mailcimek WHERE mail NOT IN (SELECT email FROM kizarva) ORDER BY mail";

$arr = array();

$rs = mysql_query($sql);

$i = 0;

while($sor = mysql_fetch_assoc($rs)){

if(!$sor['elment']){

$arr[$i] = $sor;

$i++;

}

}

//---------- levelek küldése -------------

$Logfilename = "./webkonferencia.log";

$log = file_get_contents($Logfilename);

for($j = 0;$j<count($arr) && $j<$maxmail ; $j++){

$mail = new phpmailer();

$mail->IsSMTP(); // set mailer to use SMTP

$mail->Hostname = "www.szily.hu"; // SMPT szerver címe

$mail->Host = "10.1.1.1"; // SMPT szerver címe

$mail->IsHTML(true); // set email format to HTML

$mail->SMTPAuth = false; // turn on SMTP authentication

$mail->From = "fz@szily.hu"; // Küldő emailcime

$mail->FromName = "Fábián Zoltán"; // Én vagyok

$mail->AddAddress($arr[$j]['mail']); //Cím hozzáadása

$mail->Subject = "Web Konferencia Szily Kálmán RoadShow 2006";

$mail->Body = file_get_contents("level_ism.html");

$mail->AltBody = file_get_contents("level_ism.txt");

if($mail->Send()){

$logmail .= " - levellkuldes sikeres volt\n";

$sqlupdate = "UPDATE mailcimek SET elment = 1 WHERE id = ".$arr[$j]["id"]." ";

$db=mysql_query($sqlupdate);

}else{

$logmail .= " - levélküldés nem sikerült\n";

}

print($logmail);

$log .= $logmail;

file_put_contents($Logfilename,$log);

}

mvc sablon rendszer haszn lata smarty
MVC – sablon rendszer használata - Smarty
  • Válasszuk szét a programozót és a designert!
    • design színek, képek, stílusok, azaz html tartalom.
    • Program – tartalom
  • A két fél lehetőleg ne avatkozzon egymás dolgaiba, de kell kapcsolódási felület => sablon
  • A sablon olyan fájl, ami HTML kódot tartalmaz + a tartalom beszúrásához jelölőket.
  • A jelölő legyen például {$valtozonev}
  • A jelölő lehet más is ...
smarty 2 egy port l csontv za
Smarty 2 – egy portál csontváza

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<TITLE>CMS rendszer - skeleton</TITLE>

</HEAD>

<BODY>

<TABLE>

<TR>

<TD colspan=2>{$fejlec} </TD>

</TR>

<TR>

<TD>{$menu}</TD><TD>{$tartalom}</TD>

</TR>

</TABLE>

</BODY>

</HTML>

smarty3 a csontv z motorja a php k d
Smarty3 – a csontváz motorja, a PHP kód

<?php

// ---- Aktuális file elérési útvonala -----------

define("PATH", realpath(dirname(__FILE__)));

define("SMARTY_ROOT","D:/wwwroot/diak/2005inf/_lib/smarty/"); // A smartyhoz szükséges beállítások

define("SMARTY_DIR", "D:/wwwroot/diak/2005inf/_lib/smarty/libs/");

include("D:/wwwroot/diak/2005inf/_lib/smarty/libs/Smarty.class.php"); // Smarty beszerkesztése

$smarty = new Smarty();

$smarty->template_dir = SMARTY_ROOT."templates_c/"; // Smarty szükséges könyvtárai

$smarty->compile_dir = SMARTY_ROOT."templates_c/";

$smarty->config_dir = SMARTY_ROOT."templates_c/";

$smarty->cache_dir = SMARTY_ROOT."templates_c/";

//-----------------------------

$fejlec = "Fejléc tartalma";

$menu = "<a href='index.php?x=1'>Elso</a><br>\n";

$menu .= "<a href='index.php?x=2'>Kettes</a><br>\n";

$menu .= "<a href='index.php?x=3'>Harmas</a><br>\n";

$menu .= "<a href='index.php?x=4'>Négyes</a><br>\n";

$x = isset($_GET["x"]) ? $_GET["x"] :"";

if(!empty($x)){

$tartalom = "<div style='height:".($x*200)."px; width:".($x*250)."px'>”;

$tartalom .= „Ez függ a menüben átadott paramétertől: ".$x."</div>";

}else{

$tartalom = "Ez itt a tartalom";

}

//------------------------------

$smarty->assign("fejlec",$fejlec);

$smarty->assign("menu",$menu);

$smarty->assign("tartalom",$tartalom);

$smarty->display(”./cms.tpl");

?>

f jlok felt lt se
Fájlok feltöltése

Feltolt.html

<FORM method="post" action=”feltolt.php" enctype="multipart/form-data">

Fájlnév <input type="file" size=50 title="(Max. méret 5M)"><br>

<input type="submit" value="Ment" ><br>

<input type="submit" value="Mégsem">

</FORM>

feltolt.php

<?php

ini_set("max_execution_time", 300); //sokáig tarthat a fájlfeltöltés

reset($_FILES);

list($key,$up) = each($_FILES);

if(!empty($up["name"])){$errorcode = $up['error'];

switch($errorcode){

case 1:

case 2: $errmsg = "Fájl túl nagy. ".ini_get("upload_max_filesize").") ".msg("FILENAME").": "; break;

case 3: $errmsg = ”Részben feltöltött fájl”; break;

case 4: $errmsg = ”Nincs feltöltött fájl"; break;

default: $errmsg = ”Fájl feltöltve”;

move_uploaded_file($up["tmp_name"],”C:/valahova/".$up["name"]);

}

}

print($errmsg);

?>

A példában egy fájlt töltünk fel, de tetszőleges számút is lehet megfelelő módon. A fájlfeltöltésnél vigyázni kel arra, hogy a feltöltött fájlt ne lehessen elérni közvetlenül a webszerverről, illetve szűrni kell, hogy milyen típusú fájlokat lehessen feltölteni.

el re defini lt library k pear
Előre definiált library-k - PEAR
  • Előre definiált osztályok százai, a PHP által hivatalosan támogatott.
  • Minőségbiztosított kód!
  • Egyszerű példa – konfigurációs fájl egy alkalmazáshoz

<?php

require_once('Config.php');

$conf =& new Config_Container('section', 'conf');

$conf_DB =& $conf->createSection('DB');

$conf_DB->createDirective('type', 'mysql');

$conf_DB->createDirective('host', 'localhost');

$conf_DB->createDirective('user', 'root');

$conf_DB->createDirective('pass', 'root');

$config = new Config();

$config->setRoot($conf); // write the container to a php array   

$config->writeConfig('/tmp/config_test.php',

'phparray',   

                   array('name' => 'test')

);

echo $conf->toString('phparray', array('name' => 'test'));

?>

A Pear csomag minden tagja automatikusan beincludolja azokat a pear fájlokat, amelyek szükségesek az osztály működéséhez! A programozónak az include-dal nem kell törődnie

www phpclasses org
www.phpclasses.org
  • Szabad forrású PHP alapú osztályok gyűjteménye.
  • Nincs az osztályok között összefüggés,
  • A kódot nem ellenőrzi senki minőség szempontjából
framework k haszn lata
Framework-ök használata
  • Prototype.js (alap!)
  • Dojo
  • Jquery

Kissé nehézkes az áttekintésük, mert javascript, AJAX és PHP technológia keveredik bennük.

cms rendszerek
CMS rendszerek
  • Lásd Drupal, Moodle, Joomla
codecharge studio
Codecharge Studio
  • Kódgenerátor, komplex fejlesztőrendszer
  • A programozói „favágást” könnyíti meg.
  • Tematika készül az oktatására
modern fejleszt eszk z k zend ide
Modern fejlesztő eszközök – Zend IDE
  • Csúcsszuper eszköz.
    • kódformázás
    • debug, IDE-ben, böngészőben (Böngésző pluginnnal)
    • Profiler
    • Adatbázis kapcsolat kezelése
    • Kód sablonok
    • A projekt kódjainak kezelése
    • Több nyelv támogatása
    • stb...
eclipse
Eclipse
  • Freee!
  • Fejlődik, PHP Eclipse. Sok minden működik
phpmyadmin
phpMyAdmin
  • MySQL adatbázis karbantartásához, használatához elengedhetetlen eszköz.