Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaZsombor Budai Megváltozta több, mint 10 éve
1
Farkas Tamás (blaq) blaquolf@sch.bme.hu
PHP alapok Farkas Tamás (blaq)
2
Tartalom Bevezető A nyelv alapjai Form-kezelés Session-kezelés
Átlátható kód Template-ek
3
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
4
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
5
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
6
Bevezető Fejlesztői környezet kialakítása
Legegyszerűbb: unicorn.sch.bme.hu > ~/public_html Ingyenes tárhelyszolgáltatók Otthoni környezet: Miből érdemes tanulni? PHP manual :) (online doksi kommentekkel) (offline kézikönyv) PHPMiniHowTo by Jocó (biztonság) …
7
A nyelv alapjai Tartalom Szintaxis Típusok Állandók Operátorok
Vezérlési szerkezetek Függvények Osztályok, objektumok Referenciák
8
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
9
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");
10
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;
11
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…
12
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’]);
13
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 ) );
14
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”, * → ”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
15
Á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
16
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 Nem dob „notice”-t, ha például $kulcs nincs beállítva
17
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; }
18
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: }
19
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
20
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ó
21
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;
22
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
23
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
24
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
25
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!
26
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)
27
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 />'); ?>
28
Előre definiált változók
PHP változók $PHP_SELF: szkriptfájl neve, docroothoz képest relatív alakban → ”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íí
29
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=…
30
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
31
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
32
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ó
33
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.