Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

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.

Podobné prezentace


Prezentace na téma: "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."— Transkript prezentace:

1 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.  Funkce vrací hodnotu, jsou tedy výrazem a lze jejich výsledek přiřadit např. proměnné. Kód funkce i procedury je uvozen do složených závorek.  Název funkce i procedury není citlivý na velká a malá písmena.

2 Funkce a procedury <?php function jméno (parametr1, parametr2,...) { sekvence příkazů; return návratová hodnota; }  Funkce obsahuje klíčové slovo return. Proměnná nebo výraz uvedená za return se vrátí jako výsledná hodnota a provádění funkce končí.  Parametry lze vynechat, pokud nepotřebujeme v těle funkce či procedury zpracovávat hodnoty předané z vnějšku.

3 Funkce a procedury function soucet () // Toto je funkce vracející hodnotu { $x = 1; $x = 1; $y = 2; $y = 2; return $x + $y; return $x + $y;}------------------------------------------------------------------------------------------------ function vypis() // Toto je procedura { echo "Hello world"; echo "Hello world";}

4 Argumenty  Umožňují předat funkci nebo proceduře vstupní hodnoty. function dvojnasobek ($cislo) { return $cislo * 2; return $cislo * 2;} echo dvojnasobek(6); // volání funkce – vypíše 12  Funkce převezme hodnotu odpovídající parametru, kterou pak použije pro výpočet návratové hodnoty.

5 Argumenty předávané hodnotou  Proměnná parametru (např. $cislo) uvnitř funkce pracuje s kopií hodnoty, která je jí předána (např. $a). Změna parametru ($cislo), nezmění předanou hodnotu proměnné ($a). function dvakrat ($cislo) // argument – konstanta nebo proměnná { $cislo = $cislo * 2; return $cislo; return $cislo;} $a = 6; echo "proměnná \$a = ".$a; 6 echo " výsledek provádění funkce dvakrat() = ".dvakrat($a);12 echo “ proměnná \$a = ".$a; 6

6 Argumenty předávané hodnotou  Argumenty předávanými hodnotou mohou být: literáty (čísla, textové znaky, kombinace obojího) literáty (čísla, textové znaky, kombinace obojího) konstanty konstanty proměnné proměnné výsledky provádění jiné funkce výsledky provádění jiné funkce kombinace výše zmíněných kombinace výše zmíněných function jmeno_funkce (1) function jmeno_funkce (MAX) function jmeno_funkce ($x, $y) function jmeno_funkce (jina_funkce($a), “součet”)

7 Argumenty předávané odkazem  Proměnná parametru (např. $cislo) uvnitř funkce pracuje přímo s proměnnou, která je jí předána (např. $a). Změna parametru ($cislo), změní předanou hodnotu proměnné ($a). function dvakrat (&$cislo) // argument MUSÍ být proměnná!!! { $cislo = $cislo * 2; $cislo = $cislo * 2; return $cislo; return $cislo;} $a = 6; echo "proměnná \$a = ".$a; 6 echo " výsledek provádění funkce dvakrat() = ".dvakrat($a);12 echo “ proměnná \$a = ".$a;12

8 Platnost proměnné  Proměnné deklarované uvnitř funkce, nejsou platné vně funkce!!!! function zmena_A() { $a = 10; $a = 10;} $a = 20; zmena_A(); echo $a; // vypíše 20 Proměnné $a nejsou totožné!!! Proměnná $a uvnitř funkce neovlivní hodnotu proměnné použité v hlavním skriptu.

9 Příkazy „require“ a „include“  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 opakovaně.  Umožň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živatelem funkce definované uživatelemPrakticky: Vkládání uživatelských funkcí do více stránek Vklá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ách Vytvář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 …

10 Příkaz „require“ // ----- vypis.php -------------------------- <?php echo "Toto je voláno z vypis.php "; echo "Toto je voláno z vypis.php ";?> // ----- skript.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í require vyvolá fatální chybu.

11 Příkaz „include“ // ----- vypis.php -------------------------- <?php echo "Toto je voláno z vypis.php "; echo "Toto je voláno z vypis.php ";?> // ----- skript.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í include vyvolá varování, skript pokračuje dál.

12 Globální proměnné Globální proměnné – jejich hodnota je platná (viditelná) ve všech částech aktuálního skriptu (stránky), ve kterém je definovaná. “Superglobální” proměnné – jejich hodnotu lze přenášet mezi stránkami webového sídla. 1. Globální proměnné v rámci stránky – $GLOBALS 2. Zpracování dat z formuláře – metody odeslání dat GET a POST 3. Sdílení obsahu proměnné mezi stránkami – SESSION a COOKIE 4. Proměnné, které vytváří prostředí PHP a webový server

13 Globální proměnná $GLOBALS  Jedná se o globální proměnnou, která je viditelná ve všech částech skriptu (aktuální stránky), ve kterém je definovaná. ------------------------------------------------------------------------------------------------- $GLOBALS["cislo"] = 2; function zmen() { $GLOBALS["cislo"] = $GLOBALS["cislo"] + 10; $GLOBALS["cislo"] = $GLOBALS["cislo"] + 10;}zmen(); echo $GLOBALS["cislo"]; // vypíše číslo 12

14 Metoda GET  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 navigaci v rámci stránky. ------------------------------------------------------------------------------------------------- Zadejte Vaše jméno: Zadejte Vaše jméno: Jméno: Jméno: Příjmení: Příjmení: </form>

15 Metoda GET  Obsah skriptu vypis.php ------------------------------------------------------------------------------------------------- ”; ”; echo “Vaše příjmení: ”.$_GET[‘prijmeni']; ?> -------------------------------------------------------------------------------- http://www.vasestranky.cz/vypis.php?jmeno=Antonin&prijmen i=Skopec&tlacitko=Vypsat

16 Metoda GET  http://www.vasestranky.cz/obsluha.php?prom1=hodn1&prom2=hodn2 ------------------------------------------------------------------------------------------------- ? – odděluje URL stránky od přenášených dat proměnná = hodnota – název proměnné a její hodnota & – Oddělení jednotlivých proměnných + – nahrazuje mezeru ------------------------------------------------------------------------------------------------- Všechny ostatní speciální znaky a písmena s háčkem nebo čárkou jsou překódovány do hexadecimální podoby.

17 Metoda GET  Chcete-li přenášet v rámci URL adresy login a heslo, je dobré tyto hodnoty zakódovat pomocí funkcí definovaných v PHP: Pro zakódování dat v URL se používá funkce base64_encode – zakóduje data pomocí MIME base64 base64_decode – dekóduje data kódovaná pomocí MIME base64 Pro přenášení hesel a jejich ukládání do databáze se doporučuje používat např. funkci sha1, nemající zpětný ekvivalent !!! Popis těchto funkcí – viz. manuál k PHP

18 Metoda POST Data se neposílají 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. ------------------------------------------------------------------------------------------------- Zadejte Vaše jméno: Zadejte Vaše jméno: Jméno: Jméno: Příjmení: Příjmení: </form>

19 Metoda POST Obsah skriptu vypis.php ------------------------------------------------------------------------------------------------- ”; ”; echo “Vaše příjmení: ”.$_POST[‘prijmeni']; ?> --------------------------------------------------------------------------------

20 Metoda POST  Odesílají-li se z formuláře metodou POST kromě textu také soubory (např. obrázky), je potřeba v definici formuláře nastavit atribut: enctype = “multipart/form-data” Atribut enctype udává způsob zakódování odesílaných dat.

21 Úkol  Vytvořte jednoducho kalkulačku využijte funkce eval(): eval ("\$vysledek =5 + 5;")

22 Řešení Zadej první číslo, operaci a druhé číslo + - * / $a= $_POST["A"]; $b= $_POST["B"]; $operace= $_POST["operace"]; eval("\$vysledek = $a $operace $b ;"); echo "$a $operace $b = "; echo $vysledek;

23 Řešení 2 $a= $_POST["A"]; $b= $_POST["B"]; $operace= $_POST["operace"]; if (empty($a) &&empty($b)&&empty($operace) ) { echo" Nic nebylo zadáno "; } else { eval("\$vysledek = $a $operace $b ;"); echo "$a $operace $b = "; echo $vysledek; } Zadej první číslo, oparaci a druhé číslo + - * / Lépe s kontrolou zadání

24 Úkol  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čka –Pokud se přihlásíte jako Pepa (heslo Pepa), spustí se příklad formuláře $name = $_POST ['name'];// $HTTP_POST_VARS $password = $_POST [' password']; if($name=="pepa"&&$password="pepa"){ header("Location: knihyv1.php");}  Header: přesměrování stránky  Funkci header použít dříve, než vypíšeme jakýkoli výstup!!

25 Řešení  Musí být ve dvou souborech! <?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()

26 COOKIES  Jedná se o jednoduché textové řetězce ve formátu jméno=hodnota uložené na počítači klienta.  Cookies umožňují sdílet hodnoty mezi jednotlivými stránkami webového sídla.  Pozor!!! Pokud má internetový prohlížeč vypnutou podporu cookies, nelze s nimi pracovat, neboť je prohlížeč v případě požadavku neodesílá webovému serveru.  Mylný je názor, že cookies mohou poškodit počítač nebo odesílat citlivá data z počítače klienta!!!  Cookie proměnná je použitelná do doby, dokud nevyprší její platnost nebo dokud není smazána z disku počítače klienta.

27 Ukládání COOKIES  V PHP je pro ukládání cookies funkce: setcookie(“nazev”, “hodnota”, expire, “path”, secure); setcookie(“nazev_cookie”, “hodnota”);  jelikož cookies se posílají v hlavičce odpovědi webovému serveru, je potřeba funkci setcookie() volat před jakýmkoliv výstupem z vašeho skriptu včetně značek a ! setcookie(“nazev_cookie”, “hodnota”, time()+3600);  Třetí parametr je nepovinný a definuje dobu platnosti cookie, zde je nastavena doba platnost na 1 hodinu  time()+3600

28 Čtení COOKIES  Pro čtení cookie se v PHP používá “superglobální” proměnné:  $_COOKIE [“nazev_cookie”] -------------------------------------------------------------------------------------------------<?php $zakaznik = “Jan Pavel”; $zakaznik = “Jan Pavel”; setcookie(“jmeno”, $zakaznik, time()+3600); setcookie(“jmeno”, $zakaznik, time()+3600); echo “Vaše jméno je ”.$_COOKIE[“jmeno”]; echo “Vaše jméno je ”.$_COOKIE[“jmeno”];?> Pozn.: 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 neukládá.

29 výpis pole  Pro výpis obsahu pole print_r($_COOKIE) -------------------------------------------------------------------------------------------------<?php $a = array ('a' => 'jablko', 'b' => 'ananas', 'c' => array ('x', 'y', 'z')); print_r ($a); ?>  Array ( [a] => jablko [b] => ananas [c] => Array ( [0] => x [1] => y [2] => z ) )

30 Mazání COOKIES  Při mazání cookie se musí zajistit, aby doba vypršení platnosti cookie byla v minulosti, čímž se v prohlížeči zapne mechanismus odstranění cookie. setcookie (“nazev_cookie", "", time() - 3600);  Pokud je přítomný pouze argument nazev, u klienta se smaže cookie tohoto jména. -------------------------------------------------------------------------------------------------  Kterýkoliv argument můžete také nahradit prázdným řetězcem (""), čímž tento argument přeskočíte. Argumenty expire a secure jsou celočíselné a nedají se přeskočit prázdným řetězcem. Místo toho použijte nulu (0).

31 COOKIES  Nevýhody použití cookies: 1.Použití cookies lze zakázat v prohlížeči 2.Uživatel může obsah cookie ručně změnit nebo smazat 3.Informace uložené v cookies jsou snadno čitelné (textový řetězec)

32 SESSION proměnné  Umožňují přenášet hodnoty mezi jednotlivými stránkami webového sídla.  Nelze je uživatelem zakázat v prohlížeči – spolehlivé sdílení hodnot !  Pokud chceme na stránce využívat session proměnné, zavoláme funkci session_start(). Poté bude prohlížeči přidělen unikátní identifikátor, tzv. Session ID. Pomocí tohoto Session ID se přenáší session proměnné mezi skripty. Vytvoření session proměnné: od PHP 5.4.0 nelze: session_register("název_proměnné") od PHP 5.4.0 nelze: session_register("název_proměnné") $_SESSION[“název_proměnné”]  Doporučuji používat ! $_SESSION[“název_proměnné”]  Doporučuji používat !

33 SESSION proměnné  Přehled vybraných funkcí pro práci se session proměnnými: session_start() - vytvoří session (ID). session_id() - zjistí aktuální session ID. session_regenerate_id() - změní aktuální session ID. unset ($_SESSION['varname']) - odstraní všechny session proměnnou. session_destroy() - odstraní aktuální session.

34 SESSION proměnné  Data spojená s probíhající session jsou umístěna většinou v souboru na serveru.  Příklad obsahu souboru reprezentující sessions: id|i:1;cas|i:1096972373;stranek|i:8;  O veškerou režii spojenou s tímto souborem se stará PHP.  Session je platná: 1. Dokud ji nezrušíme pomocí funkcí pro práci se sessions 2. Dokud se nezavře okno prohlížeče

35 Proměnné web serveru a PHP  Jedná se o proměnné vytvářené webovým serverem: $_SERVER[‘nazev_promenne’]  a proměnné vytvářené prostředím PHP: $_ENV[‘nazev_promenne’]  Obsah těchto proměnných lze vypsat např. pomocí funkce phpinfo().  Proměnné a jejich obsah (hodnoty) lze ve skriptech běžně používat. Přehled těchto proměnných naleznete např. v manuálu PHP: www.php.net

36 Výpis obsahu souboru <?php $soubor_jmeno = "files/dopis.txt"; 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: echo " Žádná data k vypsání "; echo " Žádná data k vypsání ";endif;?>

37 Zápis do souboru <?php $soubor_jmeno = "files/dopis2.txt"; $soubor = fopen($soubor_jmeno, "w"); fwrite($soubor, "Sem se píše obsah"); fclose($soubor); ?>


Stáhnout ppt "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."

Podobné prezentace


Reklamy Google