380 likes | 574 Views
PHP. Úvod do programování Kontaktní údaje: Ing. Antonín Skopec skopec@sks.cz. Přehled. Seznámení se s programováním dynamicky generovaných webových stránek Jazyk PHP - princip, syntaxe, typy, konstanty a proměnné, základní operátory a příkazy, implementované funkce
E N D
PHP • Úvod do programování Kontaktní údaje: • Ing. Antonín Skopec • skopec@sks.cz
Přehled • Seznámení se s programováním dynamicky generovaných webových stránek • Jazyk PHP - princip, syntaxe, typy, konstanty a proměnné, základní operátory a příkazy, implementované funkce • Obsluha formulářů a jeho prvků • Práce se soubory a složkami • Odesílání emailu ze skriptu PHP, HTTP hlavičky • Databázový server MySQL + správa dat v databázi • Spolupráce PHP s MySQL serverem • Praktické příklady • Práce na zvoleném projektu + závěrečná prezentace
Podmínky zápočtu/zkoušky • Seminární práce 75 bodů • prototyp 25 bodů • aplikace 50 bodů • Průběžné hodnocení a prezentace 25 bodů • CELKEM 100 BODŮ • minimálně polovina z každé části prototyp, aplikace, prezentace
Seminární práce, hodnocení • Vytvoření prototypu WWW aplikace (25) • návrh, e-mailem nebo na papíře (10) • návrh HTML stránky dle schváleného zadání (15) • Vytvoření aplikace (50) • návrh databáze (10) • Přihlašování, formulář s validací, administrace (10) • Dynamický obsah (10) • RSS výstup (10) • Dokumentace (10) • Za každý započatý týden zpoždění oproti stanovenému termínu -5 bodů!
WWW aplikace • Vyberte si, jakou aplikaci chcete dělat. Musí obsahovat: • databázi, minimálně jedna vazba 1:N • přihlašování uživatelů • administrační rozhraní pro databázi, formuláře • RSS výstup
Příklady WWW aplikace • Databáze článků (časopis/vydání/článek) • Psi z útulku (útulky/lidé/psi) • Vhodné dárky (příležitosti/dárky/obchody) • Seznam www/obchodů (Kategorie/region/obchod) • vlastní návrh Aplikaci navrhněte jednoduchou, práce bude hodně!
Termíny • PROTOTYP • do 30.10. 2013 pošlete návrh své aplikace, rozsah A4 textu • do 20.11. 2013 pošlete e-mailem odkaz a soubory v zip • APLIKACE • do 18.1. 2014, odevzdat aplikaci • napsat dokumentaci • e-mailem poslat odkaz na aplikaci online a zdrojový kód v zip • ve zkouškovém období se dostavit k zápočtu • Pracujte na úkolu průběžně, nejlépe o cvičeních k tomu určených!
Odkazy • www.php.net - oficiální stránky PHP • www.pcsvet.cz/php - programování v PHP • php.interval.cz - základy PHP • php.vrana.cz • www.kosek.cz • www.jakpsatweb.cz - kurz jazyka HTML a CSS
Založení webu (příklad) • http://www.webzdarma.cz • Registrace a provoz domény zdarma • Minimální zobrazování reklam • Podpora jazyka PHP a databáze MySQL • Správa databáze pomocí prostředku phpMyAdmin • Možnost odesílat e-mail pomocí PHP skriptu • Možnost uploadu stránek na server pomocí FTP protokolu
Doporučený editor PSPad • Freeware editor webových stránek • Domovská stránka: http://www.pspad.com/cz
Historie • PHP je skriptovací jazyk na straně serveru • 1994 – Rasmus Lerdorf vytvořil kombinaci skriptů v Perlu pro sledování přístupu na vlastní web stránku, požadavky na zlepšení →„Personal Home Page tools“ později „Personal Home Page Construction Kit“ • 1995 – PHP/FI 2.0 : skriptovací jádro + analýza vstupu z formulářů + obsluha sql serveru • 1997 - PHP 3.0: vytvořili Andi Gutmans a Zeev Suraski. Původní zkratka dostává nový význam →„ PHP: Hypertext Preprocessor“
Historie • 2000 – PHP 4.0 : podpora pro mnoho WWW serverů, HTTP sessions, buffering výstupu, bezpečnější způsoby zpracování vstupů uživatele a nové jazykové konstrukty • 2004 – PHP 5.0 : podpora objektově orientovaného programování
Proč PHP ANO? • Získávání dat z formulářů a práce s těmito daty • Dynamické generování stránek na základě získaných dat • Široká spolupráce s databázemi • Podpora protokolů HTTP, FTP, SMTP, POP3, atd. • Obsahuje knihovny funkcí pro práci s textovými řetězci, obrázky, datem a časem, soubory a složkami, aj. • Obsahuje knihovnu matematických funkcí • Skripty jsou prováděny na straně serveru - stažená stránka z www serveru tedy neobsahuje zdrojové kódy PHP skriptů. • Velmi svobodná licence
Proč PHP NE? • Interpretovaný ne kompilovaný jazyk • PHP skripty v textové podobě • Neexistuje kompletní definice, je popsána jen implementace • Nekonzistentní pojmenování funkcí • Nejednotné pořadí parametrů
K čemu PHP? • Firemní prezentace • Podnikové informační systémy • Internetové obchody • Redakční systémy • Diskusní fóra • Dynamické osobní stránky • Webklienti pro poštu i db • Počitadla, ankety …
HTML • Webový server přečte požadavek prohlížeče • Nalezne stránku na serveru • Odešle stránku přes internet zpět prohlížeči • Prohlížeč interpretuje HTML kód a zobrazí webovou stránku Co se děje se stránkami psanými čistě v HTML kódu ?
PHP • Webový server přečte požadavek prohlížeče • Nalezne stránku na serveru • Provede instrukce PHP pro modifikaci webové stránky • Odešle stránku přes internet zpět prohlížeči (čisté HTML) • Prohlížeč interpretuje HTML kód a zobrazí webovou stránku Co se děje se stránkami obsahujícími PHP kód ?
Základy PHP • PHP kód se zapisuje v textovém tvaru • PHP interpret (běžícím na webovém serveru) kód překládá a posílá do klienta (prohlížeče) hotový html kód • skripty (podobně jako .asp) narozdíl od JavaScriptu provádí server • nezatěžuje vlastní počítač - náročný na komunikaci se serverem • př. webový server nejprve spočítá kolik je 300/30 a pak prohlížeči odešle jen výsledek tj. číslo 10
Základy syntaxe • Název souboru webové stránky stadnardně obsahuje příponu "php" nebo „phtml“ (např. index.php) (! může mít jakoukoliv jinou, dle nastavení v konfiguračních souborech) • Začlenění PHP skriptu do (X)HTML kódu webové stránky <?phpecho "ahoj"; ?> Další možnosti (nedoporučuje se použivat): a)<?echo "ahoj"; ?> b) <script language="php"> echo "ahoj"; </script> c) <%echo "ahoj"; %>
Základy syntaxe • PHP nerozlišuje u speciálních slov a funkcí velikost písmen: echo = Echo = eChO • U názvů funkcí to platí také: PHPInfo() = phpinfo() • Neplatí to u proměnných: $jmeno není to samé, co $Jmeno • PHP ignoruje mezery, tabulátory a odřádkování, ty jsou pouze pro přehlednost v kódu • Nelze psát mezery do názvů funkcí, proměnných apod.
Základy syntaxe • Oddělení instrukcí
Základy syntaxe • Komentáře <?php // Text za dvojitým lomítkem je až do konce řádku ignorován... # Druhý způsob komentáře na jeden řádek... /* Víceřádkový komentář. Často se používá pro vyřazení bloku kódu PHP, který momentálně nechceme použít. */?>
První příklad <?php phpinfo(); ?>
ECHO Příkaz echo slouží k výpisu: • jednotlivých textových znaků a řetězců • HTML kódu • konstant • obsahu proměnných Lze použít i funkci print()
ECHO příklady <?php $Sirka = 640;$Vyska = 480;// Vkládání do HTML: ?> <img src="obrazek.png" width="<?php echo $Sirka; ?>" height="<?php echo $Vyska; ?>" alt="Obrázek"> <?php /* Generování celého HTML */ // Vypsání více parametrů:echo '<img src="obrazek.png" width="', $Sirka, '" height="', $Vyska, '" alt="Obrázek">'; // Spojování řetězců pomocí operátoru . (tečka):echo '<img src="obrazek.png" width="' . $Sirka . '" height="' . $Vyska . '" alt="Obrázek">'; ?>
Konstanty • obsah se později ve skriptu nedá změnit • narozdíl od proměnných názvy konstant nezačínají znakem $, zvykem je psát názvy konstant velkými písmeny • PHP obsahuje i několik předdefinovaných konstant, například PHP_OS define('SPOLECNOST',‚VOŠIS Praha'); define('PRODUKT', ‚Vyuka PHP'); define('VERZE', 2011); echo SPOLECNOST, ' představuje svůj nový produkt ', PRODUKT, ' ve verzi ', VERZE, '.';
Proměnné • Proměnné slouží k uchovávání hodnot, které lze během provádění skriptu měnit. • Proměnné začínají znakem $ (dolar), např. $soucet Pravidla pro název proměnné • V názvu proměnné nepoužívat diakritiku • PHP rozlišuje velká a malá písmena v názvu!!! • Název proměnné nesmí začínat číslicí nebo speciálními znaky, uvnitř názvu lze použit číslici (např. $promenna1). • $mojepromenna a $MojePromenna nejsou stejné! • jednopísmenné názvy ne! – po týdnu nevím, co je proměnná $d a $g ? • příliš dlouhé názvy ne! –snadněji se udělá chyba • sebepopisující názvy, jeden jazyk - četina bez hacku a carek - angličtina
Přiřazení hodnoty $promenna=2; $text_prom="Zdravím Vás"; Výpis hodnoty proměnné echo$promenna; echo"Toto je moje proměnná: $promenna"; echo"Je mi $narozen let."; echo"Je mi ".$narozen." let."; echo"Je mi <strong>".$narozen.“</strong> let.";
Jednoduché typy proměnných Typy proměnných: integer, double, string, boolean, array, object $a = 1; // $a je typ integer (celé číslo) $a = 1.5; // $a je typ double (desetinné číslo) $a = 1e-3; // $a je typ double ($a = 0.001) $a = “nějaký text”; // $a je znakový řetězec (také $a = “1”;) $a = TRUE; // $a logický typ “pravda” (FALSE - nepravda) Čísla lze zapisovat také v šestnáctkové soustavě: $a = 0xFF; // v $a bude uložena hodnota 255
String (řetězec) • Textové řetězce uzavíráme do uvozovek (“text”) nebo apostrofů (‘text’) • Spojování řetězců se provádí pomocí tečky: $jmeno=”Antonín”; $prijmeni=”Skopec”; echo “Zadali jste toto jméno: ”.$jmeno.“ ”.$prijmeni;
Psaní speciálních znaků \\ znak zpětné lomítko – ‘ \ ’ \n nová řádka – obdoba tagu <br> v HTML \t tabulátor \” znak uvozovky – ‘ ” ’ \$ znak dolar – ‘ $ ’ $a=20; echo “V proměnné \$a je uložena hodnota$a”;
Střídání uvozovek a apostrofů • <?php /* Apostrofy */ // echo 'I'd like to tell you: "You're the most interesting man I've ever met."'; // Toto by bylo špatně. echo 'I\'d like to tell you: "You\'re the most interesting man I\'ve ever met."'; // Toto je správně. /* Uvozovky */ // echo "I'd like to tell you: "You're the most interesting man I've ever met.""; // Toto by bylo špatně. echo "I'd like to tell you: \"You're the most interesting man I've ever met.\""; // Toto je správně.?>
Odřádkování • v řetězci mezi apostrofy či uvozovkami můžete odřádkovat enterem, vše se promítne do HTML kódu Operační systém Sekvence Windows \r\n Linux \n Mac OS \r • Místo odřádkování enterem uvnitř řetězce je však mnohdy lepší pro znak nového řádku v PHP použít danou escape sekvenci • POZOR, tato sekvence se převede na odřádkování pouze v případě, že je vypsána v uvozovkách!!!
Odřádkování pomocí sekvencí Operační systém Sekvence Windows \r\n Linux \n Mac OS \r • POZOR, tato sekvence se převede na odřádkování pouze v případě, že je vypsána v uvozovkách!!! <?php echo 'řádek 1<br>\r\nřádek 2<br>\r\nřádek3'; /* Vypíše \r\n literárně: řádek 1<br>\r\nřádek 2<br>\r\nřádek3 */ echo "řádek 1<br>\r\nřádek 2<br>\r\nřádek 3";/* Sekvence \r\n je převedena na odřádkování: řádek 1<br> řádek 2<br> řádek 3 */?>
Odřádkování pomocí konstanty • Lepší je definice pomocí konstanty <?php define('NL', "\r\n"); echo 'řádek 1', NL; echo 'řádek 2'; echo NL; echo 'řádek 3';?>
Výpis proměnné • Proměnnou vypisujeme pomocí příkazu echo(): $dolar="1$"; echo($dolar);echo("$dolar"); echo("mám jen" . $dolar . "<br />");echo("nemám ani $dolar"); • složitější, ale předejde se případným komplikacím: obyčejný text se píše do uvozovek a od proměnné odděluje tečkou
Expanze proměnné • <?php $Jmeno = 'Tereza'; echo 'Jmenuji se $Jmeno.'; // Vypíše: Jmenuji se $Jmeno. echo "Jmenuji se $Jmeno."; // Vypíše: Jmenuji se Tereza.?> • <?php $Jmeno = 'Tereza'; echo "Obsah proměnné \$Jmeno je $Jmeno"; // Vypíše: Obsah proměnné $Jmeno je Tereza // Poněkud lepší řešení: echo 'Obsah proměnné $Jmeno je ', $Jmeno; ?> • První výskyt proměnné $Jmeno je uvozen zpětným lomítkem, takže se vypíše literárně "$Jmeno". Druhý výskyt již zpětným lomítkem uvozen není, takže je proměnná $Jmeno nahrazena svým obsahem. V tomto případě "Tereza".
Úkol • s použitím příkazů echo(), escape sekvencí a html tagůnapište skript, který zobrazí v okně prohlížeče tento text: • každý řádek okomentujte