Ještě jednou se vrátíme k práci se soubory ve dvou jednoduchých ukázkách s tím, že na internetu můžete najít řadu dalších příkladů a ukázek bez použití databází, které byste mohli vyzkoušet.
Návštěvní knihy mohou být různě složité, na ty složitější použijeme opět spíše databázi, můžete se ale setkat i s jednoduchými návštěvními knihami, do kterých se v podstatě jen připisují vzkazy. S následující ukázkou jednoduché návštěvní knihy jste se nejspíš také už setkali (viz obrázek). Zdroj scriptu obsahuje některé nové drobnosti pro základní ochranu před nekorektními příspěvky. Zkuste si představit, co by se stalo, kdyby nějaký studovanější uživatel do příspěvku zapsal zdroj v php nebo html, mohl by snadno "rozbořit" vaši stránku. Proto je použita funkce HTMLSpecialChars, která převede speciální html znaky na znakové entity například < na < a podobně. Další nové funkce a fungování scriptu jsou snad dostatečně okomentované, příkazy pro práci se soubory bychom měli znát z minulých lekcí. Také pevně doufám, že víte, co je ještě potřeba, aby tato návštěvní kniha vypadala například jako ta na obrázku :-) . <?php if (!empty($_POST)) { $jmeno = $_POST['jmeno']; $zprava = $_POST['zprava']; $jmeno=HTMLSpecialChars($jmeno); //převede některé znaky na entity $zprava=HTMLSpecialChars($zprava); $jmeno=stripslashes($jmeno); //odstraní lomítka $zprava=stripslashes($zprava); $zprava = str_replace("\n"," <br> ", $zprava); //nové řádky nahradí <br> $zprava = substr($zprava, 0, 10000);//zpráva bude mít maximálně 10000 znaků pomocí substr if ($zprava!="" and $jmeno!=""){ //provede se pokud není prázdná zpráva a jméno $celek="<strong>$jmeno</strong>:<br>$zprava<hr>"; $soubor = fopen ('data.inc','a'); //otevře soubor pro doplňování fwrite ($soubor, $celek); //zapíše zprávu fclose ($soubor); //zavře soubor }} ?> <h2>Zprávy autorovi</h2> <?php include "data.inc"; ?> <h2>Přidání zprávy</h2> <form action="" method="post"> Jméno: </br><input type="text" name="jmeno" maxlength="25"> Zpráva: </br><textarea cols="15" rows="5" name="zprava"></textarea> <center><input type="submit" value="odeslat"> </form>
Testy jsme tvořili už v jedné z prvních lekcí. V této lekci použijeme univerzálnější script, který zpracuje testy uložené v souborech stejným způsobem.
Pro přehlednost jsem tentokrát rozdělil test do dvou souborů, v prvním načteme zadání z textového souboru a ve druhém scriptu vyhodnotíme odpovědi. Podobně jako v minulé lekci u ankety oddělíme v textovém souboru otázky, odpovědi a písmeno správné odpovědi například znakem # :
Které slovo nejlépe vystihuje opak slova „dobrodružný“?#
klidný#
nezajímavý#
všední#
ostýchavý#
nevýbojný#a#
Které spojení slov vystihuje nejlépe význam úsloví „labutí píseň“:#
poslední umělecké dílo#
nejlepší umělecký počin#
skladba o ptácích#
elegantní chůze#
něžná píseň#a#
Z takto připraveného souboru test.txt načteme otázky a odpovědi do pole $test, které potom pomocí cyklu for vypisujeme do zdroje stránky (do formuláře). Všimněte si, jak je vytvořený název příslušných proměnných pro odpovědi (v parametru name).
<form action="test_hodn.php" method="post">
<?php
if (File_Exists ("test.txt")):
$fp = FOpen ("test.txt", "r");
$test = Explode ("#", FRead ($fp, filesize("test.txt"))); FClose ($fp); //"nasekání" souboru test.txt do pole
else:
echo"soubor s testem neexistuje";
endif;
for ($i=0;$i
Přidej například na index jednoduchou návštěvní knihu podle textu lekce. Pozor, pouhé zkopírování stačit nebude, zamysli se malinko, proč jsou po spuštění hlášené chyby a jak je co nejsnadněji odstranit. Prémiové body můžeš získat za stylovou úpravu (například podle obrázku v lekci).
Vytvoř on-line test s deseti otázkami podle textu lekce. Pro testy použitelné na školní stránku se můžeš na zadání domluvit s vyučujícím.
Najdi na internetu další ukázku využití PHP (zdroj scriptu) bez databází, uprav ji pro PHP5 a dostatečně okomentuj (především doposud neprobírané příkazy). Nezapomeň uvést zdroj.
Název školy: | Základní škola, Hradec Králové, M. Horákové 258 |
Název projektu: | EU peníze školám |
Číslo projektu: | CZ.1.07/1.4.00/21.2575 |
Téma: | Programování v PHP |
Název: | VY_32_INOVACE_13_10A_PHP13 |
Autor: | Pavel Petr |