PHP. Jaroslav SKÁLA. poznámky k přípravě na reparát



Podobné dokumenty
EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Vstupní požadavky, doporučení a metodické pokyny

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Programovací jazyk Pascal

PHP tutoriál (základy PHP snadno a rychle)

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

VISUAL BASIC. Práce se soubory

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

PHP. Čtvrtek 8. září. Čtvrtek 15. září. Anonymní test znalostí

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Hlavní funkce pro práci s řetězci

Programování v jazyce JavaScript

Inovace bakalářského studijního oboru Aplikovaná chemie

1 Webový server, instalace PHP a MySQL 13

Programování v jazyce JavaScript

Algoritmizace a programování

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Maturitní otázky z předmětu PROGRAMOVÁNÍ

DUM 14 téma: Interakce s uživatelem

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Formuláře. Internetové publikování. Formuláře - příklad

Základy HTML, URL, HTTP, druhy skriptování, formuláře

Tabulkový procesor. Základní rysy

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

C2110 Operační systém UNIX a základy programování

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

17. července :51 z moravec@yahoo.com

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Sada 1 - PHP. 03. Proměnné, konstanty

Webové Aplikace (6. přednáška)

Funkce, podmíněný příkaz if-else, příkaz cyklu for

MAXScript výukový kurz

XHTML 1. Formuláře. Element form. <form>... </form>

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Sada 1 - Základy programování

Stručný návod k programu Octave

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Zápis programu v jazyce C#

Proměnné a parametry. predn_08.odt :00:38 1

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

5 Přehled operátorů, příkazy, přetypování

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

03 - Základy editace dynamických stránek

Algoritmizace a programování

Algoritmy a datové struktury

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Algoritmizace a programování

PROGRAMOVÁNÍ V SHELLU

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST]

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

Návrh a tvorba WWW stránek 1/8. Formuláře

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

VY_32_INOVACE_08_2_04_PR

6 Příkazy řízení toku

Kurz LSL skriptování. Shiny Iceberg 2009

Textové, datumové a časové funkce

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Sada 1 - Základy programování

1. Umístěte kurzor do sloupce Datový typ na řádek s polem, ve kterém vytvořit chcete seznam.

- jak udělat konstantu long int: L long velka = 78L;

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Poslední nenulová číslice faktoriálu

Skripty základy VB, vestavěné objekty, příklady

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

DATABÁZE MS ACCESS 2010

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

1. Webový server, instalace PHP a MySQL 13

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

6. Příkazy a řídící struktury v Javě

Koláčky, sezení. Martin Klíma

Tvorba klientských skriptů v jazyce Java Script

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

8 Třídy, objekty, metody, předávání argumentů metod

Programování v C++, 2. cvičení

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Operační systémy. Cvičení 4: Programování v C pod Unixem

Testování webových aplikací Seznam.cz

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Úvod do programování. Lekce 3

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

Sada 1 - Základy programování

Transkript:

PHP Jaroslav SKÁLA poznámky k přípravě na reparát

OBSAH / PHP 1. PHP JAKO CELEK... 2 2. SKRIPT V PHP... 2 3. DALŠÍ RYSY KÓDU... 2 4. ZÁKLADNÍ PŘÍKAZY... 2 5. PROMĚNNÉ... 2 6. DATOVÉ TYPY... 2 7. ZÁKLADNÍ OPERACE S PROMĚNNÝMI... 2 8. ZJEDNODUŠENÉ ZÁPISY + ZÁKLADNÍ MATEMATICKÉ OPERÁTORY... 2 9. PŘÍKAZY PRO VĚTVENÍ PROGRAMU... 3 10. PŘÍKAZY CYKLU... 4 11. FUNKCE... 5 12. TABULKA VŠECH DOSTUPNÝCH FUNKCÍ... 6 13. ŘETĚZCE... 7 14. PRÁCE S DATEM A ČASEM... 8 15. UŽIVATELSKÉ FUNKCE... 8 16. POLE..9 17. FORMULÁŘE... 10 18. PRVKY FORMULÁŘE... 11 19. OVĚŘENÍ SPRÁVNOSTI ZADANÝCH HODNOT... 12 20. KVALITNÍ ZPRACOVÁNÍ FORMULÁŘOVÝCH DAT... 14 21. PRÁCE SE SOUBORY... 14 22. ČTENÍ A ZÁPIS DO TEXTOVÝCH SOUBORŮ... 15 23. COOKIES... 16 24. NAHRÁVÁNÍ SOUBORŮ NA WEB... 16 25. SPRÁVA SESSIONS... 17 26. POUŽITÁ LITERATURA.18 1

1. PHP JAKO CELEK - skriptovací jazyk určený především pro tvorbu internetových aplikací - PHP = [personal home page tools] 2. SKRIPT V PHP - textový soubor s příponou, která mívá povětšinou tvar *.php, *.php3, *.php4 nebo *.phtml - pro označení PHP kódu se používá kombinace znaků: 3. DALŠÍ RYSY KÓDU [!] všechny příkazy PHP musí být zakončeny středníkem - správný kód by měl být taktéž průběžně komentovaný komentáře vkládáme vždy za část hotové skriptu pomocí znaků // nebo # 4. ZÁKLADNÍ PŘÍKAZY - zobrazení údaje v prohlížeči (výpis na obrazovku): echo // syntaxe: echo ahoj světe ; 5. PROMĚNNÉ - jedná se o místo v paměti počítače, které odkazuje na pojmenovanou hodnotu - každá proměnná musí začínat znakem $ // syntaxe: $mojecislo = 6; - typy proměnných: string (řetězec); integer (celé číslo); float, real & double (desetinné číslo); boolean (logická proměnná, hodnota PRAVDA, NEPRAVDA (1, 0), zapisuje se TRUE nebo FALSE) 6. DATOVÉ TYPY - celá čísla [INTEGER] = používá se pro celá čísla, která mají rozsah v intervalu od 2 147 483 648 až do + 2 147 483 648 - desetinná čísla [DOUBLE] = používá se pro desetinná čísla - pole [ARRAY] = používá se pro vícerozměrné proměnné - řetězec [STRING] = používá se pro řetězec znaků, a je tedy určen především pro texty 7. ZÁKLADNÍ OPERACE S PROMĚNNÝMI - spojování řetězců = mechanismus vyhodnocující kód nejprve převádí hodnoty po obou stranách tečky (tzv. operandy) na řetězce a poté je sloučí // syntaxe: echo Dnes je.. pondělí ; - zřetězení do nové proměnné = můžeme sdružovat několik řetězců do nové proměnné - zřetězení do stále stejné proměnné = umožňuje za pomocí jedné proměnné stále rozšiřovat řetězec 8. ZJEDNODUŠENÉ ZÁPISY + ZÁKLADNÍ MATEMATICKÉ OPERÁTORY STANDARTNÍ ZÁPIS ZJEDNODUŠENÝ ZÁPIS $x = $x. ahoj ; $x.= ahoj ; $x = $x + 1; $x += 1; $x = $x - 1; $x -= 1; $x = $x * 10; $x *= 10; $x = $x / 2; $x /= 2; OPERACE ZNAK Sčítání + Odčítání - násobení * Dělení / dělení se zbytkem % přičtení jedničky ++ odečtení jedničky -- 2

9. PŘÍKAZY PRO VĚTVENÍ PROGRAMU - jedná se o příkazy, které porovnávají hodnoty proměnných a podle výsledku porovnávání zvolí jednu ze dvou nebo více možností, jak dále pokračovat ve vykonávání kódu - podmínky pomocí příkazu IF = používáme, pokud potřebujeme otestovat, zda proměnná obsahuje nějakou určitou hodnotu, nebo zda je naopak od této hodnoty odlišná // syntaxe: if ($hodin == 12) echo Je poledne! ; - ELSEIF = vícenásobné rozhodování o pokračování vykonávání kódu, je možné použít v jednom příkazu IF vícekrát - podmíněný operátor: výraz? kladná_odpoveď : záporná_odpoveď [!] jedno rovnítko (=) slouží k přiřazení hodnoty, oproti tomu dvě rovnítka (==) slouží jako operátor provádějící porovnání - výběr z více možností příkazem SWITCH: systém nejprve vyhodnotí testovaný výraz a poté prochází jednotlivé větve příkazu a ignoruje veškeré příkazy, dokud nenarazí na shodu hodnoty testovaného výrazu a hodnoty dané větve pokud k takové shodě nedojde, bude spuštěna sekce default PŘÍKLAD: switch (testovaný vyraz / proměnná) } case hodnotaa: // příkazy, které se mají provést v případě splnění rovnosti hodnotya a hodnoty testovaného výrazu break; case hodnotab: // příkazy, které se mají provést v případě splnění rovnosti hodnotyb a hodnoty testovaného výrazu break; default: // příkazy, které se mají provést, pokud nevyhověla ani jedna podmínka } PŘEHLED OPERÁTORŮ OPRÁTOR ZÁPIS V PHP VYSVĚTLENÍ AND A && B podmínka A i podmínka B musí obě platit najednou OR A B musí platit aspoň jedna z podmínek A, nebo B 3

10. PŘÍKAZY CYKLU - cyklus (či smyčka) představuje sekvenci příkazů, kterou program vykonává opakovaně - cyklus s podmínkou na začátku WHILE = nejméně náročný cyklus, avšak zároveň nabízí nejnižší komfort PŘÍKLAD <? php while (výraz) { php kód } - ze zápisu plyne, že tento typ cyklu je založen na testování platnosti určité podmínky - cyklus s podmínkou na konci DO WHILE = cyklus, který testuje podmínku až na jejím samém konci, čímž je dána vlastnost, že se příkazy uvnitř cyklu provádí alespoň jednou PŘÍKLAD <? php do { php kód } while (výraz) - cyklus pro stanovený počet průběhů FOR = nejflexibilnější, ale zároveň nejnáročnější cyklus PŘÍKLAD <? php for (výraz1; výraz2; výraz3) { php kód } - význam výrazů v závorce za for je následující: výraz1 počáteční inicializace řídící proměnné (počítadla) cyklu výraz2 logická podmínka, která musí být splněna, aby se cyklus povedl výraz3 výraz pro aktualizaci řídící proměnné (počítadla) cyklu - zvýšení hodnoty počítadla o jednotku: $řídící_proměnná ++; 4

11. FUNKCE - jakýsi program, který nám vrátí určitá data MOŽNÉ ZPŮSOBY FORMÁTOVÁNÍ %b parametr bude zpracován jako integer a zobrazen ve dvojkové soustavě %c parametr bude zpracován jako integer a zobrazen jako písmeno na základě kódu ASCII %d parametr bude zpracován jako integer a zobrazen jako celé číslo v desítkové soustavě %u parametr bude zpracován jako integer a zobrazen jako celé číslo v desítkové soustavě bez znaménka mínus %f parametr bude zpracován jako integer a zobrazen jako double, čili včetně desetinných míst %o parametr bude zpracován jako integer a zobrazen v osmičkové soustavě %s parametr bude zpracován jako integer a zobrazen jako klasický řetězec %x parametr bude zpracován jako integer a zobrazen v šestnáctkové soustavě %X totéž jako formát %x s tím rozdílem, že písmena budou převedena na velká - parametr určující formát nemá pouze svůj typ, ale také další strukturu, kterou lze charakterizovat takto: % čím_vyplnit jak_zarovnat délka počet_desetinných_míst formát PŘÍKLADY printf( %f, 1,123456); 1,123456 printf( %d, 1,123456); 1 printf( %d %f, 1,123456, 1,123456); 1 1,123456 printf( %d, 1,123456ABC ); 123456 printf( %.2f, 1,123456); 1,23 printf( %010.2f, 1,123456); 0000000001,23 printf( %0-10.2f, 1,123456); 1,23000000000 printf( Výsledek je: %0-10.2f, 1,123456); Výsledek je: 1,23000000000 printf( Výsledek je: % x-10.2f, 1,123456); Výsledek je: 1,23xxxxxxxxx - lokální proměnné jsou všechny proměnné, které definujeme uvnitř těla nějaké funkce - jestliže je daná proměnná definována mimo definici jakékoli funkce, jedná se o tzv. globální proměnnou, která je oproti proměnným lokálních viditelná od místa její definice až na konec definičního souboru 5

12. TABULKA VŠECH DOSTUPNÝCH FUNKCÍ printf sprintf strtoupper strtolower ucfirst strlen strstr strpos strrpos strrev str_repeat substr substr_count str_replace strtr highlight_string, highlight_file strtok time rand srand microtime PŘEHLED FUNKCÍ zobrazí výsledek přímo na obrazovce předává výsledek funkce pro další zpracování převádí všechny znaky řetězce na velká písmena převádí všechny znaky řetězce na malá písmena převádí první písmeno z řetězce na velké písmeno zjišťuje délku řetězce získání části z řetězce definovanou pozicí prvního výskytu zadaného znaku a koncem řetězce zjišťuje pozice, na níž se nachází v textu první výskyt znaku zjišťuje pozice, na níž se nachází v textu poslední výskyt znaku umožňuje psát pozpátku slouží pro opakování řetězce umožňuje výběr podřetězce zjišťuje celkový počet výskytu znaků nahrazuje určité znaky v řetězci znaky jinými slouží k přeložení vstupního řetězce dle zadání zvýrazňuje kód aby byl co nejlépe čitelný slouží k postupnému získávání částí zadaného řetězce definovaný oddělovači funkce, jež vrací čas ve speciálním unixovém formátu, kdy je návratovou hodnotou počet sekund, které uplynuly od půlnoci 1. 1. 1970 generuje náhodné číslo v určeném intervalu slouží k inicializaci generátoru náhodných čísel umožňuje řetězec obsahující dva jedinečné parametry msec a sec, kdy sec je počet vteřin uplynulý od data 1. 1. 1970 a msec je mikrosekundová část předchozí hodnoty 6

13. ŘETĚZCE - řetězce (neboli string) to je všechno, co souvisí s textem. Pomocí některých funkcí můžete text ořezávat, počítat znaky, vypisovat kód ASCII atd., jedná se o kus textu length copy pos insert delete str ZÁKLADNÍ PŘEHLED ŘETĚZCŮ funkce zjišťuje aktuální velikost řetězce, což provede přetypováním nultého znaku na číslo funkce vybere z řetězce část od stanovené pozice funkce vrátí číslo, které odpovídá pozici řetězce, kde se vyskytuje zadaný podřetězec procedura, která vloží vkládaný řatězec do druhého řetězce na pozici Kam, výsledná hodnota je uložena v proměnné Retezec, je-li v parametru Kam hodnota větší, než je aktuální délka řetězce, vloží se VkladanyRetezec za Retezec procedura, která od pozice Odkud odstraní část řetězce o délce KolikZnaku, výsledná hodnota je uložena v proměnné Retezec procedura, která převede výraz libovolného číselného datového typu na řetězcovou reprezentaci, stejný proces převodu provádí procedura write a writeln METODY PHP PRO PRÁCI S ŘETĚZCI addslashes() přidá do řetězce zpětná lomítka před znaky typu("). chop() odstraní mezery na konci řetězce chr(ascii) zapíše řetězec podle ASCII chunk_split(řetězec, délka, oddělovač) rozdělí řetězec na několik částí o dané délce a oddělí je oddělovačem(implicitně mezera) explode(oddělovač, řetězec) rozdělí řetězec na několik částí podle oddělovače a vytvoří z nich pole crypt(řetězec, základ) podle dvojpísmeného základu zakóduje řetězec htmlspecialchars(řetězec) převede zvláštní znaky řetězce na entity HTML htmlentities(řetězec) stejné využití jako htmlspecialchars(), ale jinak interpretuje české znaky join(oddělovač, pole) vytvoří z pole řetězec a jednotlivé prvky oddělí oddělovačem implode(pole, oddělovač) vytvoří z pole řetězec a prvky oddělí oddělovačem ltrim(řetězec) odstraní prázdné znaky na začátku řetězce ord(řetězec) zapíše řetězec v ASCII kódu parse_str(řetězec) rozdělí řetězec dotazu na proměnné a jejich hodnoty echo(řetězec), print(řetězec) vypíše řetězec rawurlencode(řetězec) zakóduje text jako URL rawurldecode(řetězec) dekóduje zakodovaný text URL similar_text(řetězec1, řetězec2) spočítá, kolik písmen mají stejné části řetězců str_replace(hledaná část, nahradí hledanou část náhradou náhrada, řetězec) strip_tags(řetězec) odstraní z řetězce tagy HTML a PHP(to je výhodné v knize návštěv) stripslashes(řetězec) Odstraní zpětná lomítka '\' strlen(řetězec) vypočítá délku řetězce strrev(řetězec) obrátí řetězec trim(řetězec) odstraní z řetězce prázdné znaky(mezery, tabulátory) 7

14. PRÁCE S DATEM A ČASEM PŘEVEDENÍ DATA A ČASU DO PŘIROZENÉHO TVARU a vrací am nebo pm, podle toho, zda je odpoledne či dopoledne A obdoba a s tím, že výsledek vrací ve velkých písmenech g aktuální hodina bez počáteční nuly, 1 až 12 G aktuální hodina bez počáteční nuly, ale v rozšířeném tvaru - 0 až 23 h aktuální hodina s počáteční nulou, 1 až 12 H aktuální hodina s počáteční nulou a v rozšířeném tvaru - 0 až 23 i minuty ve tvaru 00 až 59 d vrací aktuální číslo dne, tzn. 01 31 j číslo dne v měsíci, bez počáteční nuly 1 až 31 l den v týdnu textově, například Friday D vrací den v týdnu symbolizovaný třípísmennou zkratkou, například Tue = Tuesday w den v týdnu numericky 0 až 6 F měsíc v textové podobě, například January m číslo měsíce, 01 až 12 M název měsíce v třípísmenné zkratce, například Jan n číslo měsíce bez počáteční nuly s počet sekund, 00 až 59 t počet dní v měsíci, 28 až 31 Y rok, prezentovaný čtyřmi číslicemi, 1999 y dvoumístný rok, 99 z pořadí dne v roce, 0 až 365 15. UŽIVATELSKÉ FUNKCE - funkce se používají především pro opakující se části kódu PŘÍKLAD <? php function jméno_funkce (parametry) { příkazy_funkce; return návratová_hodnota; } - funkce může také mít i více parametrů a v takovém případě se pouze oddělí čárkou - funkce je dobré vkládat vždy na začátek skriptu 8

16. POLE - zjednodušeně můžeme pojem pole označit za tabulkovou proměnnou - jednotlivá čísla řádků a sloupců této pomyslné tabulky se nazývají indexy pole - pole mohou být: jednorozměrná = proměnná obsahuje několik řádků a jediný sloupec s hodnotami či opačně dvourozměrná = více řádků i sloupců vícerozměrná = což již nemá v našem prostoru příměr - všechny indexy jsou číslovány od nuly - pro naplnění pole existují dva postupy: a) pomocí názvu proměnné a indexu $moje_pole[0] = leden ; $moje_pole[1] = únor ; $moje_pole[1] = březen ; b) pomocí funkce array $moje_pole = array( leden, únor, březen ); - pro vyvolání hodnoty proměnné stačí uvést její jméno s patřičným indexem: echo $moje_pole[0]; //zobrazí leden reset end current next prev key list each array_walk sort, rsort asort, arsort in_array ZÁKLADNÍ FUNKCE PRO PRÁCI S POLEM přemístění pomyslného interního ukazatele pole na jeho začátek přemístění interního ukazatele na konec proměnné typu pole přečte hodnotu pole odpovídající aktuálnímu indexu dle pozice ukazatele přesouvá ukazatel na pozici odpovídající následujícímu indexu pole a čte jeho hodnotu před čtením aktuálního indexu proměnné typu pole je ukazatel přemístěn na předchozí index tuto funkci používáme v případě, pokud si nejsme jistí pozicí ukazatele nebo ji konkrétně nepotřebujeme umožňuje přiřadit hodnoty pole do definovaných proměnných lze využít nejen pro práci s uživatelskou proměnnou typu pole, ale také například pro načtení a zpracování datových kolekcí POST, GET, SESSION, nebo COOKIE používáme, pokud chceme, aby se každý prvek našeho pole stal parametrem pro funkci, resp. Aby se funkce provedla pro každý prvek pole seřazuje hodnoty, ale nejsou zachovávány indexy jednotlivých prvků seřazuje hodnoty a zachovává indexy jednotlivých prvků Metoda pro vyhledávání hodnoty v obsažené v poli 9

17. FORMULÁŘE - základní struktura formuláře by měla vypadat následovně: PŘÍKLAD <form action= xxx method= xxx onsubmit= xxx > položky formuláře odesílající tlačítko </form> - parametr ACTION = hodnota parametru určuje, kam se mají data z formuláře předat // syntaxe: action= mailto:skala.jaroslav@email.cz - parametr METHOD = určuje, jakou metodou mají být formulářová data odeslána zpracovávacímu skriptu, existují dvě metody POST ukládá data do speciální kolekce $ _POST GET rovněž ukládá data do své speciální kolekce $ _GET, ale data jsou přenášena pomocí adresní řádky prohlížeče a jsou tudíž na očích uživateli a je možné je zaznamenat v různých log souborech - parametr ONSUBMIT = nejedná se vlastně ani o parametr, ale spíše o událost, která nastane po odeslání formuláře tlačítkem typu SUBMIT 10

18. PRVKY FORMULÁŘE - prvky formuláře se rozumí textové pole, seznam hodnot, zaškrtávací políčka, přepínače a další - TEXT = prvek formuláře používaným pro vstup řetězových nebo také numerických hodnot <input type= text name= název_položky value= počáteční_hodnota_položky size= délka_zobrazení_položky maxlength= maximální_délka_vyplněné_hodnoty > - vlastnosti: type daný typ formulářové položky, jeho hodnota je text name název formulářové položky value hodnota formulářové položky, není povinná, jedná se o předběžné vyplnění položky určitou hodnotou, která je ihned zobrazena size šířka položky při zobrazení maxlength maximální počet znaků, který je možné do položky vyplnit - SEZNAM = prvek známý též jako listbox je seznamem definovaných hodnot, z nichž je třeba vybrat minimálně jednu <select name= název_položky > <option value=hodnota_volby>název volby</option> <option value=hodnota_volby>název volby</option> <option value=hodnota_volby>název volby</option> </select> - ZAŠKRTÁVACÍ POLÍČKO = prvek známý též jako check box je předurčen pro výběr jedné nebo více hodnot z definovaného seznamu <input type= checkbox name= název_položky value=hodnota_položky checked> - PŘEPÍNACÍ TLAČÍTKA = tlačítky typu radio buttons jsou obdobou zaškrtávacích políček s tím rozdílem, že je možné vybrat pouze jedinou z nabízených hodnot <input type= radio name= název_položky value=hodnota_položky checked> - TEXTOVÉ POLE = slouží pro zadávání rozsáhlejšího textu a právě z tohoto důvodu je navrženo tak, že na rozdíl od prvku TEXT lze definovat nejenom přípustný počet sloupců ale také řádků <textarea name= název_položky rows=počet_řádků cols=počet_sloupců>předvyplněná_hodnota</textarea> 11

- TLAČÍTKA = aby formuláře mohly být plně interaktivní, jsou zapotřebí také funkční tlačítka, výbava jazyka HTML nabízí taková tlačítka hned tři: SUBMIT = tlačítko, které způsobí odesílání vyplněných dat na server BUTTON = obyčejné tlačítko, které nedělá nic, dokud neošetříme jeho stisknutí metodou onclick v JavaScriptu RESET = speciální tlačítko, které vymaže všechna data z formuláře <input type= typ_tlačítka name= název_tlačítka value= text_na_tlačítku onclick= odkaz_na_javascriptovou_funkci > 19. OVĚŘENÍ SPRÁVNOSTI ZADANÝCH HODNOT - kontroly odeslaných dat se dají provádět dvěma způsoby, avšak každé z nich nese nějaké riziko: používání kontroly pouze před odesláním dat z formuláře vystavujeme se riziku, že uživatel bude mít v nastavení bezpečnosti svého prohlížeče vypnutou podporu JavaScriptu a tím pádem se žádná kontrola neprovede používání kontroly dat pouze na straně serveru ve své podstatě se jedná o bezesporu funkční možnost, ovšem pro každého uživatele bude časem jistě nepříjemné, že při jakékoli drobné chybě se bude znovu a znovu načítat webová stránka, což je podmínkou pro odesílání dat na server - KONTROLA PŘED ODESLÁNÍM FORMULÁŘE = abychom mohli zavolat kontrolní proceduru, musíme nejprve vytvořit javascriptovou funkci, která bude vracet logický výraz a tuto funkci volat při události formuláře OnSubmit: <script language="javascript"> <--! function checkform() { var retval retval = true if (document.all["název_testované_položky"].value == "testovaná hodnota") { alert("něco je špatně!"); document.all["název_testované_položky"].focus(); retval = false; } return retval; } --> </script> 12

PŘEHLED HLÁŠENÍ PRO KONTROLU PŘED ODESLÁNÍM FORMULÁŘE FUNKCE VLASTNOSTI alert confirm prompt window.alert( Něco je špatně! ); var jonebone = window.confirm( Nebyl vyplněn požadovaný parametr! Chcete pokračovat? ); var jmeno = window.prompt( Zdravím, Jak se jmenuješ? ); zobrazení informativního hlášení slouží k tomu, aby uživatel vzal na vědomí nějakou informaci zobrazení výzvy k potvrzení používáme v případě, pokud vyžadujeme nějakou interakci zobrazení výzvy k zadání údajů použijeme v případě, zda-li jsou zapotřebí zadat nějaké doplňující údaje - KONTROLA A ZPRACOVÁNÍ HODNOT NA SERVERU = kontrola, která nastává v okamžiku odeslání dat ke zpracování na server if ($jmeno == "" $prijmeni == ""): die("<font color='red'><b>chyba: nevyplnili jste vsechny polozky formulare</b></font>"); else: echo "Zpracovani formulare probehlo v poradku..."; endif; - DIE zastavuje další vykonávání skriptu zobrazením textové informace, která je parametrem funkce - pokud je odhalena chyba ve formuláři, je dobré nabídnout místo znovu prázdného formuláře korekturu, která jde vytvořit dvěma způsoby: JavaScript [funkce back]: <a href= formular.php onclick= javascript:window.history.back(); >Zpět na formulář</a> Inicializace formulářové proměnné: <input type= text name= testtext size= 20 value= <?= $testtext > - v praxi bývá lepší odlišit zdroj dat, respektive metodu, která bývá pro odeslání dat použita, data z formuláře můžeme dostat rovněž dvěma způsoby a to metodou POST a GET: $testtext = $_GET[ testtext ]; $testtext = $_GET[ testtextarea ]; echo $testtext<p>$testarea ; nebo $testtext = $_POST[ testtext ]; $testtext = $_POST[ testtextarea ]; echo $testtext<p>$testarea ; 13

20. KVALITNÍ ZPRACOVÁNÍ FORMULÁŘOVÝCH DAT - ochrana před nebezpečnými znaky = při programování je nutné mít se na pozoru speciálně před znaky, jako jsou uvozovky či apostrofy, avšak bohatě postačí, abychom si zapamatovali, že každý příkaz SQL, respektive jeho řetězové parametry, by měly být nejprve prověřeny skrze funkci addslashes: $jmeno = addslashes($http_get_vars[ jmeno ]); $sql = select * from hraci where jmeno = $jmeno ; echo $sql; - ve výsledku nám pak vyjde jak přípustný tak i nepřípustný parametr: PŘÍKLAD URL1: http://xeon.spskladno.cz/~skalaj/reparat_2012/reparat.php?jmeno=petr VÝSLEDEK 1: select * from hraci where jmeno = petr URL2: http://xeon.spskladno.cz/~skalaj/reparat_2012/reparat.php?jmeno= petr' VÝSLEDEK 2: select * from hraci where jmeno = \ petr 21. PRÁCE SE SOUBORY - načítání skriptů do skriptu = umožňuje vytvořit jediný univerzální soubor se skriptem, který se dá načíst následně i do ostatních programů - zvláštní přípona = pokud vybíráme souboru se skriptem koncovku, je vhodné příponu přidružit k php namapováním na php.exe, php.dll, či php4isapi.dll a pro naprostou bezpečnost je vhodné ukládat tyto soubory mimo strukturu webu - příkazy REQUIRE a INCLUDE = provádí načtení obsahu v místě jeho zápisu, rozdíl mezi těmito příkazy je však ten, že require vkládaný skript vloží pouze jedinkrát, i kdybychom příkaz zařadili víckrát například do smyčky require adresář/název_souboru_pro_načtení ; include adresář/název_souboru_pro_načtení ; 14

22. ČTENÍ A ZÁPIS DO TEXTOVÝCH SOUBORŮ - fopen = funkce, která vytvoří nový soubor či edituje soubor // syntaxe: fopen (název_souboru, mode [, použít_include_path]) PARAMETRY FUNKCE FOPEN r otevře soubor pouze pro čtení a umístí ukazatel na začátek souboru r+ otevře soubor pro zápis i čtení a ukazatel přemístí na začátek souboru, soubor již musí existovat w otevře soubor pro zápis nových dat a jeho původní obsah zruší, pokud soubor daného jména doposud neexistoval funkce jej vytvoří, z toho plyne že tento parametr se používá pro vytvoření nových souborů w+ obdobně jako předchozí hodnota parametru s tím rozdílem, že soubor lze také číst a otevře soubor pro zápis nových dat a umístí ukazatel na konec souboru, tzn. Že nová data budou připojena ke starým, pokud soubor zadaného jména neexistuje bude vytvořen a+ obdoba předchozí hodnoty parametru s tím rozdílem, že soubor lze opět číst FUNKCE PRO ČTENÍ, ZÁPIS A PRÁCI S TEXTOVÝMI SOUBORY file_exists umožňuje nám zjistit existenci souboru fclose otevřený datový soubor uzavře a ukončí možnost s ním pracovat fgets funkce čte data o zadané délce a odstraňuje ze souboru html a php tagy fgetc umožňuje ze souboru přečíst jediný znak fputs, fwrite zapíše řetězec do otevřeného datového souboru readfile funkce, která čte data ze souboru a vyvolává je na obrazovku copy slouží ke kopírování zdrojového souboru jinam if (!copy($file, $file,..bak )) { print ( Soubor $file se nepovedlo zkopírovat ); } rename změní název souboru if (!file_exists( index.php ) && rename ( default.php, testindex.php )) echo Soubor byl přejmenován ; unlink smaže soubor zadaného jména z disku if (unlink( test.txt )) echo Soubor byl smazán ; filesize zjistí velikost souboru v bajtech $size = filesize( test.txt ); echo Velikost souboru:.$size; filectime zjistí čas vytvoření souboru v sekundách uplynulých od data 1. 1. 1970 $cas = filectime( test.txt ); echo Vytvořeno:.date( d.m.y, $cas); filemtime zjistí čas poslední modifikace souboru v sekundách uplynulých od stejného data jako u minulé funkce 15

23. COOKIES - pomocí cookies ukládáme malé datové soubory na disku návštěvníka webu pomocí nich můžeme zjišťovat, jak často se k nám uživatel vrací, co ho nejvíce zajímá a tyto údaje poté využít při dalším vývoji - pro práci s cookies je nám nabízena jednoduchá funkce setcookie() a speciální datová lekce HTTP_COOKIE_VARS také zkráceně _COOKIE pro jejich načtení a následné zpracování - uložení dat jako cookies = základní funkcí pro práci s cookies je setcookie, slouží právě k uložení dat ve formě cookies u uživatele, syntaxe pak vypadá takto: setcookie (string name, string value, int expire, string path, string domain, int secure) - pro zjištění existence cookie můžeme využít standartní funkci ISSET [dále také určuje, zda je proměnná stanovená] 24. NAHRÁVÁNÍ SOUBORŮ NA WEB - formulář pro upload obsahuje speciální vlastnost, známou též jako enctype a to proto, že přenášená data mají dva různé typy obsahu jeden je standartní POST a jednou se přenáší binární data - nastavení umístění uploadovaných souborů, se většinou nalézá v PHP.ini, a to na řádku upload_tmp_dir SPECIÁLNÍ PROMĚNNÉ PRO UPLOADOVÁNÍ SOUBORŮ $the_file_name původní název souboru $the_file dočasný název souboru v temp adresáři $the_file_size velikost souboru v bajtech $the_file_type mime type souboru 16

25. SPRÁVA SESSIONS - session vždy musí začínat syntaxí session_start(); a to na samém počátku celého skriptu (avšak je zde i možnost tuto podmínku nastavit v konfiguračním souboru PHP.ini) - dobré je si také zapamatovat, jaký je rozdíl mezi session a cookies, protože zpočátku se vám může zdát, že se jedná prakticky o totéž, avšak: [!] cookies slouží k trvalému uchování informace v prohlížeči svázané s danou www doménou, ovšem sessions slouží k uchování informace na straně serveru vztahující se ke konkrétnímu návštěvníkovi po dobu sezení session.auto_start session.save_path session.cookie_lifetime session.gc_probability session.gc_maxlifetime session.use_cookies KONFIGURAČNÍ PARAMETRY PRO PHP.ini nabývá hodnot 0 = vypnuto / 1 = zapnuto a určuje, zda má být objekt session inicializován automaticky při požadavku na PHP stránku udává adresář, kam se soubory cookies dotyčné session budou ukládat specifikuje délku života cookie dané session v sekundách umožňuje při každé inicializaci objektu session odstranit veškerá stará a již nepotřebná data nastaví v sekundách maximální dobu platnosti hodnot uložených v session pokud parametr nabyde hodnoty 1, povolujeme tím využití klientských cookies pro účely dané session - VYTVOŘENÍ PROMĚNNÝCH PRO SESSION = práce se session začíná, jak již bylo řečeno session_start a ukončuje se pomocí session_destroy funkcí, která zruší veškerá data uložená v aktivní session, dále pak přiřazujeme hodnoty do objektu session pomocí session_register, kde je parametrem název proměnné a následně si ověříme její existenci pomocí funkce session_is_registered a samotný výpis provedeme za pomoci $_SESSION - ZRUŠENÍ PROMĚNNÝCH PRO SESSION = pro nejvyšší bezpečnost se využívá syntaxe unset($_session[ název_proměnné ]); a následně pro zrušení dat opět funkce session_destroy - VYPRŠENÍ ČASOVÉHO LIMITU PRO GENEROVÁNÍ STRÁNKY [TIMEOUT] = hodnota TimeOutu, je defaultně stanovena na 30 sekund, avšak PHP nabízí možnost tuto hodnotu upravovat pro každý skript zvlášt za pomoci funkce set_time_limit: //syntaxe: set_time_limit(900); - stanoví limit pro vygenerování stránky na 15 minut - existuje také alternativa v podobě funkce ignore_user_abord, která říká, že v provádění skriptu má pokračovat, i když klient ukončí činnost 17

POUŽITÁ LITERATURA [1] kniha: PHP PRO ÚPLNÉ ZAČÁTEČNÍKY: 2. PŘEPRACOVANÉ A ROZŠÍŘENÉ VYDÁNÍ autor: JAKUB MACH vydavatelství: COMPUTER PRESS, a.s. -- BRNO, 2006 [2] web: url: TVORBA WEBU www.tvorba-webu.cz [1] [2] 18