330 likes | 547 Views
PHP. Jemný úvod do PHP. Mgr. Ján Guniš, KUI, 2003. História PHP. 1994 Rasmus Lerdorf, počítadlo prístupov na stránky v Perl-e, neskôr prepis do C rozšírenie pod názvom Personal Home Page Tools pridanie SQL príkazov, práca s formulármi - Professional Home Page/Form Interpreter 2.0
E N D
PHP Jemný úvod do PHP Mgr. Ján Guniš, KUI, 2003 KUI Košice, 15. 5. 2003
História PHP • 1994 Rasmus Lerdorf, počítadlo prístupov na stránky v Perl-e, neskôr prepis do C • rozšírenie pod názvom Personal Home Page Tools • pridanie SQL príkazov, práca s formulármi - Professional Home Page/Form Interpreter 2.0 • PHP 3.0 beží aj pod WIN32 a Macintosh • PHP 4 (PHP hypertextový preprocesor), cca. 10x rýchlejší ako PHP 3.0 • aktuálna verzia PHP 4.3.? KUI Košice, 15. 5. 2003
jazyky na strane servera CGI (Common Gateway interface) SSI (Server Side Includes) SSJS (Server Side JavaScript) ASP (Active Server Page) PHP jazyky na strane klienta Dynamické HTML JavaScript JavaApplet PHP a ostatné jazyky KUI Košice, 15. 5. 2003
O PHP ... • voľne šíriteľný softvér • download: http://www.php.net (Win32, UNIX, Macintosh) • spúšťanie ako CGI skriptu • zakompilovanie do jadra Apacha • php je interpreter • „infovekácke“ servre podporujú PHP • manuál k PHP na adresehttp://www.php.net/docs.php alebo na serveri rayman KUI Košice, 15. 5. 2003
Čo PHP vie? • spracovanie dát z formulárov • práca s cookies a http hlavičkami • dynamicky generovať stránky • podpora databáz (MySQL, MS SQL .., ODBC) • práca s poštou • čítanie a ukladanie dát na serveri • syntax PHP je úspornejšia ako syntax ASP (tvrdia niektorí :-) • .... KUI Košice, 15. 5. 2003
Inštalácia na WIN32 • inštalácia sieťovej karty (protokol TCP/IP) • inštalácia http servera Apache a PHP • spojenie Apacha a PHP • v php3.ini (php3.ini-dist) doplniť cestu k interpretru PHPextension_dir=c:\php a prekopírovať do c:\windows • do srm.conf (apache) dopísaťScriptAlias /php3/ "C:/php/" AddType application/x-httpd-php3 .php3 .php .phtmlAction application/x-httpd-php3 "/php3/php.exe" • do httpd.conf" (apache) dopísaťDocumentRoot "c:/moj web"DirectoryIndex index.htm • naštartovať server a http://localhost/ KUI Košice, 15. 5. 2003
Čo potrebujeme? • dobrá znalosť jazyka HTML • textový editor (poznámkový blok, ..) • http server (najlepšie Apache) s podporou PHP, alebo aspoň PHP • ? základy nejakého skriptovacieho jazyka na strane klienta • ? špecializovaný editor (PHPEd, ..) • ? databázový server (MySQL, ..) KUI Košice, 15. 5. 2003
Bezpečnosť I (LINUX) • PHP skripty bežia pod užívateľom pod akým beží Apache • Apache: napr. užívateľ: wdata, skupina: wdata • PHP skript: užívateľ: xyz, skupina: users • práva PHP skriptov: - r w - - - - r - - • práva súborov do ktorých PHP zapisuje:ak ich vytvorí užívateľ xyz: xyz, users, - r w - - - - r w -ak ich vytvorí PHP skript: wdata, wdata, - r w - - - - - - - • práva priečinkov v ktorých sú skriptyvytvorené xyz: d r w x - - - - - x (ak skript zapisuje: d r w x - - - - w x)vytvorené skriptom: d - - x - - - - - - (ak skript zapisuje: d - w x - - - - - -) KUI Košice, 15. 5. 2003
Bezpečnosť II (LINUX) • povoľte len to, čo je minimálne nutné • chráňte zdrojové súbory pred nepovolanými osobami • skripty a súbory s citlivými dátami ukladajte s reg. príponou PHP • prístupové mená a heslá v súboroch šifrujte • safe_mode = onPHP kontroluje, či vlastník běžiaceho skriptu je vlastníkom souboru, s ktorým sa má manipulovaťsafe_mode_exec_dir = adresarumožňuje spúšťať systémové programy len z tohto priečinka • open_basedir = adresar (open_basedir = .)všetky operácie so súbormi budú obmedzené na tento adresár • disable_functions funkcia1, funkcia2, ..funkcie uvedené v tejto direktíve budú zakázané KUI Košice, 15. 5. 2003
Začíname • prípona súboru php, php3, phtml (podľa srm.conf) • vloženie skriptu 1: ale preferuje sa skôrhtml kód html kód <? php skript ?> <?php php skript ?> html kód html kód • vloženie skriptu 2:html kód<script language=”php”>php skript</script>html kód • komentár1: // kometár v riadku • komentár2: /* komentár cez viac riadkov */ • citlivosť na veľké a malé písmená len v názvoch premenných KUI Košice, 15. 5. 2003
Premenné I • premenná: $meno (meno začína písmenom alebo _) • netreba deklarovať (ak nie je „vývojarský“ mód) • premenná sa automaticky konvertuje na potrebný typ • integer: <-2 147 483 948, +2 147 483 647>123, 0X2E (hex 0X), 033 (okta 0) • double: od -1.7e308 do 1.7e308, najmenšie kladné: 3,4e-234knižnica BC, väčšia presnosť • string, zápis do úvodzoviek alebo apostrofov"retazec"escape sekvencia: • \\ zpätná lomka, \n nový riadok, \r návrat vozíka, \t tabulátor, \" úvodzovky, \$ znak dolar • array: $a=array(1,2,3); $x=array(array(1,2), $a[3]=4; array(3,4)); echo $x[1][0]; {3} • objekt • boolean: true, false (od verzie PHP4) KUI Košice, 15. 5. 2003
Premenné II a konštanty Práca s typom premennej: • zistenie typu premennej:funkcie: GetType Is_Integer, Is_Double, Is_String, Is_Array, Is_Object, Is_Bool • zmena typu premennej:SetType(premenna, "typ") Konštanty • define (“meno_konštanty“, hodnota);meno za nezačína $konštanta môže byť typu: integer, double, string, booleanje globálna (na rozdiel od premenných) KUI Košice, 15. 5. 2003
Premenné III, polia • reset (pole) – nastav ukazovateľ na začiatok poľacurrent(pole) – hodnota aktuálneho prvku poľanext(pole) – posuň na ďalší prvok poľaend(pole) – posunie ukazovateľ na koniec poľa a vráti hodnotukey(pole) – vráti index aktuálneho prvku poľacount(pole) – vráti počet prvkov poľa • Prechod poľom 1:for ($i=0; $i<count($x); $i++): echo $x[$i];endfor; • Prechod poľom 2:reset($x);while (current($x)): echo ”index: ” . key($x) . ” ”; echo ”hodnota: ” . current($x) . ”<br>”; next($x);endwhile; KUI Košice, 15. 5. 2003
Operátory • matematické:+ - * / %(zvyšok po delení)+= -= *= /= %=++$x --$x, $x++, $x-- (preinkrement, predekrement, postinkrement, postdekrement) • bitové:& (logický súčin), | (logický súčet), ^ (nonekvivalencia), ~ (negácia) • logické:$x je rovné 0, tak je false, inak je true== (je rovné), != (je rôzne), >, <, >=, <=, and, or, xor • reťazcové: . (zreťazenie), .= (pripojenie) • podmienený: vyraz1 ? vyraz2 : vyraz3 $x>$y ? $max=$x : $max=$y; KUI Košice, 15. 5. 2003
if (podmienka) prikaz;if (podmienka): prikaz1; prikaz2; ..endif;if (podmienka): prikaz1; ..else: prikaz2; ..endif if (podmienka1): prikaz1; ..elseif (podmienka2): prikaz2; ..elseif (podmienka3): prikaz3; ..else: prikaz4; ...endif; Vetvenie I: if KUI Košice, 15. 5. 2003
switch (vyraz): case hodnota1: prikaz1; .. break; case hodnota2: prikaz2; .. break; .. default: prikaz3; ... endswitch; vyraz sa vyhodnotí potom sa testuje zhoda z hodnotou za case v prípade zhody sa vykoná všetko až do break, alebo do konca príkazu switch Vetvenie II: switch KUI Košice, 15. 5. 2003
for (vyraz1; vyraz2; vyraz3): prikaz1; prikaz2; .. endfor; vyraz1 sa vyhodnotí na začiatku cyklu potom sa vyhodnotí vyraz2 a ak je výsledok true, vykoná sa telo cyklu na konci každého prechodu cyklom sa vyhodnotí vyraz3 pokiaľ je hodnota vyraz2 true, cyklus sa opakuje Cyklus I: for Pr.: for ($i=1; $i<=10; $i++): echo $i . “<br>”; endfor; KUI Košice, 15. 5. 2003
while (podmienka): prikaz1; prikaz2; .. endwhile; Pr.: $i=1; while ($i <= 10): echo $i . “<br>”; $i++; endwhile; Cyklus II: while KUI Košice, 15. 5. 2003
do { prikaz1; prikaz2; .. } while (podmienka); Pr.: $i = 1; do { echo $i . “<br>”; $i++; } while ($i <= 10); Cyklus III: do-while KUI Košice, 15. 5. 2003
break (n)umožňuje okamžité ukončenie tela cyklu a vynorenie sa z n vnorených štruktúr continue (n)preskočí všetky príkazy v zostávajúcich častiach tiel n vnorených cyklov a začne vykonávať ďalšiu iteráciu Príkazy break a continue KUI Košice, 15. 5. 2003
require ("subor")načítanie skriptu zo súboruak je použitý v tele cyklu, skript sa načíta len pri prvom volaní include ("subor")načítanie skriptu zo súboruak je použitý v tele cyklu, skript sa načíta príslušný počet krát Príkazy require a include KUI Košice, 15. 5. 2003
Funkcie I function meno (parameter1, paramater2, ..) { príkazová časť; return hodnota; } Pr. 1: Pr. 2: function pozdrav () function maximum ($x, $y) { { echo "Dobry den"; return $x>$y ? $x : $y; } } .. .. .. .. pozdrav(); echo maximum ($a, $b); KUI Košice, 15. 5. 2003
Funkcie II • Lokálne a globálne premennévo funkciách nie sú automaticky prístupné globálne premennéPr. 1: Pr. 2:function zmen() function zmen(){ { $a = 10; global $a;} $a = 10; .. } .. .. $a = 20; .. zmen(); $a = 20; echo $a; // výstup je 20 zmen(); echo $a; // výstup je 10 KUI Košice, 15. 5. 2003
Funkcie III parametre volané odkazom a hodnotou function zmen (&$a, $b) { $a=10; $b=10; } .. .. $x=20; $y=20; zmen($x,$y); echo $x . " " . $y; //výstup je 10 20 KUI Košice, 15. 5. 2003
Funkcie IV • štandardné hodnoty parametrovfunction umocni($zaklad, $exponent=2)..umocni($x); //to isté, ako umocni($x,2)umocni($x,3); • statické premennéfunction citac(){ static $pocet=0; $pocet++; return $pocet; }..echo citac(); // výstup je 1echo citac(); // výstup je 2 KUI Košice, 15. 5. 2003
Funkcie V Rekurzia Pr.:function faktorial($n){ return $n==0 ? 1 : $n * fak($n-1);}echo (faktorial(5)); // výsledok je 120 je možná aj nepriama rekurzia KUI Košice, 15. 5. 2003
Formuláre I • <form action=”obslužný skript” method=POST(GET)> definícia formulára<form> • GET – dáta su pripojené za URLPOST – dáta v tele http požiadavky • Dáta z formulárov sú automaticky prístupne v rovnomenných premenných<form action=”obsluha.php” method=POST> <intup type=”text” name=”meno”> <input type=”submit” value=”Odošli”></form>..{obsluha.php}echo $meno; KUI Košice, 15. 5. 2003
Formuláre II • Užitočné môžu byť skryté polia polia formulárov. Slúžia na uchovávanie stavových informácií.<input type=”hidden” name=”info” value=”odoslal”>{obsluha.php}if ($info == ”odoslal”): .. //spracuj dáta s formuláraelse: .. //zobraz formulárendif; • Znovuzobrazenie neúplne vyplneného formulára (položky, ktoré boli vyplnené netreba vyplňovať ešte raz)<intup type=”text” name=”meno” value=”<? echo $meno; ?>”> • Spracovanie dát z formulárov z neznámou štruktúrou umožňujú asociatívne polia: $HTTP_GET_VARS $HTTP_POST_VARS KUI Košice, 15. 5. 2003
Príklady I • phpinfofunkcia phpinfo vracia komplexné informácie o inštalácii PHP a o niektorých nastaveniach servera • hesloprístup na stránku len po autorizácii užívateľa, možnosť ako vytvárať stránky pre skupiny ľudí (v praxi sa používa autorizácia aj na úrovni http servera) • kniha_navjednoduchá kniha návštev pre návštevníkov www stránok, jednotlivé príspevky sú zapisované do textového súboru KUI Košice, 15. 5. 2003
Príklady II • pocitadlojednoduché počítadlo návštevnosti www stránky, celková, denná a priemerná denná návštevnosť • mazaniemazanie položiek v textovom súbore cez HTML formulár, v podstate to ide aj cez priame editovanie súboru v textovom editore (telnet na server), ale toto je pohodlnejšie, i keď nie vždy použiteľné • mail_toodoslanie obsahu formulára www stránky formou emailu na zadanú adresu bez použitia klientského programu pre správu pošty (napr. Outlook Express), pre správnu funkčnosť skriptu je potrebné, zdrojový text uložiť v kódovaní ISO-8859-2 KUI Košice, 15. 5. 2003
Príklady III • anketakompletná aplikácia - anketa na www stránkujednoduchá práca s cookieslog súbory, informácie o návštevníkovia ešte niečo navyše • downloadvšetky skripty KUI Košice, 15. 5. 2003
PHP a informatika SŠ • - • DOBRÁ znalosť HTML • neexistuje žiaden debugger => ťažké ladenie programov • je dobré, ak študenti už majú nejaký základ z programovania, napr.: Turbo Pascal => nie pre začiatočníkov • skript v PHP generuje zápis HTML kódu => vyššia náročnosť • nepoužiteľné pri 2 hodinovej dotácii informatiky • + • nová perspektívna technológia zaujímavá aj pre študentov • možnosť prezentovať svoje programy na i-nete • atraktívnejšie programy ako napr. v TP • žiaci sa veľa naučia (sieť, sieťové OS, protokoly, bezpečnosť, databázy, ..) • práca len s legálnym softvérom (LINUX, Apache, PHP, MySQL, text. editor) • použiteľné pri zameraní gymnázium 7902 5 05 – INFORMATIKA • univerzálnosť HTML kódu => multiplatformové aplikácie KUI Košice, 15. 5. 2003
Zdroje na i-nete • www.php.net (www.php.cz, www.php.sk)domovská stránka PHP • www.apache.orgdomovská stránka http servera Apache • www.builder.czdiskusia a články o PHP • www.nusphere.comPHPEd, editor umožňujúci písať a spúšťať (s php.exe) PHP skripty, verzia 1.75 je free • www.gjar-po.sk/studium/informatika/phpAlgoritmy s PHP, materiál pre študentov KUI Košice, 15. 5. 2003