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

Transkript

Jaroslav SKÁLA poznámky k přípravě na reparát
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

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

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 ---------------------------------------------...

Více

referát

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...

Více

Značky HTML

Značky HTML • Jméno: • E-mail: • Zpráva: • Stránky se mi: • Lí...

Více

Prezentace aplikace PowerPoint - Dokumenty Google – práce s

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í...

Více

Perl Perl - RegNet.cz

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...

Více

(Ne)podpora Unicode v PHP

(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 ...

Více