37
Funkce a procedury Funkce a procedury Funkce a procedury mají za úkol Funkce a procedury mají za úkol vykonávat určitou činnost, která se vykonávat určitou činnost, která se opakuje na několika místech skriptu. Obě opakuje na několika místech skriptu. Obě se definují klíčovým slovem se definují klíčovým slovem function function . . Funkce vrací hodnotu Funkce vrací hodnotu , jsou tedy výrazem , jsou tedy výrazem a lze jejich výsledek přiřadit např. a lze jejich výsledek přiřadit např. proměnné. Kód funkce i procedury je proměnné. Kód funkce i procedury je uvozen do složených závorek. uvozen do složených závorek. Název funkce i procedury Název funkce i procedury není citlivý na není citlivý na velká a malá písmena. velká a malá písmena.

Funkce a procedury

  • Upload
    star

  • View
    46

  • Download
    0

Embed Size (px)

DESCRIPTION

Funkce a procedury. Funkce a procedury mají za úkol vykonávat určitou činnost, která se opakuje na několika místech skriptu. Obě se definují klíčovým slovem function . - PowerPoint PPT Presentation

Citation preview

Page 1: Funkce a procedury

Funkce a proceduryFunkce a procedury

Funkce a procedury mají za úkol vykonávat Funkce a procedury mají za úkol vykonávat určitou činnost, která se opakuje na několika určitou činnost, která se opakuje na několika místech skriptu. Obě se definují klíčovým místech skriptu. Obě se definují klíčovým slovem slovem functionfunction. .

Funkce vrací hodnotuFunkce vrací hodnotu, jsou tedy výrazem a , jsou tedy výrazem a lze jejich výsledek přiřadit např. proměnné. lze jejich výsledek přiřadit např. proměnné. Kód funkce i procedury je uvozen do Kód funkce i procedury je uvozen do složených závorek.složených závorek.

Název funkce i proceduryNázev funkce i procedury není citlivý na není citlivý na velká a malá písmena.velká a malá písmena.

Page 2: Funkce a procedury

Funkce a proceduryFunkce a procedury

<?php<?php

functionfunction jménojméno ( (parametr1parametr1, , parametr2parametr2, ...), ...)

{{

    sekvence příkazůsekvence příkazů;;

    returnreturn návratová hodnotanávratová hodnota;;

}}

Funkce obsahuje klíčové slovo Funkce obsahuje klíčové slovo returnreturn. Proměnná nebo výraz . Proměnná nebo výraz uvedená uvedená za returnza return se vrátí jako výsledná hodnota a provádění se vrátí jako výsledná hodnota a provádění funkce končí.funkce končí.Parametry Parametry lze vynechatlze vynechat, pokud nepotřebujeme v těle funkce či , pokud nepotřebujeme v těle funkce či procedury zpracovávat hodnoty předané z vnějšku.procedury zpracovávat hodnoty předané z vnějšku.

Page 3: Funkce a procedury

Funkce a proceduryFunkce a procedury

function function soucet () soucet () // Toto je funkce vracející hodnotu// Toto je funkce vracející hodnotu

{{

$x = 1;$x = 1;

$y = 2;$y = 2;

returnreturn $x $x + + $y;$y;

}}

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function function vypis() vypis() // Toto je procedura // Toto je procedura

{ {

echo "Hello world"; echo "Hello world";

}}

Page 4: Funkce a procedury

ArgumentyArgumenty

Umožňují předat funkci nebo proceduře vstupní hodnoty.Umožňují předat funkci nebo proceduře vstupní hodnoty.

function function dvojnasobekdvojnasobek ( ($cislo$cislo) )

{{

return $cislo * 2;return $cislo * 2;

}}

echo echo dvojnasobekdvojnasobek((66); ); // volání funkce – vypíše 12// volání funkce – vypíše 12

Funkce převezme hodnotu odpovídající parametru, kterou pak Funkce převezme hodnotu odpovídající parametru, kterou pak použije pro výpočet návratové hodnoty.použije pro výpočet návratové hodnoty.

Page 5: Funkce a procedury

Argumenty předávané Argumenty předávané hodnotouhodnotou

Proměnná parametru (např. Proměnná parametru (např. $$cislocislo) uvnitř funkce pracuje s kopií hodnoty, ) uvnitř funkce pracuje s kopií hodnoty, která je jí předána (např. která je jí předána (např. $a$a)).. Změna parametru ( Změna parametru ($$cislocislo), ), nezměnínezmění předanou předanou hodnotu proměnné (hodnotu proměnné ($$aa))..

function function ddvakrat (vakrat ($cislo$cislo) ) // argument – konstanta nebo proměnná// argument – konstanta nebo proměnná

{{

$$cislocislo = $cislo * 2; = $cislo * 2;

return $cislo;return $cislo;

}}

$$aa = 6; = 6;

echo "proměnná \$a = ".echo "proměnná \$a = ".$a$a;; 66

echo "<br>výsledek provádění funkce dvakrat() = ".echo "<br>výsledek provádění funkce dvakrat() = ".dvakrat($a)dvakrat($a);; 1212

echo “echo “<br><br>proměnná \$a = ".proměnná \$a = ".$a$a;; 66

Page 6: Funkce a procedury

Argumenty předávané Argumenty předávané hodnotouhodnotou

Argumenty předávanými hodnotou mohou být:Argumenty předávanými hodnotou mohou být: literátyliteráty (čísla, textové znaky, kombinace obojího)(čísla, textové znaky, kombinace obojího)

konstantykonstanty

proměnnéproměnné

výsledky provádění jiné funkcevýsledky provádění jiné funkce

kombinace výše zmíněnýchkombinace výše zmíněných

function jmeno_funkce (function jmeno_funkce (11))

function jmeno_funkce (function jmeno_funkce (MAXMAX))

function jmeno_funkce (function jmeno_funkce ($x, $y$x, $y))

function jmeno_funkce (function jmeno_funkce (jinajina_funkce(_funkce($a$a)), “, “součetsoučet””))

Page 7: Funkce a procedury

Argumenty předávané Argumenty předávané odkazemodkazem

Proměnná parametru (např. Proměnná parametru (např. $$cislocislo) uvnitř funkce pracuje přímo s ) uvnitř funkce pracuje přímo s proměnnou, která je jí předána (např. proměnnou, která je jí předána (např. $a$a)).. Změna parametru ( Změna parametru ($$cislocislo), ), změnízmění předanou hodnotu proměnné ( předanou hodnotu proměnné ($$aa))..

function function dvdvakrat (akrat (&&$cislo$cislo)) // argument // argument MUSÍMUSÍ být proměnná!!! být proměnná!!!

{{

$cislo = $cislo * 2;$cislo = $cislo * 2;

return $cislo;return $cislo;

}}

$$a a = 6;= 6;

echo "proměnná \$a = ".echo "proměnná \$a = ".$a$a;; 66

echo "<br>výsledek provádění funkce dvakrat() = ".echo "<br>výsledek provádění funkce dvakrat() = ".dvakrat($a)dvakrat($a);; 1212

echo “echo “<br><br>proměnná \$a = ".proměnná \$a = ".$a$a;; 1212

Page 8: Funkce a procedury

Platnost proměnnéPlatnost proměnné Proměnné deklarované uvnitř funkce, nejsou platné vně funkce!!!!Proměnné deklarované uvnitř funkce, nejsou platné vně funkce!!!!

function zmena_A()function zmena_A()

{{

$a $a = 10= 10;;

}}

$a $a = 20;= 20;

zmena_A();zmena_A();

echo echo $a$a; ; // vypíše 20// vypíše 20

Proměnné Proměnné $$aa nejsou totožnénejsou totožné!!! Proměnná !!! Proměnná $a $a uvnitř funkce neovlivní uvnitř funkce neovlivní hodnotu proměnné použité v hlavním skriptu.hodnotu proměnné použité v hlavním skriptu.

Page 9: Funkce a procedury

Příkazy „require“ a „include“Příkazy „require“ a „include“ Liší se ve zpracování chyb, ale hlavně v tom, že require se například v Liší se ve zpracování chyb, ale hlavně v tom, že require se například v

příkazech cyklu provede jen jednou, zatímco include se může provádět příkazech cyklu provede jen jednou, zatímco include se může provádět opakovaně.opakovaně.

UUmožňují načítat do skriptu z externího souboru:možňují načítat do skriptu z externího souboru:

části jiných skriptůčásti jiných skriptů

části stránekčásti stránek

funkce definované uživatelemfunkce definované uživatelem

Prakticky:Prakticky:

Vkládání uživatelských funkcí do více stránekVkládání uživatelských funkcí do více stránek

Vytvářet a uzavírat spojení s databází na více stránkáchVytvářet a uzavírat spojení s databází na více stránkách

Vytvořit standardní hlavičku stránek … atd …Vytvořit standardní hlavičku stránek … atd …

Page 10: Funkce a procedury

Příkaz „require“Příkaz „require“

// ----- vypis.php --------------------------// ----- vypis.php --------------------------

<?php <?php

echo "Toto je voláno z vypis.php<br>";echo "Toto je voláno z vypis.php<br>";

?>?>

// ----- skript.php -------------------------// ----- skript.php -------------------------

<?php <?php

require("vypis.php");require("vypis.php");

echo "Další běh skriptu";echo "Další běh skriptu";

?>?>

Chybějící soubor ve volání Chybějící soubor ve volání requirerequire vyvolá vyvolá fatální chybufatální chybu..

Page 11: Funkce a procedury

Příkaz „include“Příkaz „include“

// ----- vypis.php --------------------------// ----- vypis.php --------------------------

<?php <?php

echo "Toto je voláno z vypis.php<br>";echo "Toto je voláno z vypis.php<br>";

?>?>

// ----- skript.php -------------------------// ----- skript.php -------------------------

<?php <?php

include("vypis.php");include("vypis.php");

echo "Další běh skriptu";echo "Další běh skriptu";

?>?>

Chybějící soubor ve volání Chybějící soubor ve volání includeinclude vyvolá vyvolá varovánívarování, skript pokračuje dál., skript pokračuje dál.

Page 12: Funkce a procedury

Globální proměnnéGlobální proměnné

Globální proměnnéGlobální proměnné – jejich hodnota je platná (viditelná) ve všech částech – jejich hodnota je platná (viditelná) ve všech částech

aktuálního skriptu (stránky), ve kterém je definovaná.aktuálního skriptu (stránky), ve kterém je definovaná.

““SuperglobálníSuperglobální”” proměnné proměnné – jejich hodnotu lze přenášet mezi stránkami – jejich hodnotu lze přenášet mezi stránkami

webového sídla.webového sídla.

1. Globální proměnné v rámci stránky – 1. Globální proměnné v rámci stránky – $GLOBALS$GLOBALS

2. Zpracování dat z formuláře – metody odeslání dat 2. Zpracování dat z formuláře – metody odeslání dat GETGET a a POSTPOST

3. Sdílení obsahu proměnné mezi stránkami – 3. Sdílení obsahu proměnné mezi stránkami – SESSIONSESSION a a COOKIECOOKIE

4. Proměnné, které vytváří prostředí PHP a webový server4. Proměnné, které vytváří prostředí PHP a webový server

Page 13: Funkce a procedury

Globální proměnná Globální proměnná $$GLOBALSGLOBALS

Jedná se o globální proměnnou, která je viditelná ve všech částech Jedná se o globální proměnnou, která je viditelná ve všech částech skriptu (aktuální stránky), ve kterém je definovaná.skriptu (aktuální stránky), ve kterém je definovaná.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

$GLOBALS["cislo"]$GLOBALS["cislo"] = 2; = 2;

function zmen()function zmen()

{{

$GLOBALS["cislo"] $GLOBALS["cislo"] = = $GLOBALS["cislo"] $GLOBALS["cislo"] + 10;+ 10;

}}

zmen();zmen();

echo echo $GLOBALS["cislo"]$GLOBALS["cislo"]; ; // vypíše číslo 12// vypíše číslo 12

Page 14: Funkce a procedury

Metoda GETMetoda GET

Data jsou předána obsluhujícímu skriptu pomocí URL adresy. Data jsou předána obsluhujícímu skriptu pomocí URL adresy. Lze využít jak u zpracování dat z formuláře, tak např. při Lze využít jak u zpracování dat z formuláře, tak např. při navigaci v rámci stránky.navigaci v rámci stránky.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Zadejte Vaše jméno: <br><br>Zadejte Vaše jméno: <br><br>

<form action=<form action=““vypis.phpvypis.php" method=“" method=“GETGET">">

Jméno: <input Jméno: <input name=“name=“jmenojmeno" " type="text"><br>type="text"><br>

Příjmení: <input Příjmení: <input name=“name=“prijmeniprijmeni" " type="text">type="text">

<input <input name=“name=“tlacitkotlacitko" " type="submit" value=“type="submit" value=“VVypsat">ypsat">

</form></form>

Page 15: Funkce a procedury

Metoda GETMetoda GET

Obsah skriptu Obsah skriptu vypisvypis.php.php

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<?php<?php echo echo ““Vaše jméno: Vaše jméno: ”.”.$_GET[$_GET[‘‘jmeno']jmeno']..”<br>”;”<br>”;

echoecho ““Vaše příjmení: Vaše příjmení: ”.”.$_GET[$_GET[‘‘prijmeni']prijmeni'];; ?>?>

----------------------------------------------------------------------------------------------------------------------------------------------------------------

http://www.vasestranky.cz/http://www.vasestranky.cz/vypisvypis.php.php??

jmenojmeno==AntoninAntonin&&prijmeniprijmeni==SkopecSkopec&&tlacitkotlacitko==VypsatVypsat

Page 16: Funkce a procedury

Metoda GETMetoda GET http://www.vasestranky.cz/obsluha.phphttp://www.vasestranky.cz/obsluha.php??

prom1=hodn1prom1=hodn1&&prom2=hodn2prom2=hodn2

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?? – odděluje URL stránky od přenášených dat – odděluje URL stránky od přenášených dat

proměnná = hodnotaproměnná = hodnota – název proměnné a její hodnota – název proměnné a její hodnota

&& – Oddělení jednotlivých proměnných– Oddělení jednotlivých proměnných

++ – nahrazuje mezeru – nahrazuje mezeru

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Všechny ostatní speciální znaky a písmena s háčkem nebo čárkou jsou Všechny ostatní speciální znaky a písmena s háčkem nebo čárkou jsou

překódovány do hexadecimální podoby.překódovány do hexadecimální podoby.

Page 17: Funkce a procedury

Metoda GETMetoda GET Chcete-li přenášet v rámci URL adresy Chcete-li přenášet v rámci URL adresy loginlogin a a hesloheslo, je dobré tyto , je dobré tyto

hodnoty zakódovat pomocí funkcí definovaných v PHP:hodnoty zakódovat pomocí funkcí definovaných v PHP:

Pro zakódování dat v URL se používá funkcePro zakódování dat v URL se používá funkce

base64_encodebase64_encode – zakóduje data pomocí MIME base64– zakóduje data pomocí MIME base64

base64_decodebase64_decode – dekóduje data kódovaná pomocí MIME base64– dekóduje data kódovaná pomocí MIME base64

Pro přenášení Pro přenášení heselhesel a jejich ukládání do databáze se doporučuje a jejich ukládání do databáze se doporučuje

používat např. funkcipoužívat např. funkci sha1sha1, , nemající zpětný ekvivalentnemající zpětný ekvivalent !!! !!!

Popis těchto funkcíPopis těchto funkcí – viz. manuál k PHP – viz. manuál k PHP

Page 18: Funkce a procedury

Metoda POSTMetoda POST

Data se Data se neposílajíneposílají v URL stránky, ale jsou součástí těla požadavku webovému v URL stránky, ale jsou součástí těla požadavku webovému

serveru. Slouží k odesílání většího objemu dat, obrázků, atd.serveru. Slouží k odesílání většího objemu dat, obrázků, atd.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Zadejte Vaše jméno: <br><br>Zadejte Vaše jméno: <br><br>

<form action=<form action=““vypis.phpvypis.php" method=“" method=“POSTPOST">">

Jméno: <input Jméno: <input name=“name=“jmenojmeno" " type="text"><br>type="text"><br>

Příjmení: <input Příjmení: <input name=“name=“prijmeniprijmeni" " type="text">type="text">

<input name=“<input name=“tlacitkotlacitko" type="submit" value=“" type="submit" value=“VVypsat">ypsat">

</form></form>

Page 19: Funkce a procedury

Metoda POSTMetoda POST

Obsah skriptu Obsah skriptu vypisvypis.php.php

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<?php<?php echo echo ““Vaše jméno: Vaše jméno: ”.”.$_POST[$_POST[‘‘jmeno']jmeno']..”<br>”;”<br>”;

echoecho ““Vaše příjmení: Vaše příjmení: ”.”.$_POST[$_POST[‘‘prijmeni']prijmeni'];; ?>?>

----------------------------------------------------------------------------------------------------------------------------------------------------------------

Page 20: Funkce a procedury

Metoda POSTMetoda POST

Odesílají-li se z formuláře metodou POST kromě textu také Odesílají-li se z formuláře metodou POST kromě textu také soubory (např. obrázky), je potřeba v definici formuláře soubory (např. obrázky), je potřeba v definici formuláře nastavit atribut:nastavit atribut:

enctypeenctype = = ““multipart/form-datamultipart/form-data””

<form action=<form action=““vypis.phpvypis.php" method=“" method=“POSTPOST" "

enctype=enctype=““multipart/form-datamultipart/form-data">">

AAtribut tribut enctypeenctype udává způsob zakódování odesílaných dat udává způsob zakódování odesílaných dat. .

Page 21: Funkce a procedury

ÚkolÚkol

Vytvořte jednoducho kalkulačkuVytvořte jednoducho kalkulačkuvyužijte funkce využijte funkce eval()eval(): : evaleval ( ("\$"\$vysledekvysledek = =5 + 5 +

55;";"))

Page 22: Funkce a procedury

ŘešeníŘešení

<form method="POST"><b>Zadej první číslo, operaci a druhé číslo</b> <br> <br><input type="text" size="20" name=A><select size="4" name=operace> <option>+</option> <option>-</option> <option>*</option> <option>/</option></select> <input type="text" size="20" name=B> <input type="submit" value="OK"></form>

$a= $_POST["A"];$b= $_POST["B"];$operace= $_POST["operace"];

eval("\$vysledek = $a $operace $b ;");echo "$a $operace $b = ";echo $vysledek;

Page 23: Funkce a procedury

Řešení 2Řešení 2

$a= $_POST["A"];$b= $_POST["B"];$operace= $_POST["operace"];

if (empty($a) &&empty($b)&&empty($operace) ) {echo"<font color=\"#FF0000\">Nic nebylo zadáno</font>";} else { eval("\$vysledek = $a $operace $b ;"); echo "$a $operace $b = "; echo $vysledek;}

<form method="POST"><b>Zadej první číslo, oparaci a druhé číslo</b> <br> <br><input type="text" size="20" name=A><select size="4" name=operace> <option>+</option> <option>-</option> <option>*</option> <option>/</option></select> <input type="text" size="20" name=B> <input type="submit" value="OK"></form>

Lépe s kontrolou zadání

Page 24: Funkce a procedury

ÚkolÚkol

Vytvořte přihlašovací obrazovku, po přihlášení: Vytvořte přihlašovací obrazovku, po přihlášení: – Pokud se přihlásíte jako Alena (heslo Alena), spustí se příklad kalkulačkaPokud se přihlásíte jako Alena (heslo Alena), spustí se příklad kalkulačka– Pokud se přihlásíte jako Pepa (heslo Pepa), spustí se příklad formulářePokud se přihlásíte jako Pepa (heslo Pepa), spustí se příklad formuláře

$name = $_POST ['name'];// $HTTP_POST_VARS$name = $_POST ['name'];// $HTTP_POST_VARS$password = $_POST [' password'];$password = $_POST [' password'];

if($name=="pepa"&&$password="pepa"){if($name=="pepa"&&$password="pepa"){header("Location: knihyv1.php");}header("Location: knihyv1.php");}

Header: přesměrování stránky Header: přesměrování stránky Funkci header Funkci header poupoužít dříve, než vypíšeme jakýkoli žít dříve, než vypíšeme jakýkoli

výstup!!výstup!!

Page 25: Funkce a procedury

ŘešeníŘešení Musí být ve dvou souborech!Musí být ve dvou souborech!

<HTML>

<BODY><form method="POST" action="5heslo_run.php"><input type="text" size="20"name=name><input type="text" size="20" name=password><input type="submit" value="OK"></form>

</BODY></HTML>

<?php$name = $_POST['name'];$password = $_POST['password'];

if($name=="pepa"&&$password="pepa") {header("Location:formulare.php");}

if($name=="alena"&&$password="alena") {header("Location:kalkulacka.php");} echo "Sorry" ;?>

Lepší řešení použít fci md5() nebo sha1()

Page 26: Funkce a procedury

COOKIESCOOKIES

Jedná se o jednoduché textové řetězce ve formátu Jedná se o jednoduché textové řetězce ve formátu jméno=hodnota jméno=hodnota uložené na počítači klienta.uložené na počítači klienta.

Cookies umožňují sdílet hodnoty mezi jednotlivými stránkami Cookies umožňují sdílet hodnoty mezi jednotlivými stránkami webového sídla. webového sídla.

Pozor!!!Pozor!!! Pokud má internetový prohlížeč vypnutou podporu Pokud má internetový prohlížeč vypnutou podporu cookies, nelze s nimi pracovat, neboť je prohlížeč v případě cookies, nelze s nimi pracovat, neboť je prohlížeč v případě požadavku neodesílá webovému serveru. požadavku neodesílá webovému serveru.

Mylný je názorMylný je názor, že cookies mohou poškodit počítač nebo , že cookies mohou poškodit počítač nebo odesílat citlivá data z počítače klienta!!!odesílat citlivá data z počítače klienta!!!

Cookie proměnná je použitelná do doby, dokud nevyprší její Cookie proměnná je použitelná do doby, dokud nevyprší její platnost nebo dokud není smazána z disku počítače klienta.platnost nebo dokud není smazána z disku počítače klienta.

Page 27: Funkce a procedury

Ukládání Ukládání COOKIESCOOKIES

V PHP je pro ukládání cookies funkce: V PHP je pro ukládání cookies funkce:

setcookie(setcookie(““nazevnazev””,, ““hodnotahodnota””,, expireexpire,, ““pathpath””,, securesecure););

setcookie(setcookie(““nazev_cookienazev_cookie””, , “hodnota”“hodnota”);); jelikož cookies se posílají v hlavičce odpovědi webovému jelikož cookies se posílají v hlavičce odpovědi webovému

serveru, je potřeba funkci serveru, je potřeba funkci setcookie() setcookie() volat před jakýmkoliv volat před jakýmkoliv výstupem z vašeho skriptu včetně značek <html> a <head> !výstupem z vašeho skriptu včetně značek <html> a <head> !

setcookie(setcookie(““nazev_cookienazev_cookie””, , “hodnota”“hodnota”, time(), time()+3600);+3600);

Třetí parametr je nepovinný a definuje dobu platnosti cookie, Třetí parametr je nepovinný a definuje dobu platnosti cookie, zde je nastavena doba platnost na zde je nastavena doba platnost na 1 hodinu1 hodinu time()time()+3600+3600

Page 28: Funkce a procedury

Čtení Čtení COOKIECOOKIESS Pro čtení cookie se v PHP používá Pro čtení cookie se v PHP používá ““superglobálnísuperglobální”” proměnné: proměnné:

$$_COOKIE_COOKIE [“nazev [“nazev_cookie_cookie”]”]

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<?php<?php

$$zakaznikzakaznik = “Jan Pavel” = “Jan Pavel”;;

setcookiesetcookie((““jmenojmeno”, $”, $zakaznik, zakaznik, time()+3600time()+3600););

echo “echo “Vaše jméno je Vaše jméno je ””..$$_COOKIE_COOKIE[“[“jmenojmeno”]”];;

?> ?>

Pozn.:Pozn.: Cookies bez udané doby platnosti jsou zapomenuty po Cookies bez udané doby platnosti jsou zapomenuty po

ukončení práce s prohlížečem a většina prohlížečů je vůbec na disk ukončení práce s prohlížečem a většina prohlížečů je vůbec na disk

neukládá.neukládá.

Page 29: Funkce a procedury

výpis polevýpis pole

Pro výpis obsahu pole Pro výpis obsahu pole print_r(print_r($$_COOKIE)_COOKIE)

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<?php<?php

$a = array ('a' => 'jablko', 'b' => 'ananas', 'c' => array ('x', 'y', 'z'));$a = array ('a' => 'jablko', 'b' => 'ananas', 'c' => array ('x', 'y', 'z'));

print_r ($a);print_r ($a);

?> ?> Array ( Array (

[a] => jablko [a] => jablko

[b] => ananas [b] => ananas

[c] => Array [c] => Array

( (

[0] => x [0] => x

[1] => y [1] => y

[2] => z [2] => z

))

))

Page 30: Funkce a procedury

MaMazání zání COOKIECOOKIESS

Při mazání cookie se musí zajistit, aby doba vypršení platnosti Při mazání cookie se musí zajistit, aby doba vypršení platnosti cookie byla v minulosti, čímž se v prohlížeči zapne cookie byla v minulosti, čímž se v prohlížeči zapne mechanismus odstranění cookie.mechanismus odstranění cookie.

setcookie (“setcookie (“nazev_cookienazev_cookie", "", time() - 3600);", "", time() - 3600); Pokud je přítomný pouze argument Pokud je přítomný pouze argument nazevnazev, u klienta se smaže , u klienta se smaže

cookie tohoto jména. cookie tohoto jména.

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Kterýkoliv argument můžete také nahradit prázdným Kterýkoliv argument můžete také nahradit prázdným řetězcem (""), čímž tento argument přeskočíte. Argumenty řetězcem (""), čímž tento argument přeskočíte. Argumenty expireexpire a a securesecure jsou celočíselné a nedají se přeskočit jsou celočíselné a nedají se přeskočit prázdným řetězcem. Místo toho použijte nulu (0).prázdným řetězcem. Místo toho použijte nulu (0).

Page 31: Funkce a procedury

COOKIESCOOKIES

Nevýhody použití cookies:Nevýhody použití cookies:

1.1. Použití cookies lze zakázat v prohlížečiPoužití cookies lze zakázat v prohlížeči

2.2. Uživatel může obsah cookie ručně změnit nebo Uživatel může obsah cookie ručně změnit nebo

smazatsmazat

3.3. Informace uložené v cookies jsou snadno čitelné Informace uložené v cookies jsou snadno čitelné

(textový řetězec)(textový řetězec)

Page 32: Funkce a procedury

SESSION proměnnéSESSION proměnné Umožňují přenášet hodnoty mezi jednotlivými stránkami Umožňují přenášet hodnoty mezi jednotlivými stránkami

webového sídla.webového sídla. Nelze je uživatelem zakázat v prohlížeči – Nelze je uživatelem zakázat v prohlížeči – spolehlivé sdílení spolehlivé sdílení

hodnothodnot ! ! Pokud chceme na stránce využívat session proměnné, zavoláme Pokud chceme na stránce využívat session proměnné, zavoláme

funkci funkci session_start().session_start(). Poté bude prohlížeči přidělen unikátní Poté bude prohlížeči přidělen unikátní identifikátor, tzv. identifikátor, tzv. Session IDSession ID. Pomocí tohoto Session ID se . Pomocí tohoto Session ID se přenáší session proměnné mezi skripty.přenáší session proměnné mezi skripty.

Vytvoření session proměnnéVytvoření session proměnné::

od PHP 5.4.0 nelze: od PHP 5.4.0 nelze: session_register("název_proměnné")session_register("název_proměnné")

$$_SESSION_SESSION[“[“název_proměnnénázev_proměnné”]”] Doporučuji Doporučuji

používat !používat !

Page 33: Funkce a procedury

SESSION proměnnéSESSION proměnné

Přehled vybraných funkcí pro práci se session proměnnými:Přehled vybraných funkcí pro práci se session proměnnými:session_start()session_start() - vytvoří session (ID). - vytvoří session (ID). session_id()session_id() - zjistí aktuální session ID. - zjistí aktuální session ID.session_regenerate_id()session_regenerate_id() - změní aktuální session ID. - změní aktuální session ID.

unset ($_SESSION['varname'])unset ($_SESSION['varname']) - odstraní všechny session - odstraní všechny session proměnnou.proměnnou.session_destroy()session_destroy() - odstraní aktuální session. - odstraní aktuální session.

Page 34: Funkce a procedury

SESSION proměnnéSESSION proměnné

Data spojená s probíhající session jsou umístěna většinou v Data spojená s probíhající session jsou umístěna většinou v souboru na serveru.souboru na serveru.

Příklad obsahu souboru reprezentující sessions:Příklad obsahu souboru reprezentující sessions:

id|i:1;cas|i:1096972373;stranek|i:8;id|i:1;cas|i:1096972373;stranek|i:8; O veškerou režii spojenou s tímto souborem se stará PHP.O veškerou režii spojenou s tímto souborem se stará PHP. Session je platná:Session je platná:

1. Dokud ji nezrušíme pomocí funkcí pro práci se sessions1. Dokud ji nezrušíme pomocí funkcí pro práci se sessions

2. Dokud se nezavře okno prohlížeče2. Dokud se nezavře okno prohlížeče

Page 35: Funkce a procedury

Proměnné web serveru a PHPProměnné web serveru a PHP

Jedná se o proměnné vytvářené webovým serverem:Jedná se o proměnné vytvářené webovým serverem:

$$_SERVER_SERVER[‘na[‘nazev_promennezev_promenne’]’] a proměnné vytvářené prostředím PHP:a proměnné vytvářené prostředím PHP:

$$_ENV_ENV[‘nazev[‘nazev_promenne_promenne’]’] Obsah těchto proměnných lze vypsat např. pomocí funkce Obsah těchto proměnných lze vypsat např. pomocí funkce

phpinfo()phpinfo(). . Proměnné a jejich obsah (hodnoty) lze ve skriptech běžně Proměnné a jejich obsah (hodnoty) lze ve skriptech běžně

používat.používat.

Přehled těchto proměnných naleznete např. v manuálu PHP: Přehled těchto proměnných naleznete např. v manuálu PHP:

www.php.netwww.php.net

Page 36: Funkce a procedury

Výpis obsahu souboruVýpis obsahu souboru

<?php<?php

$soubor_jmeno = "files/dopis.txt";$soubor_jmeno = "files/dopis.txt";

if (file_exists($soubor_jmeno) && filesize($soubor_jmeno) > 0):if (file_exists($soubor_jmeno) && filesize($soubor_jmeno) > 0):

$soubor = fopen($soubor_jmeno, "r");$soubor = fopen($soubor_jmeno, "r");

$text = fread($soubor, filesize($soubor_jmeno));$text = fread($soubor, filesize($soubor_jmeno));

echo $text;echo $text;

fclose($soubor);fclose($soubor);

else:else:

echo "<p>Žádná data k vypsání<p><hr />";echo "<p>Žádná data k vypsání<p><hr />";

endif;endif;

?>?>

Page 37: Funkce a procedury

Zápis do souboruZápis do souboru

<?php<?php

$soubor_jmeno = "files/dopis$soubor_jmeno = "files/dopis22.txt";.txt";

$soubor = fopen($soubor_jmeno, "w"); $soubor = fopen($soubor_jmeno, "w"); fwrite($soubor, "Sem se píše obsah"); fwrite($soubor, "Sem se píše obsah"); fclose($soubor);fclose($soubor);?>?>