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