Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Alapok
2
Hasznos linkek: www.php.net http://php-script.hu Portál rendszerek:
PHP-Nuke: Drupal: Joomala:
3
Mitől dinamikus egy weboldal?
Fájlrendszer 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
Mitől dinamikus egy weboldal?
mod_php CGI Fájlrendszer 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
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
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
7
Példa: <html> <body bgcolor=green> <? print ("Hello világ!"); ?> </body> </html> Az Apache a „<?” és ”?>” jelek között végrehajtja a PHP nyelvű utasításokat, utána pedig visszatér a normál HTML kiírására.
8
Példa: <html> <? print "<body bgcolor=yellow>\n"; print "Hello világ!\n"; print "</body>"; ?> </html>
9
Példa: <? phpinfo(); ?> Megjeleníti az összes PHP-vel és Apache-csal kapcsolatos információt (verziószámokat, konfigurációs beállításokat és az összes, az oldalnak átadott környezeti változót).
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
Á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
15
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
16
Példa: <? $x=2; $y=3; $z=$x+$y
//idézőjelek közötti különbség $string1='$x + $y = $z'; //a változó értéke nem értékelődik ki $string2="$x + $y = $z"; //a változó értéke kiértékelődik $szoveg1='string1 értéke: '; //a numerikus értékeket a PHP automatikusan sztringgé konvertálja $szoveg2='string2 értéke: '.$x.' + '.$y.' = '.$z; print "string1 értéke: $string1 <br>"; print "string2 értéke: $string2"; print "<br><br><br>"; //sztring összefűzése print "$szoveg1".$string1."<br>"; print "$szoveg2"; ?>
17
Példa: A tömbelemekre is érvényes a típuskonverzió, tehát különböző típusú elemeket tartalmazhat; értékadás többféleképpen történhet: $tomb[0]=”fgah”; $tomb[1]=”zwzjk”; $tomb[2]=”uzrw”; $tomb[]=”fgah”; $tomb[]=”zwzjk”; $tomb[]=”uzrw”; Ha nem adunk meg indexet, akkor mindig a legutolsó helyre teszi az új elemet. Vagy az array() függvénnyel a következőképpen: $tomb=array(”Béla”,”Józsi”,”Pista”,”Kázmér”,”Aladár); print $tomb[2]; //Pistát ír ki;
18
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; }
19
Példa: <? $x=6; $y=5; if ($x<$y) print $x." kisebb, mint ".$y; else print $x." nagyobb, mint ".$y; ?> <? $x=3; $y=5; if ($x<$y) { print $x." kisebb, mint ".$y; } ?> <? $x=5; $y=7; if ($x<$y) print $x." kisebb, mint ".$y; elseif ($x>$y) print $x." nagyobb, mint ".$y; else print "A két szám egyenlő"; ?>
20
Vezérlési szerkezetek:
Elágazás több irányba egy változó értékei alapján <? $a=2; switch ($a) { case 0: print "Nulla"; break; case 1: print "Egy"; break; case 2: print "Kettő"; break; default: print "A szám nagyobb mint kettő vagy nem szám."; break; } ?> switch ($valtozo) { case ertek1: utasitas1; break; case ertek2: utasitas2; ... case ertekn: utasitasn; default: utasitas; }
21
Példa: <? $string="Seat"; switch ($string) { case Opel: print "Opel"; break; case VW: print "VW"; break; case Trabant: print "Trabant"; break; case Seat: print "Seat"; break; default: print "Autó"; break; } ?>
22
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
23
Vezérlési szerkezetek:
Ciklus <? for($i=1;$i<=10;$i++) { print "$i "; $x=$i*$i; print " négyzete: $x <br><br>"; } ?> for (kif1; kif2; kif3) utasitas; for (kif1; kif2; kif3) { utasitas1; utasitas2; ... utasitasn; } 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ó
24
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;
25
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
26
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
27
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
28
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!
29
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)
30
Függvények: 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 />'); ?> 30
31
Függvények: 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íí 31
32
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=… 32
33
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 33
34
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 34
35
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ó 35
36
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 36
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.