Jaroslav SKÁLA poznámky k přípravě na reparát
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ů: <?php ……… ?> 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: <?php 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: <?php $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: <?php 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 = $x + 1; $x = $x - 1; $x = $x * 10; $x = $x / 2; $x .= “ahoj“; $x += 1; $x -= 1; $x *= 10; $x /= 2; 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 + * / % ++ -- 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: <?php 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: <?php 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Í A && B AND podmínka A i podmínka B musí obě platit najednou A || B OR 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 %b %c %d %u %f %o %s %x %X MOŽNÉ ZPŮSOBY FORMÁTOVÁNÍ parametr bude zpracován jako integer a zobrazen ve dvojkové soustavě parametr bude zpracován jako integer a zobrazen jako písmeno na základě kódu ASCII parametr bude zpracován jako integer a zobrazen jako celé číslo v desítkové soustavě parametr bude zpracován jako integer a zobrazen jako celé číslo v desítkové soustavě bez znaménka mínus parametr bude zpracován jako integer a zobrazen jako double, čili včetně desetinných míst parametr bude zpracován jako integer a zobrazen v osmičkové soustavě parametr bude zpracován jako integer a zobrazen jako klasický řetězec parametr bude zpracován jako integer a zobrazen v šestnáctkové soustavě 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); printf(“%d“, 1,123456); printf(“%d %f“, 1,123456, 1,123456); printf(“%d“, “1,123456ABC“); printf(“%.2f“, 1,123456); printf(“%010.2f“, 1,123456); printf(“%0-10.2f“, 1,123456); printf(“Výsledek je: %0-10.2f“, 1,123456); printf(“Výsledek je: %‘x-10.2f“, 1,123456); 1,123456 1 1 1,123456 123456 1,23 0000000001,23 1,23000000000 Výsledek je: 1,23000000000 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 ZÁKLADNÍ PŘEHLED ŘETĚZCŮ length funkce zjišťuje aktuální velikost řetězce, což provede přetypováním nultého znaku na číslo copy funkce vybere z řetězce část od stanovené pozice pos funkce vrátí číslo, které odpovídá pozici řetězce, kde se vyskytuje zadaný podřetězec insert 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 delete procedura, která od pozice Odkud odstraní část řetězce o délce KolikZnaku, výsledná hodnota je uložena v proměnné Retezec str 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() chop() chr(ASCII) chunk_split(řetězec, délka, oddělovač) explode(oddělovač, řetězec) crypt(řetězec, základ) htmlspecialchars(řetězec) htmlentities(řetězec) join(oddělovač, pole) implode(pole, oddělovač) ltrim(řetězec) ord(řetězec) parse_str(řetězec) echo(řetězec), print(řetězec) rawurlencode(řetězec) rawurldecode(řetězec) similar_text(řetězec1, řetězec2) str_replace(hledaná část, náhrada, řetězec) strip_tags(řetězec) stripslashes(řetězec) strlen(řetězec) strrev(řetězec) trim(řetězec) přidá do řetězce zpětná lomítka před znaky typu("). odstraní mezery na konci řetězce zapíše řetězec podle ASCII rozdělí řetězec na několik částí o dané délce a oddělí je oddělovačem(implicitně mezera) rozdělí řetězec na několik částí podle oddělovače a vytvoří z nich pole podle dvojpísmeného základu zakóduje řetězec převede zvláštní znaky řetězce na entity HTML stejné využití jako htmlspecialchars(), ale jinak interpretuje české znaky vytvoří z pole řetězec a jednotlivé prvky oddělí oddělovačem vytvoří z pole řetězec a prvky oddělí oddělovačem odstraní prázdné znaky na začátku řetězce zapíše řetězec v ASCII kódu rozdělí řetězec dotazu na proměnné a jejich hodnoty vypíše řetězec zakóduje text jako URL dekóduje zakodovaný text URL spočítá, kolik písmen mají stejné části řetězců nahradí hledanou část náhradou odstraní z řetězce tagy HTML a PHP(to je výhodné v knize návštěv) Odstraní zpětná lomítka '\' vypočítá délku řetězce obrátí ř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 ZÁKLADNÍ FUNKCE PRO PRÁCI S POLEM reset přemístění pomyslného interního ukazatele pole na jeho začátek end přemístění interního ukazatele na konec proměnné typu pole current přečte hodnotu pole odpovídající aktuálnímu indexu dle pozice ukazatele next přesouvá ukazatel na pozici odpovídající následujícímu indexu pole a čte jeho hodnotu prev před čtením aktuálního indexu proměnné typu pole je ukazatel přemístěn na předchozí index key tuto funkci používáme v případě, pokud si nejsme jistí pozicí ukazatele nebo ji konkrétně nepotřebujeme list umožňuje přiřadit hodnoty pole do definovaných proměnných each 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 array_walk 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 sort, rsort seřazuje hodnoty, ale nejsou zachovávány indexy jednotlivých prvků asort, seřazuje hodnoty a zachovává indexy jednotlivých prvků arsort in_array 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:[email protected]“ - 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 SYNTAXE <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 name value daný typ formulářové položky, jeho hodnota je “text“ název formulářové položky 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 SYNTAXE <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 SYNTAXE <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 SYNTAXE <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ů SYNTAXE <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 SYNTAXE <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: SYNTAXE <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 SYNTAXE alert window.alert(“Něco je špatně!“); confirm var jonebone = window.confirm(“Nebyl vyplněn požadovaný parametr! Chcete pokračovat?“); VLASTNOSTI 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 prompt 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 var jmeno = window.prompt(“Zdravím“, “Jak se jmenuješ?“); SYNTAXE <?php 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: SYNTAXE <?php $testtext = $_GET[“testtext“]; $testtext = $_GET[“testtextarea“]; echo “$testtext<p>$testarea“; ?> nebo <?php $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: SYNTAXE <?php $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 SYNTAXE <?php 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 fclose fgets fgetc fputs, fwrite readfile copy umožňuje nám zjistit existenci souboru otevřený datový soubor uzavře a ukončí možnost s ním pracovat funkce čte data o zadané délce a odstraňuje ze souboru html a php tagy umožňuje ze souboru přečíst jediný znak zapíše řetězec do otevřeného datového souboru funkce, která čte data ze souboru a vyvolává je na obrazovku slouží ke kopírování zdrojového souboru jinam <?php if (!copy($file, $file,.‘.bak‘)) { print (“Soubor $file se nepovedlo zkopírovat“); } ?> rename změní název souboru <?php 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 <?php if (unlink(“test.txt“)) echo “Soubor byl smazán“; ?> filesize zjistí velikost souboru v bajtech <?php $size = filesize(“test.txt“); echo “Velikost souboru: “.$size; ?> filectime zjistí čas vytvoření souboru v sekundách uplynulých od data 1. 1. 1970 <?php $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 $the_file $the_file_size $the_file_type původní název souboru dočasný název souboru v temp adresáři velikost souboru v bajtech mime type souboru 16 25. SPRÁVA SESSIONS - session vždy musí začínat syntaxí <?php 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 <?php 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: <?php 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: autor: vydavatelství: PHP PRO ÚPLNÉ ZAČÁTEČNÍKY: 2. PŘEPRACOVANÉ A ROZŠÍŘENÉ VYDÁNÍ JAKUB MACH COMPUTER PRESS, a.s. -- BRNO, 2006 [2] web: url: TVORBA WEBU www.tvorba-webu.cz [1] [2] 18
Podobné dokumenty
1 Základy programování v PHP
Příkaz switch se používá, pokud testujeme jednu proměnnou s více možnými hodnotami.
Více
1. test z PJC Jméno studenta: Pocet bodu
(a) O(m.n) řádu součinu délky řetězce a podřetězce
(b) O(m) řádu délky řetězce
(c) O(n) řádu délky podřetězce
(d) O(log m) řádu logaritmu délky řetězce
---------------------------------------------...
referát
vypisování. Zpravidla se volí druhá varianta (ale i tak musíme částečně ošetřit vstup před
ukládáním, aby se zabránilo útokům typu SQL injection apod.) Útočník může pozměnit URL, data
posílaná pomo...
Prezentace aplikace PowerPoint - Dokumenty Google – práce s
hierarchizace procesní struktury, která je dána mírou abstrakce. Abstrakci
uplatňujeme z důvodu důkladného porozumění modelované situace.
Dle použitého typu upřednostňované abstrakce lze modelovací...
Perl Perl - RegNet.cz
− \Q – zaeskejpuje speciální znaky, až po \E
chomp – odstraní „\n “ z konce řetězce
chop – odstraní poslední znak z řetězce
eval – provede zadaný kód
index str, substr [, offset ] – vrátí první poz...
(Ne)podpora Unicode v PHP
Text tedy bude uložen jako posloupnost bajtů 00 E1 00 20 20 14. Jenže ve skutečnosti to
není tak jednoduché. Historicky existují dva způsoby ukládání 16bitových hodnot do paměti počítače. Jedné se ...