Farkas Tamás (blaq) blaquolf@sch.bme.hu PHP alapok Farkas Tamás (blaq) blaquolf@sch.bme.hu.

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Tananyag: konzultáció
C++ programozási nyelv Gyakorlat hét
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
DFAN-INF-524 és DFAL-INF-524 kurzus hallgatói számára
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
A C nyelv utasításai. Kifejezés+ ; Utasítás printf("Hello")printf("Hello"); a=b+ca=b+c; fuggveny(a,b)fuggveny(a,b); Blokkok: több utasítás egymás után,
3. előadás (2005. március 1.) Utasítások, tömbök
JavaScript.
Programozás alapjai.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Programozás II. 3. Gyakorlat C++ alapok.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
C A C nyelv utasításai.
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
Java programozási nyelv 2. rész – Vezérlő szerkezetek
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
PHP Webprogramozás alapjai
Web-grafika (VRML) 10. gyakorlat Kereszty Gábor. Script típusok Elemi típusok: szám: egész vagy lebegőpontos – int / float – 1 / 1.1 string: ‘Hello World!’
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Szombathely Dinamikus WEB programozás: PHP és JSP.
Lénárt Anett egyetemi adjunktus - PTE PMMK Rendszer- és Szoftvertechnológia Tanszék Előadás JavaScript Tananyag: W eb - programozás.
Vizuális és web programozás II.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
C nyelv utasításai.
A PHP (PHP: Hypertext Preprocessor) nyílt forráskódú, számítógépes szkriptnyelv, legfőbb felhasználási területe a dinamikus weboldalak készítése. Emiatt.
A JavaScript bemutatása
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
PHP nyelv. PHP Interpreteres nyelv → parancsértelmező szükséges hozzá Rasmus Lerdorf 1995 → személyes felhasználás (internetes önéletrajzának megtekintésének.
1 Operációs rendszerek I, 3. gyakorlat Windisch Gergely
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Készítette: Lipp Marcell
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
PHP nyelv Mari Dániel.
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Java programozási nyelv Vezérlési szerkezetek
Objektum orientált programozás
Webprogramozó tanfolyam
Objektum orientált programozás
Webprogramozó tanfolyam
A Visual Basic nyelvi elemei
Operátorok Vezérlési szerkezetek Gyakorlás
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Java web programozás 7-8..
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Excel programozás (makró)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
C++2. Ciklusok elöltesztelő (for, while) A ciklusmag feldolgozása előtt történik a vizsgálat  lehet, hogy egyszer sem fut le. A soronkövetkező iteráció.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Script nyelvek előadás
Alapok.
Programozási alapismeretek
Script nyelvek előadás
Excel programozás (makró)
Programozás C# -ban Elágazások.
A CLIPS keretrendszer
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatikai gyakorlatok 11. évfolyam
Előadás másolata:

Farkas Tamás (blaq) blaquolf@sch.bme.hu PHP alapok Farkas Tamás (blaq) blaquolf@sch.bme.hu

Tartalom Bevezető A nyelv alapjai Form-kezelés Session-kezelés Átlátható kód Template-ek

Bevezető Mitől dinamikus egy weboldal? Fájlrendszer HTTP Webszerver Böngésző HTTP 1 Webszerver Apache statikus 2 A böngésző elküldi a kérést A webszerver ellenőrzi a jogosultságokat, beolvassa a fájlt, majd visszaküldi a böngészőnek A böngésző fogadja a fájlt, és megjeleníti a weboldalt

Bevezető Mitől dinamikus egy weboldal? mod_php CGI Fájlrendszer Böngésző HTTP 1 Webszerver Apache 2 Szkript-értelmező PHP 4 3 A böngésző elküldi a kérést A webszerver ellenőrzi a jogosultságokat, beolvassa a fájlt és továbbítja az értelmezőnek VAGY megmondja az értelmezőnek, hogy mit kell beolvasnia A értelmező feldolgozza a fájlt, és visszaadja a webszervernek A webszerver kiküldi a generált fájlt A böngésző fogadja a fájlt, és megjeleníti a weboldalt

Bevezető Mi az a PHP és hogyan történik az értelmezés? „PHP: Hypertext Preprocessor” Általános célú szkriptnyelv Weboldalak generálása, HTML-be ágyazva (szerveroldali szkript) Bármi más generálása… Hello world! <html> <head> <title>Példa</title> </head> <body> <?php echo "Hello world!"; ?> </body> </html> <?php … ?> -n belüli részeket programként értelmezi, többit változatlanul hagyja

Bevezető Fejlesztői környezet kialakítása Legegyszerűbb: unicorn.sch.bme.hu > ~/public_html Ingyenes tárhelyszolgáltatók Otthoni környezet: http://weblabor.hu/cikkek/apachephptelepites Miből érdemes tanulni? PHP manual :) http://www.php.net/docs.php (online doksi kommentekkel) http://www.php.net/download-docs.php (offline kézikönyv) https://kszk.sch.bme.hu/twiki/bin/view/Webproj/WebprojDoksik PHPMiniHowTo by Jocó (biztonság) …

A nyelv alapjai Tartalom Szintaxis Típusok Állandók Operátorok Vezérlési szerkezetek Függvények Osztályok, objektumok Referenciák

Szintaxis PHP-módba kerülés: <?php ?>, <? ?>, … Változó jelölése: $valtozo betűk, számjegyek, aláhúzás; nem kezdődhet számmal Tömb: $tomb[index] Utasítások elválasztása pontosvesszővel: echo ”Üzenet”; Programblokk kapcsoszárójelben: { … } Megjegyzések: <?php echo "Ez egy teszt"; // Ez egy egysoros c++ szerű megjegyzés /* Ez egy többsoros megjegyzés Még egy sor megjegyzés */ echo "Ez egy másik teszt"; echo "Ez az utolsó teszt"; # Ez egy shell-szerű megjegyzés ?> Típusok lehetséges értékei a következő slide-okon

Típusok Változók illetve értékek típusát általában nem adjuk meg explicit módon Értelmező hozzárendel egy típust a környezetének megfelelően Szükség esetén automatikus típuskonverzió Típus lekérdezése, ellenőrzése: gettype($valtozo); is_type($valtozo); Cast-olás: $ize = (int) $bigyo; settype($valami, "string");

Típusok Logikai típus (boolean) NULL (NULL) true (igaz), false (hamis) Egy értéket vehet fel: NULL Egy változó értéke NULL ha: - NULL-ra állítjuk - még nem kapott értéket - unset()-tel töröltük Egész szám (integer) decimális szám: $a = 1234; negatív szám: $a = -123; oktális szám: $a = 0123; hexadecimális szám: $a = 0x1A; Erőforrások Speciális típus Referencia külső erőforrásra pl.: SQL lekérdezés eredménye Külön függvényekkel tudunk hasznos adatot kinyerni belőle Lebegőpontos szám (float) $a = 1.234; $a = 1.2e3; $a = 7E-10;

Típusok Karaktersorozat (string) Változók behelyettesítése Aposztróffal: ’szoveg’ \’: aposztróf Idézőjellel: ”egy sor\n” \r: kocsivissza \n: újsor \t: tab \\: visszaper \$: dollár \”: idézőjel (heredocnál nem kell) \[0-7]{1,3}: oktális kar. kód \\x[0-9A-Fa-f]{1,2}: hexa Heredoc: $s = <<<STR Egy heredoc sztring több sorban STR; Idézőjeles és heredoc sztringekben echo(”Alkoholtartalom: $VpV”); echo(”Tömbelem: ${a[0]}”); Szringek összefűzése $ora.” óra ”.$perc.” perc”; $kimenet.= ”Következő sor\n”; Mikor melyik? Regexp: ’/^\..*\$$/’ ”/^\\..*\\\$\$/” Lekérdezések…

Típusok Tömb (array) Tömbelemek kezelése Üres tömb létrehozása: $tomb = array(); (inicializálás!) Tömb kulcsa lehet nemnegatív egész és sztring (asszociatív tömb) Kezdőérték: $szorakozohelyek = array( ’Drönk’, ’Banális Közhely’, ’Under The Bridge’, ); Kezdőérték kulccsal: $szamok = array( ’egy’ => 1, ’kettő’ => 2 ); Hogy érjük el? echo($szorakozohelyek[0]); $i=’egy’; echo($szamok[$i]); Új elem felvétele: $szamok[’három’]=3; $szorakozohelyek[]=’Ráday’; Módosítás: $szamok[’három’]=4; Törlés: unset($szamok[’három’]);

Típusok Többdimenziós tömbök $gyumolcsok = array ( ’szórakozóhelyek’ => array ( ’Drönk’, ’Banális Közhely’, ’Ráday’ ), ’gyümölcsök’ => array ( 1 => ’alma’, 2 => ’körte’, ’narancs’ array ( $a, $b => $c ) );

Típusok Néhány példa automatikus típuskonverzióra 0, 0.0, ””, ”0”, array(), NULL: false boolean Számból sztring: 3.14 → ”3.14”, 100000000*100000000 → ”1E+16” Sztringből szám: ha a sztring elején értelmes szám szerepel akkor ez lesz az értéke, egyébként 0 ”1 kutya” → 1, ”php 5.0” → 0 boolean → string: ”true”, ”false” boolean → int: false → 0, true → 1

Állandók Állandókat a define() függvénnyel hozhatunk létre Nem módosíthatók/törölhetők Csak skalár értéket kaphatnak (boolean, integer, float, string) Elnevezés megállapodás szerint csupa nagybetű szokott lenni $ nélkül kell rá hivatkozni, ha egy változó tartalmazza a konstans nevét akkor a constant() függvény használható <?php define("MAXSIZE", 100); echo MAXSIZE; echo constant("MAXSIZE"); //ugyanaz ?> A get_defined_constants() függvénnyel lekérdezhetjük hogy milyen állandók vannak beállítva. Tömbbel tér vissza: ’állandó’=>érték

Operátorok Részletes lista és precedencia: Ld. Manual C operátorai: %, ++, *=, ... Összehasonlítás típusvizsgálattal: ===, !== Csak akkor igaz/hamis, ha az operandusok típusa is megegyezik/eltér 1===”1” //hamis, nem azonos array()!==false //igaz Hibakezelő operátor: $ertek = @$tomb[$kulcs]; Nem dob „notice”-t, ha például $kulcs nincs beállítva

Vezérlési szerkezetek Feltételes utasítás Elágazás több irányba if (feltetel1) { utasitas1; } elseif (feltetel2) { utasitas2; } ... elseif (felteteln) { utasitasn; } else { utasitas; if (feltetel) utasitas; if (feltetel) { utasitas1; utasitas2; ... utasitasn; } Elágazás if (feltetel) { utasitas1; } else { utasitas2; }

Vezérlési szerkezetek Elágazás több irányba egy változó értékei alapján switch ($valtozo) { case ertek1: utasitas1; break; case ertek2: utasitas2; ... case ertekn: utasitasn; default: utasitas; } switch ($valtozo) { case ertek1: case ertek2: case ertek3: utasitas; break; case ertek5; case ertek4: default: }

Vezérlési szerkezetek Elöltesztelő ciklus Hátultesztelő ciklus while (feltetel) utasitas; while (feltetel) { utasitas1; utasitas2; ... utasitasn; } do utasitas while (feltetel) do { utasitas1; utasitas2; ... utasitasn; } while (feltetel); continue: következő iterációra lép break: kilép a ciklusból

Vezérlési szerkezetek Ciklus Ekvivalens* elöltesztelő ciklus for (kif1; kif2; kif3) utasitas; for (kif1; kif2; kif3) { utasitas1; utasitas2; ... utasitasn; } kif1; while (kif2) { utasitas1; utasitas2; ... utasitasn; kif3; } *majdnem: continue ide ugrana! kif1: inicializálás, egyszer hajtódik végre kif2: minden iteráció előtt megvizsgálja, true érték esetén megy tovább kif3: minden iteráció végén végrehajtódik continue, break itt is használható

Vezérlési szerkezetek Még egy, nagyon hasznos ciklus foreach ($tomb as $ertek) utasitas; foreach ($tomb as $kulcs => $ertek) utasitas; foreach ($tomb as $kulcs => $ertek) { utasitas1; utasitas2; ... utasitasn; } Végigmegy a tömb elemein ($ertek) Hasznos, ha nem ismerjük a kulcsokat vagy lényegtelen az értékük, de a másik változattal ehhez is hozzáférünk ($kulcs) a foreach a megadott tömb egy másolatával dolgozik! az $ertek módosítása tehát hat az eredeti tömbre, megoldás: $tomb[$kulcs] = ujertek;

Vezérlési szerkezetek foreach példa Kimenet: <?php $sorok=array('Amstel','Heineken','Kozel'); foreach($sorok as $sor) { echo $sor.'<br />'; } echo '<br />'; $sor='Tesco Gazdaságos Sör'; foreach($sorok as $index => $sor) { $sorok[$index]=strrev($sor); ?> Amstel Heineken Kozel Amstel Heineken Kozel letsmA nekenieH lezoK

Függvények Definíció szintaxisa function valami($arg1, $arg2, ..., $argn) { ... return $result; } Bármilyen érvényes PHP kódot tartalmazhat, még függvény és osztály definíciókat is PHP4 óta a definíciónak nem kell megelőznie a kódban az első használat helyét Polimorfizmus, függvény újradefiniálása nem megengedett Tömb is lehet argumentum

Függvények Visszatérési érték function egy() { ... } function ketto() { ... return; } function harom() { ... return array(1,2); } Ha nincs return, végigfut, majd visszatér Nem muszáj értékkel visszatérni Tetszőleges értékkel vissza lehet térni, ezért nem is kell definiálni a visszatérési érték típusát Több érték visszaadása tömbbel (is) megoldható, sőt objektumokat is visszadhatunk

Függvények Globális változók elérése function globalis() { global $g; ... return; } Módosítás természetesen megmarad, ha nem létezett ilyen nevű globális változó akkor létrejön Referencia szerinti paraméterátadás function ref(&$arg) { $arg++; return; } valami($x); $x értéke eggyel nő Ilyen paraméter helyére csak változót írhatunk!

Függvények Argumentumok kezdőértéke function vesz($aru,$mennyiseg=5) { ... } Függvényhíváskor elhagyhatóak az ilyen paraméterek Más argumentumoktól jobbra helyezkedjenek el Változó argumentumszám function valami() { ... } PHP4 óta func_num_args(): változók száma func_get_arg($i): $i-edik argumentum értéke func_get_args(): egy tömbben az összes argumentum (index 0-tól)

Előre definiált változók Apache változók $_SERVER[]: a szerverrel és aktuális HTTP kapcsolattal kapcsolatos adatok <?php echo('Üdv a '. $_SERVER['SERVER_NAME']. ' szerveren!<br />'); echo($_SERVER['HTTP_USER_AGENT']. ' böngészőt használsz.<br />'); echo('Az IP-címed: ‘. $_SERVER['REMOTE_ADDR']. '<br />'); ?>

Előre definiált változók PHP változók $PHP_SELF: szkriptfájl neve, docroothoz képest relatív alakban www.pelda.com/konyvtar/proba.php → ”konyvtar/proba.php” $_GET, $_POST : külső változók, formkezelés $_FILES : feltöltött fájlok $_SESSION : session-változók $_COOKIE : sütíí

Formok Űrlapok, kérdőívek, adatlapok, login/logout A formból érkező adatokat a $_GET/$_POST és a $_FILES tömbökön keresztül érjük el Egy egyszerű form: <form action="foo.php" method="post"> Name: <input type="text" name="usernev" /><br /> <input type="submit" value="Send"/> </form> action mező: feldogozó oldal/szkript method mező: átvitel módja. ”post” a háttérben ”get” az URL-ben: foo.php?usernev=…

Beviteli mezők Rejtett mező <input type="hidden" name="rejtett" value="titkos" /><br /> Elérése: $_POST[’rejtett’] Kezdőérték: value mező Szövegmező <input type="text" name="szoveg" value="hello" maxlength="5"/><br /> Elérése: $_POST[’szoveg’] maxlength: böngesző ennyi karaktert enged beírni (ellenőrizni!) Checkbox <input type="checkbox" name="pipa" checked /><br /> Elérése: isset($_POST[’pipa’]) Kezdőérték: ha checked mező, ha ki van pipálva

Beviteli mezők Radio <input type="radio" name="ertek" value="1" /><br /> <input type="radio" name="ertek" value="2" checked /><br /> <input type="radio" name="ertek" value="3" /><br /> Elérése: $_POST[’ertek’] Kezdőérték: ha checked, akkor ki van választva Ugyanazon formon belüli, azonos nevű radio inputok tartoznak össze Több szöveg <textarea name="area" rows="10" cols="100">kezdoertek</textarea> Elérése: $_POST[’area’] Kezdőérték: tag-ek közé írt szöveg rows: sorok, cols: szélesség

Beviteli mezők Legördülő lista <select name="kor" > <option value="ac" >AC</option> <option value="bss" selected >BSS</option> <option value="kszk" >KSZK</option> </select> Elérése: $_POST[’kor’] Kezdőérték: ha selected, akkor ki van választva Tömbök átadása <input type="text" name="datum[ev]" size="4" maxlength="4" />. <input type="text" name="datum[honap]" size="2" maxlength="2" />. <input type="text" name="datum[nap]" size="2" maxlength="2" />. Elérése: $_POST[’datum’][’ev’] PHP4 óta teszőlegesen sok dimenzió

Beviteli mezők Töbszörös választás <select multiple name="ismeros[]" > <option value="a" selected >Ida</option> <option value="b" >Matild</option> <option value="c" selected d>Klotild</option> </select> Elérése: $_POST[’ismeros’] Tömb, ami a megjelölt opciókhoz tartozó értékéket (value) tartalmazza Kezdőérték: több selected is lehet