Transcript PHP
PHP
Úvod do programování
Kontaktní údaje:
Ing. Antonín Skopec
[email protected]
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. 2014 pošlete návrh své aplikace, rozsah A4 textu
do 20.11. 2014 pošlete e-mailem odkaz a soubory v zip
APLIKACE
do 18.1. 2015, 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ů
Slabší podpora UNICODE
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
1. Webový server přečte
požadavek prohlížeče
2. Nalezne stránku na serveru
3. Odešle stránku přes internet
zpět prohlížeči
4. 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
1. Webový server přečte
požadavek prohlížeče
2. Nalezne stránku na serveru
3. Provede instrukce PHP pro
modifikaci webové stránky
4. Odešle stránku přes internet
zpět prohlížeči (čisté HTML)
5. 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
<?php echo "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 ve
rzi ', 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
Windows
Linux
Mac OS
Sekvence
\r\n
\n
\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
Windows
Linux
Mac OS
Sekvence
\r\n
\n
\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