Alapok.

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ó
Algoritmusok.
DFAN-INF-524 és DFAL-INF-524 kurzus hallgatói számára
3. előadás (2005. március 1.) Utasítások, tömbök
JavaScript.
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.
Programozás II. 3. Gyakorlat C++ alapok.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
C A C nyelv utasításai.
Mutatók, tömbök, függvények
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.
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.
Webszerkesztés Űrlapok a HTML-ben. Űrlap létrehozása Űrlapunk tartalma a … elemek között fog helyetfoglalni Egy lapon több űrlap is elhelyezhető Több.
WEB Technológiák ISAPI ME Általános Informatikai Tsz. dr. Kovács László.
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:
PHP III. Fájlok, űrlapok.
PHP VII Sütik, munkamenetek. Sütik Mi az a süti? A süti (cookie) állapotot tárol a felhasználó böngészőjében. Pl. ha egy oldalon beállítható, hogy milyen.
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
Farkas Tamás (blaq) PHP alapok Farkas Tamás (blaq)
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Űrlapok és keretek.
Űrlapok.
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
Hernyák Zoltán Programozási Nyelvek II.
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.
Java programozási nyelv Vezérlési szerkezetek
HTML 2. Űrlapok
Objektum orientált programozás
Webprogramozó tanfolyam
Objektum orientált programozás
A Visual Basic nyelvi elemei
Webprogramozó tanfolyam Űrlapok (form-ok). Űrlapok a HTML-ben Biztosan mindenki találkozott már vele – Űrlap példapélda Felhasználási lehetőségei – Regisztráció,
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
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.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Készítette: Rummel Szabolcs Elérhet ő ség: Linux kezelése.
Informatikai rendszerek
Script nyelvek előadás
Script nyelvek előadás
Programozási alapismeretek
Gépészeti informatika (BMEGEMIBXGI)
Alkalmazott Informatikai Tanszék
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
Alkalmazott Informatikai Tanszék
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatikai gyakorlatok 11. évfolyam
Előadás másolata:

Alapok

Hasznos linkek: www.php.net http://php-script.hu Portál rendszerek: PHP-Nuke: http://www.nuker.hu/ Drupal: http://drupal.hu Joomala: http://www.joomla.org.hu/

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

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

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

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

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.

Példa: <html> <? print "<body bgcolor=yellow>\n"; print "Hello világ!\n"; print "</body>"; ?> </html>

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).

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 ) );

Á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

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"; ?>

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;

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; }

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ő"; ?>

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; }

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;                                 } ?>

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 <? 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ó

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)

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

Függvények: 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íí 31

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

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

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

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

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