Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Základy programování v PHP
RNDr. Pavel Vlach, Ph.D.
2
PHP – k čemu to je? skriptovací jazyk pro tvorbu dynamického webu
internetové obchody podnikové informační systémy (ať už intranetové nebo internetové) diskusní fóra redakční systémy firemní prezentace dynamické osobní stránky weboví poštovní či databázoví klienti vyhledávače a katalogy drobnosti typu počitadla, ankety a mnoho dalších
3
Jak to funguje? 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 300/30 a pak prohlížeči odešle jen číslo 10
4
Co se naučíme? syntaxi a základy jazyka PHP
používání proměnných a různých datových typů větvení programů a cykly práce se soubory zpracování formulářových dat spolupráce s MySQL příklady diskuzní fórum základy redakčních systémů on-line přihlašovací formulář
5
Co budeme potřebovat? kompetence v oblasti tvorby HTML stránek
webový server (Apache s technologií PHP) textový procesor (PSPad, Pozn. blok) hodně času a chuti
6
1. princip funkce PHP historie PHP a html ještě jednou jak to funguje
b) jak se to spojí s html
7
Historie a skriptovací jazyky
první stránky statické – nereagovaly, nebyly interaktivní dynamické stránky - reagují na tlačítka a myš, zpracovávají data zadávaná uživatelem, zobrazované informace se mění apod. dynamické stránky lze rozdělit do dvou skupin: klientské serverové
8
klientské scriptovací jazyky
Spolu s HTML stránkou je prohlížeči odeslán i programový kód a ten je ve vhodnou chvíli na "cílovém" počítači spuštěn při kliknutí na tlačítko, při najetí myší na odkaz, při otevření okna prohlížeče a podobně O spuštění klientského kódu se stará prohlížeč - a to může být nevýhoda - musí znát programovací jazyk JavaScript
9
serverové scriptovací jazyky
prohlížeč požaduje webovou stránku ze serveru - server tuto stránku nejprve sestaví a pak odešle Servery sestavují pokaždé jinou stránku v závislosti na tom, co přesně prohlížeč požaduje php, asp
10
Jak vypadá php script? obsahuje jednak kusy normálního HTML kódu, a jednak kusy programového kódu. Když webový server obdrží požadavek na zpracování takového skriptu, vezme: kusy HTML kódu tak, jak jsou části PHP programového kódu provede výsledek zkombinuje a odešle prohlížeči Server totiž výsledek posílá do prohlížeče jako obyčejnou HTML stránku zapsaný kód v editoru vypadá jinak než po zobrazení „zdrojového kódu“ v prohlížeči
11
ukázka zápisu prosté html stránky
prostý html zápis (bez validní struktury, ale v prholížeči tento zápis „projde“)
12
ukázka zápisu se včleněným php kódem
adresa zápis kódu v editoru zobrazení prohlížeči výpis zdrojového kódu v prohlížeči všimněte si adresy v okně prohlížeče
13
Jak to, že se liší kód v editoru a kód v prohlížeči?
Prohlížeč „neví“, co všechno se na serveru dělo než mu byl výstup odeslán prohlížeč (a tedy i ten, kdo si chce přečíst kód v pohlížeči) vidí jen samotný výsledek na serveru se mohla dít celá řada věcí: matematické výpočty přístupy k databázím formátování operace s řetězci a další taškařice
14
závěrečné shrnutí skript musí být "prohnán" serverem
otevřením v textovém editoru nebo si ho prohlédnete jako soubor na disku, neuvidíte výsledek, ale zdrojový kód skriptu plést se může zejména tehdy, když máte PHP skript na vlastním počítači - PHP soubor proženete serverem tak, že se na něj zeptáte prohlížeče pomocí adresy url. Například pomocí
15
závěrečné shrnutí 2. PHP skripty nejsou závislé na prohlížeči
3. integrace PHP do html pomocí speciálních značek: - celý soubor může být jeden dlouhý PHP kód. - kód PHP je na jednom určitém místě - v souboru je více místo obsahující PHP kód - soubor se tváří jako php skript, ale ve skutečnosti je to normální HTML soubor a PHP kód v něm vůbec není 4. výsledkem PHP skriptu je normální HTML stránka – nepouštějte se do práce v PHP, pokud alespoň zběžně neznáte HTML 5. k dispozici musí být webový server
16
doporučená literatura
Jiří Kosek PHP tvorba interaktivních internetových aplikací Grada Publishing 1999, 492 stran ISBN stará, ale dobrá různé webové kurzy
17
webový server a jeho instalace
apache php mySQL
18
jak na instalaci? instalace a přená konfigurace webového serveru Apache a následně spuštění technologií php a mySQL může být velmi obtížná pro začátek (v rámci celého kurzu vystačíme) lze nainstalovat celý balíček výše zmíněných serverů a aplikací odkazy na 3v1 instalace:
19
Vertrigo server stabilní, většinou bezproblémová instalace
nabízí Apache, PHP4 a mySQL možnosti konfigurace v rozbalovací liště první volba umožňuje restart a vypnutí serveru v liště Tools je k dispozici phpMyAdmin Settings umožňují základní konfiguraci
20
Vertrigo server
21
Úkol na ploše je umístěn zástupce serveru Vertrigo
spusťte jej a pozorujte změny na panelu nástrojů spusťte konfigurační program
22
Vertrigo server pro naše účely stačí základní konfigurace
složka, ve které budou interpretovány php scripty má tuto cestu: C:/Program Files/VertrigoServ/www v prohlížeči se příslušný soubor zobrazí, pokud zadáte: příklad: C:/Program Files/VertrigoServ/www/zdroje/pokus.php bude interpretován v prohlížeči pokud zadáte:
23
základní syntaxe jazyka php
implementace php do html syntaxe komentáře
24
vložení php do html tři způsoby vložení php scriptu
<? [PHP kód] ?> <?php [PHP kód] ?> <SCRIPT LANGUAGE="php"> php [PHP kód] </SCRIPT> doporučuji druhý způsob budeme používat první způsob
25
vložení php do html
26
syntaxe php všechny datové struktury musí být odděleny středníkem
příkazy deklarace funkce musí být odděleny středníkem pokud se objeví při zobrazení stránky chyba Parse Error, většinou někde chybí středník nezáleží na počtu mezer nebo řádek za středníkem
27
syntaxe php tohle hlásí chybu tohle funguje
28
komentáře komentáře jsou úseky kódu, které server ani prohlížeč nezobrazuje, resp. nezpracovává slouží ke zvýšení přehlednosti kódu naučme se je používat hned, později to bude automatické u rozsáhlejších programů nezbytnou podmínkou
29
komentáře jednořádkový komentář začíná dojicí znaků // (lomítko) nebo znakem # (Alt Gr+X) dvouřádkový komentář začíná /* (lomítko, hvězdička) a končí opačně, tj. */
30
echo (); print(); formátování a escape sekvence
výpis na obrazovku echo (); print(); formátování a escape sekvence
31
echo (); tento příkaz vypíše obsah proměnné, řetězec, číslo, html tag…. možné zápisy: echo (“Hello world“); echo ($promenna); echo (“<strong>odstavec</strong>“);
32
echo – příklady kódů
33
echo – „zlobivé“ znaky zvláštní formátování mají znaky “, \, <, $
před nimi se používá znaku \ používá se hlavně při formátování html tagů těmto znakům se říká „escape sekvence“
34
escape sekvence
35
escape sekvence – ještě jednou
36
jak jinak na uvozovky?
37
úkol s použitím příkazu echo(), escape sekvencí a html tagů <div> <strong> <em> <a> <h2> napište v PSPadu php script, který zobrazí v okně prohlížeče tento text: výsledek uložte do vaší složky
38
druhy proměnných datové typy operátory
39
proměnná programovací jazyk pracuje s hodnotami
hodnoty se ukládají do proměnných proměnná má: název (uvozený znakem $) hodnotou hodnota proměnné v programu jednoznačně daná během programu se však může měnit
40
typy proměnných php automaticky po přiřazení hodnoty vybere vhodný datový typ $zapnuto=true //typ boolean $nazev=“aleš“ //typ string
41
proměnné typy a triky jednopísmenné názvy ne – po týdnu nevím, co je proměnná $d a $g ? příliš dlouhé názvy také ne – zápis jde a snadněji se udělá chyba používejte sebepopisující názvy, jeden jazyk četina bez hacku a carek angličtina používejte velbloudí notaci – pro přehlednost vkládejte do názvu proměnné velká písmena: $PopisTabulky $FindCursorPosition $MoveCursor
42
operátory běžné operátory podobná syntaxe jako v jazyce C++
řetězce spojujeme pomocí tečky (.)
43
příklad 1
44
příklad 2
45
úkol vytvořte script, který bude kombinovat příkaz echo a proměnné různých typů proveďte různé operace s proměnnými, spojujte řetězce atd. výsledek uložte do vaší složky
46
větvení programu typy podmínek
47
if …. else struktura if (výraz, podmínka) { …….. } if (výraz, podmínka) { …….. } else { ……. } if (výraz, podmínka) { …….. } else if { ……. } else { ……. } v závorce se testuje proměnná typu boolean nebo jakýkoliv výraz pomocí porovnávacích operátorů
48
if – příklad 1
49
if - příklad 2
50
podmínky - tipy a triky bez podmínek se neobejdete. Naučte se je. Z hlavy. příkaz v některé větvi podmínky může být zase podmínka. Vnořené podmínky jsou někdy potřeba, ale mohou pěkně znepřehlednit kód. Zvažte použití větve else v podmínce vždy, když si nejste absolutně jisti, že větve elseif pokrývají všechny alternativy. Formátujte kód tak, abyste se v něm vyznali KOMENTUJTE. Podmínky mohou být složité a za půl roku, když budete potřebovat skript oprášit už nebudete vědět, proč jste je psali.
51
podmínky - úkol vytvořte 3 scripty, které budou využívat větvení pomocí podmínky if elseif a else v prvním skriptu testujte výraz typu boolean v druhém skriptu testujte číselnou proměnnou pomocí operátorů <, >, <=, => ve třetím scriptu testujte řetězce pomocí operátorů == , != a logických operátorů && a || uložte do vaší složky
52
switch nahrazuje níže uvedenou strukturu: má tento tvar
if (výraz1) {…………} elseif (výraz2) {…………} elseif (výrazn) {…………} else {…………………….} má tento tvar switch (podmínka) { case výraz1: case výraz2: case výraz3: default: }
53
switch - příklad
54
cyklus for cyklus do….while cyklus while
smyčky - cykly cyklus for cyklus do….while cyklus while
55
cyklus for for ($i=1; $i<=20; $ i++) { ……. }
cyklus s parametrem – víme, kolikrát cyklus proběhne for ($i=1; $i<=20; $ i++) { ……. } před započetím konkrétního cyklu se vyhodnotí výraz druhý (zde $i<=20) neplatí-li podmínka, cyklus se ukončí platí-li, cyklus pokračuje dále a provede se sekvence mezi složenými závorkami po ukončení těla smyčky se provede třetí výraz (zde se parametr $i zvýší o jedničku vše se opakuje
56
for - příklad
57
cyklus s podmínkou s podmínkou na začátku :
tělo cyklu proběhne jen tehdy, je-li platná podmínka while (podmínka) {…….} s podmínkou na konci : tělo cyklu proběhne vždy minimálně jednou opakuje se, pokud platí podmínka do {…….} while (podmínka)
58
příklad - while
59
příklad – do…while
60
cykly – tipy a triky většinou jsou oblíbenější smyčky s podmínkou na začátku Smyčky se mohou vnořovat. Formátujte si kód (=používejte tabulátor) komentáře, zejména u delších smyček. Vůbec totiž nemusí být jasné, kde smyčka začala, když je kód dlouhý. Komentujte konce smyček. velký pozor na podmínky – použijete-li místo porovnávacího operátoru (==) operátor přiřazení (=) celý skript se zablokuje – vytvořili jste nekonečnou smyčku…..
61
jednorozměrné pole vícerozměrné pole
proměnná typu pole jednorozměrné pole vícerozměrné pole
62
k čemu pole? do jedné proměnné můžeme uložit indexová data
např: dny v týdnu, seznamy $DenvTydnu[1]=“pondělí“; $DenvTydnu[2]=“úterý“; $DenvTydnu[7]=“neděle“; lze použít asociativní pole: $PocetObyvatel[“Blovice“]=4005; $PocetObyvatel[“Habří“]=0;
63
definice pole výčtem (viz předchozí strana) funkcí Array
$Pracovni Tym= Array (“Ludva”,”Gita“,“Adolf“,“Čeněk“); POZOR! indexuje se standardně od nuly $Mesta = Array(1=>“Blovice“, 2=>“Nepomuk“, 3=>“Měčín“);
66
vícerozměrné pole
67
funkce matematické funkce řetězcové funkce funkce pro práci s poli
vlastní funkce
68
funkce předdefinovaný (uživatelem nebo standardně) úsek kódu, který vykonává nějakou činnost nebo vrací hodnotu rozlišujeme procedury a vlastní funkce procedura - úsek kódu, který vykonává nějakou sekvenci příkazů funkce – vrací nějakou hodnotu
69
matematické funkce abs — Absolutní hodnota
ceil — Zaokrouhlení zlomků nahoru cos — Cosinus exp — Vypočtení mocniny čísla e (základ přirozeného logaritmu) floor — Zaokrouhlení zlomků dolů hexdec — Hexadecimální na desítkové log10 — Base-10 logarithm log — Natural logarithm max — Nalezení největší hodnoty min — Nalezení nejmenší hodnoty pi — Získání hodnoty pí pow — Mocnina rand — Generování náhodného čísla round — Zaokrouhlení čísla sin — Sinus sqrt — Odmocnina tan — Tangens
70
řetězcové funkce addslashes — Opatřit řetězec lomítky
chr — Vrátit určitý znak explode — Rozděluje řetězec jiným řetězcem implode — Spojit prvky pole pomocí řetězce join — Spojit prvky pole pomocí řetězce md5 — Spočítat MD5 hash řetězce ord — Vrátit ASCII hodnotu znaku strchr — Najít první výskyt znaku strlen — Zjistit délku řetězce strpos — Najít pozici prvního výskytu řetězce strrchr — Najít poslední výskyt znaku v řetězci strrev — Obrátit řetězec strstr — Najít první výskyt řetězce strtolower — Změnit řetězec na malá písmena strtoupper — Změnit řetězec na velká písmena substr_replace — Nahradit část řetězce jiným řetězcem substr — Vrátit část řetězce ucfirst — Změní první písmeno řetězce na velké ucwords — Změnit první znak každého slova v řetězci na velké písmeno
71
funkce pro práci s poli array_merge — Sloučit dvě nebo více polí
array_push — Přidat jeden nebo více prvků na konec pole array_rand — Vybrat náhodně jeden nebo více prvků pole array_reverse — Vrátit pole s prvky v opačném pořadí array_shift — Odstranit prvek ze začátku pole array_splice — Odstranit část pole a nahradit ji něčím jiným array_unique — Odstranit z pole duplicitní hodnoty array_values — Vrátit všechny hodnoty v poli array — Vytvořit pole end — Nastavit vnitřní ukazatel pole na jeho poslední prvek foreach – Posunout interní ukazatel pole pos — Získat současný prvek pole reset — Nastavit interní ukazatel pole na jeho první prvek rsort — Třídit pole sestupně shuffle — Zamíchat pole sizeof — Zjistit počet prvků v poli sort — Třídit pole
72
příklady práce s funkcemi
73
úkol vyzkoušejte uvedené matematické funkce
za zadaného čísla (poloměru kružnice) spočítá obvod a obsah kruhu výsledek zaokrouhlí dolů vyzkoušejte uvedené řetězcové funkce zadaná věta (v proměnné $veta) spočte počet slov zjistí první výskyt spojky „a“ převede řetězec a velká písmena a vypíše
74
vlastní definice - procedury
75
vlastní definice - funkce
76
úkol Definuj proceduru pro výpis aktuálního data a času a dne v týdnu
Definuj tři funkce s parametrem pro výpočet obsahu a obvodu obdélníka, pro výpočet diskriminantu kvadratické rovnice diskriminant
77
zpracování formulářových dat
způsoby předávání proměnných mezi soubory a serverem čtení a vyhodnocování dat z formulářů
78
jak posílat proměnné? GET – metoda, kdy je proměnná předávána v URL stránky hodí se pro kratší informace nulové zabezpečení lze posílat informace přímo zadáním do prohlížeče POST – metoda, kdy se proměnné předávají jako samostatný HTML objekt delší informace malinko lépe zabezpečené použití těchto metod se definuje v hlavičce formuláře (zadáním parametru method)
79
jak mají vypadat formuláře?
v tagu <form> musí být definovány parametry „action“ (název souboru se scriptem, který se po odeslání formuláře spustí) „method“ (GET nebo POST) všechny prvky formulář musí být identifikovány jménem (parametr „name“) musí obsahovat odesílací prvek („submit“); obsah formuláře se po odeslání ukládá do asociativního pole $_REQUEST, $_POST
81
jak vrátit zpracovaný script k opravě?
obsah všech odeslaných proměnných je v poli $_REQUEST, resp. $_POST (u metody post) pomocí funkce echo lze vypsat do formulářových polí nějaký obsah odkazem nebo skrytým formulářem vrátíme obsah polí zpět do souboru s formulářem zbytek je stejný dva způsoby jak předat tato data: pomocí skrytých formulářů pomocí metody GET v hlavičce dokumentu
84
dva v jednom velmi často se používá zadávání i vyhodnocování dat v jednom souboru problém – jak má formulář vědět co se právě děje? testujeme obsah polí $_REQUEST, $_POST
86
úkol modifikujte příklady z minulého týdne tak, aby se vstupní data vkládala pomocí různých typů formulářů
87
konstrukce „minichatu“
po odeslání se zobrazí čas, jméno a text zprávy výsledky budou v proměnné typu STRING normálně se výsledky ukládají do databáze v tomto případě po ukončení prohlížeče informace zmizí
89
Databáze mySQL phpmyAdmin
90
mySQL databáze primárně určená pro spolupráci s php
mySQL databáze je součástí freeware balíků pro provoz webového serveru (tj. i Vertriga) mySQL běží na většině serverů s free hostingem a na všech zpoplatěných službách všechny databázové operace (tvorba databáze, třídění, výpis, mazání….) lze provádět scripty na řadu operací je ale vhodné použít připravený nástroj pro správu databáze - phpmyAdmin
91
phpmyAdmin spustíme z této nabídky:
92
phpmyAdmin
93
struktura php skriptu tvorba nové tabulky
94
struktura tabulky v tomto případě má tabulka 3 sloupce
první sloupec se jmenuje „id“ – pořadové číslo (číslo „řádku“) druhý řádek obsahuje přihlašovací jméno uživatele třetí řádek obsahuje přihlašovací heslo tabulka bude sloužit k ověřování uživatelů
95
vkládání obsahu
96
procházení a třídění tabulky
97
úkol vytvořte jednoduchou tabulku podle výše popsaných kritérií
98
položení dotazu na databázi operace s výsledkem dotazu
Spolupráce s mySQL připojení k databázi připojení k tabulce položení dotazu na databázi operace s výsledkem dotazu
99
připojení k databázi jméno serveru (localhost, www.webzdarma.cz.....)
jméno uživatele (vertrigo, newstyle.wz.cz….většinou přidělí provider) heslo (_root, zvolíte si sami na webu) název databáze (někdy nelze vytvářet databáze, máte je přidělené (často stejný název jako jméno uživatele)
100
připojení k databázi musíme ošetřit chyby – připojení se nemusí povést (a často se nepovede) vypíše text a chybu (z funkce mysql_error) připojení
101
připojení k databázi je vhodné do externího souboru nadefinovat parametry připojení (SERVER, UŽIVATEL, HESLO A JMÉNO DATABÁZE) tyto parametry uložíme do proměnných nebo konstant a soubor připojíme (include) do každého souboru pokud potřebujeme změnit – měníme jen v jednom souboru
102
příkazy v mySQL Definiční Umožňují spravovat strukturu databáze
CREATE TABLE, DROP TABLE Výběrové Umožňují získat z databáze data SELECT Přidávací Umožňují přidávat nová data do tabulky nebo tabulek INSERT Aktualizační Umožňují měnit existující data v tabulkách UPDATE, REPLACE Odstraňovací Umožňují smazat řádky z tabulky nebo tabulek DELETE
103
čtení z databáze SELECT [seznam polí] FROM [název tabulky nebo tabulek] WHERE [podmínka] ORDER BY [seřazení]
104
čtení z databáze třídění – používá se atribut ORDER BY (název třídícího znaku) DESC (sestupně) ASC (vzestupně) vyhledávání – používá se atribut WHERE (název sloupce) LIKE (příznak) tento dotaz vybere všechny záznamy, které ve sloupci „town“ mají hodnotu „Blovice“
105
úkol kontrola přihlašovacího jména
formulář s přihlašovacím jménem a heslem po odeslání kontrola databáze, zda obsahuje jméno kontrola, zda k příslušnému jménu je zadáno správné heslo výpis podle situace (není jméno, špatné heslo, vše je ok)
106
vkládání údajů do databáze
INSERT INTO [název tabulky] (sloupec, ...) VALUES (hodnota, ...) INSERT INTO [název tabulky] (sloupec, ...) VALUES (hodnota, ...) INSERT INTO [název tabulky] (sloupec, ...) VALUES (hodnota, ...)
107
oprava údajů v databázi
příkaz UPDATE stejná struktura jako INSERT export údajů z databáze k dotazu SELECT přidáme atribut INTO OUTFILE (název souboru)
108
soubory v databázi vždy zapeklitý problém – jak zapsat bez chyby a hlavně jak zobrazit v tabulce musí být sloupec se type BLOB (binární data) data čteme z nějakého souboru na disku pomocí: $otevrit = fopen(soubor, "rb"); $data = fread($otevrit,filesize(soubor)); obsah proměnné data vkládáme do db poté, co jsme jej převedli na řetězce $data = mysql_escape_string($data); $data = addslashes($data);
109
soubory v databázi vždy problematické – možná lépe export do souborů uspořádaných do složek pozor na typ BLOB do 65kb, MEDIUMBLOB do 16Mb binární data lze zobrazovat pomocí volání header (specifikace, název souboru); pozor!! Header musí být první výstup do prohlížeče (jinak chyba) – včetně hlavičky html dokumentu v header zadáme specifikaci výstupu Content-Type: image/jpeg Content-Type: text/rtf
110
formát funkce mail zasílání emailu
111
funkce mail slouží k zasílání mailů
mail (string $to, string $subject, string $message [, string $additional_headers [, string $additional_parameters]] ) při posílání mailů z localhostu – může dojít k problémům – musí být zajištěn přístup k direktivě sendmail optimální je mít nainstalovaný mail server (např. Free SMPT server, POSTCAST Server)
112
funkce mail tato část programu zajistí odeslání mailu na mailserver
113
k čemu to je registrace session proměných vymazání proměnných
Sessions k čemu to je registrace session proměných vymazání proměnných
114
Sessions session se musí spustit direktivou
způsob předávání proměnných mezi soubory proměnná se registruje a do doby vypršení platnosti (dá se nastavit), do ukončení okna prohlížeče nebo manuálního ukončení platnosti session je tato proměnná (včetně obsahu) k dispozici všem php souborům session se musí spustit direktivou session_start(); tato direktiva musí být úplně první (před jakýmkoliv odesláním informací do prohlížeče, tzn. i před hlavičkou html dokumentu
115
Sessions registrace session proměnných registrace session proměnných
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.