PHP v praxi - 2. díl autor: Jan Veselý rubrika: HTML pro pokročilé (11.06. 2001) ![]()
Dnes se podíváme na jednoduché zaheslování souboru s důvěrnými daty. Toto řešení není dokonalé, ale pro běžné potřeby, např. chcete známým sdělit místo setkání, je toto řešení zcela dostatečné. Představa je taková, že při první návštěvě stránky se nejprve zobrazí jednoduchý formulář požadující heslo. Po jeho zadání se načte stránka s dotyčnou informací. Kvůli bezpečnosti by vše mělo být obsaženo v jediné stránce, pokud povede odkaz někam mimo, cílový soubor zůstane pochopitelně nezaheslovaný. Proto třeba pro fotky je toto řešení nevhodné (tady by bylo nutné pojmenovat obrázek třeba 24sfddf5f.jpg a na zaheslovanou stránku dát odkaz). Nyní se rovnou podívejte na zdrojový text příkladu. Pro někoho, kdo nikdy neviděl php, bude hodně složitý, ale postupně shledáte, že nezvládnutelné to rozhodně není. soubor sraz.php: <html> <head><title>Kdy a kde se tedy sejdeme.</title></head> <body> <? if ($heslo=='ledoborec'){ echo 'sejdeme se ve čtvrtek v kavárně'; } else { ?> <form action="sraz.php" method="get"> Heslo:<br> <input type="password" name="heslo"><br> <input type="submit" value="odeslat"> </form> <? } ?> </body> </html> Krása php spočívá také v tom, že lze velmi jednoduše kombinovat prvky skriptovacího jazyka a html. Pro server je tímto znamením právě značka "<?" na začátku a "?>" na konci php příkazu, dál může pokračovat opět klasické html a poté zase vstup do php. Nyní rozebereme text po částech. Html tagy snad komentář nepotřebují, vrhněme se rovně na php. Hlavní konstrukcí je v našem případě podmínka "if ()". Protože předpokládám pouze minimální znalosti v programování, podíváme se na ni podrobněji. V tom úplně nejzákladnějším tvaru vypadá takto: if (podmínka) proveď příkaz if ($prijem > $vydaj) echo 'firma je zisková'; V tomto jednoduchém příkladu porovnáváme dva údaje, když je podmínka splněna (tedy příjmy převýšily výdaje), na obrazovku se vypíše text mezi uvozovkami. Pokud ovšem chceme použít příkazů více, musíme je uzavřít do složených závorek: if ($prijem > $vydaj) { echo 'firma je zisková'; echo 'ale neradujme se předčasně'; } Ale tímto způsobem získáme výsledek pouze tehdy, je-li hodnota v závorce za "if" pravdivá, tzn. jestliže příjmy přesáhly výdaje. V případě rovnosti či opačné nerovnosti nezískáme vůbec žádný výsledek, php bude tyto řádky ignorovat. Abychom získali nějakou reakci i v takovýchto případech, využijeme doplňující výrazy "else" (jinak) nebo "elseif" (jinak když). if ($prijem > $vydaj) { echo 'firma je zisková'; } elseif ($prijem == $vydaj) { echo 'vyrovnaný výsledek'; } else { echo 'firma je prodělečná'; } Jak vidíte, v případě, že příjmy nejsou větší než výdaje, php přeskočí příkaz "echo" s textem o zisku, postupuje dál a narazí na "elseif", což je kombinace jinak a když (to je ale překvapení). V závorce je opět podmínka - zde je to kontrola rovnosti (pozn: dvě rovnítka nejsou překlep). A na závěr je zde "else", tedy v případě nepravdivosti všech předchozích podmínek se provede příkaz obsažený ve složených závorkách. Vraťme se tedy k našemu srazu, vybereme si nyní jen to důležité: if ($heslo=='ledoborec'){ echo 'sejdeme se ve čtvrtek v kavárně'; } else { // tady je jinak formulář } Už vám je jistě jasné, co se zde děje - když proměnná heslo je rovna textu "ledoborec", pak se zobrazí důvěrná informace. Když ne, na stránce se objeví formulář. K funkci "if ()" myslím už není co dodat, pokud přesto máte nějaké dotazy, napište je do diskusního fóra. Velmi důležitou složkou php jsou proměnné. V manuálu je to vlastně první věc, na kterou narazíte, ale pro běžného tvůrce stránek zbytečně složitě popsaná. Jejím hlavním efektem bývá většinou zastrašení potenciálních php programátorů. Syntaxe proměnné je velmi jednoduchá - začíná dolárkem, po kterém musí následovat písmeno ("$a" je proměnná ale "$4a" nebo "$_a" už nemá smysl). Proměnnou si představte třeba jako zástupce obsahu. Uvedu příklad: $jmeno='honza'; S proměnnými se dá dělat spousta kouzel, ale to teď nechme stranou. Podstatné bylo pochopit, o co vlastně jde. Zdůraznil bych zde problém s rovnítky, v textu jsem na to upozornil - jedno rovnítko znamená přiřazení, teprve dvě rovnost. Kdybychom napsali "if ($heslo='ledoborec')", nedočkáme se ničeho kromě přiřazení textového řetězce "ledoborec" proměnné "$heslo". Teď je na místě otázka, kde tedy máme dotyčnou proměnnou, kterou chceme porovnávat s textem "ledoborec". Proměnná vznikne automaticky při odeslání dat (resp. jejich přijmutí) z formuláře. V url adrese se objeví "http://neco/sraz.php?heslo=ledoborec". PHP zpracovává všechno za otazníkem jako proměnné, tzn. vytvoří proměnnou "$heslo" a přiřadí jí text "ledoborec". "if ()" tedy vyhodnotí podmínku jako pravdivou a dotyčný už bude vědět, kde se s námi setká. |