1 / 37

Funkce a procedury

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 .

star
Download Presentation

Funkce a procedury

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 <?phpfunctionjméno (parametr1, parametr2, ...){sekvence příkazů;returnná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 functionsoucet () // Toto je funkce vracející hodnotu { $x = 1; $y = 2; return $x + $y; } ------------------------------------------------------------------------------------------------ functionvypis() // Toto je procedura { echo "Hello world"; }

  4. Argumenty • Umožňují předat funkci nebo proceduře vstupní hodnoty. function dvojnasobek ($cislo) { 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; } $a = 6; echo "proměnná \$a = ".$a;6 echo "<br>výsledek provádění funkce dvakrat() = ".dvakrat($a); 12 echo “<br>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) • konstanty • proměnné • výsledky provádění jiné funkce • kombinace výše zmíněných functionjmeno_funkce (1) functionjmeno_funkce (MAX) functionjmeno_funkce ($x, $y) functionjmeno_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; return $cislo; } $a = 6; echo "proměnná \$a = ".$a;6 echo "<br>výsledek provádění funkce dvakrat() = ".dvakrat($a); 12 echo “<br>proměnná \$a = ".$a;12

  8. Platnost proměnné • Proměnné deklarované uvnitř funkce, nejsou platné vně funkce!!!! functionzmena_A() { $a = 10; } $a = 20; zmena_A(); echo $a; // vypíše 20 Proměnné $anejsou 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 stránek • funkce definované uživatelem Prakticky: • 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 • Vytvořit standardní hlavičku stránek … atd …

  10. Příkaz „require“ // ----- vypis.php -------------------------- <?php echo "Toto je voláno z vypis.php<br>"; ?> // ----- skript.php ------------------------- <?php require("vypis.php"); 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<br>"; ?> // ----- skript.php ------------------------- <?php include("vypis.php"); 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; functionzmen() { $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: <br><br> <formaction=“vypis.php" method=“GET"> Jméno: <input name=“jmeno" type="text"><br> Příjmení: <input name=“prijmeni" type="text"> <input name=“tlacitko" type="submit" value=“Vypsat"> </form>

  15. Metoda GET • Obsah skriptu vypis.php ------------------------------------------------------------------------------------------------- <?php echo“Vaše jméno: ”.$_GET[‘jmeno'].”<br>”; echo“Vaše příjmení: ”.$_GET[‘prijmeni'];?> -------------------------------------------------------------------------------- http://www.vasestranky.cz/vypis.php?jmeno=Antonin&prijmeni=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ř. funkcisha1, 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: <br><br> <formaction=“vypis.php" method=“POST"> Jméno: <input name=“jmeno" type="text"><br> Příjmení: <input name=“prijmeni" type="text"> <input name=“tlacitko" type="submit" value=“Vypsat"> </form>

  19. Metoda POST Obsah skriptu vypis.php ------------------------------------------------------------------------------------------------- <?php echo“Vaše jméno: ”.$_POST[‘jmeno'].”<br>”; 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” <formaction=“vypis.php" method=“POST" 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í <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;

  23. Řešení 2 <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í $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; }

  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 headerpoužít dříve, než vypíšeme jakýkoli výstup!!

  25. Řešení • 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> Lepší řešení použít fci md5() nebo sha1() <?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" ; ?>

  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 <html> a <head> ! 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”; setcookie(“jmeno”, $zakaznik, time()+3600); 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: • Použití cookies lze zakázat v prohlížeči • Uživatel může obsah cookie ručně změnit nebo smazat • 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é") • $_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"); $text = fread($soubor, filesize($soubor_jmeno)); echo $text; fclose($soubor); else: echo "<p>Žádná data k vypsání<p><hr />"; endif; ?>

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

More Related