Praktika z aplikačního software - HTML a PHP

(MFF UK - UAS006, UAS009)

Praktika se konají formou samostatné práce a konzultací, uskuteční se k nim dvě nepovinné přednášky a cvičení (2x90 + 2x90 minut). Přednášky proběhnou v rámci předmětu Internet.

HTML

Zápočet bude udělen za složitější dílo obsahující několik provázaných stránek s využitím stylů, obrázků, tabulek, formátování textu, případně rámů, ... Vyžadována je také znalost jazyka (je možné použít editor, ale je nutné vědět, co a proč generuje).

Přehled nejčastějších chyb:

  1. Obrázky by měly mít definované rozměry, aby stránka při jejich načítání neposkakovala.
  2. Obrázky s obsahem by měly mít nastaven atribut alt.
  3. Na stránce s definicí rámů by měl být ve značce <noframes> odkaz na obsah, stejně tak uvnitř značky <iframe> by měl být odkaz na soubor v rámu.
  4. Když je definován obrázek na pozadí, měla by být definovaná i barva pozadí, aby byl text před načtením obrázku čitelný a aby to nepůsobilo rušivě.
  5. Když je definována barva pozadí, měly by být definované i barvy textu a odkazů, ne každý má nastaven černý text na bílém pozadí s modrými odkazy.
  6. Hodnoty atributů by měly být uzavřeny do uvozovek nebo apostrofů, obzvláště pokud jsou nealfanumerické.
  7. Kolem rovnítek u atributů značek by neměly být mezery.
  8. Znaky &, < a > se píšou jako HTML-entity &amp;, &lt; a &gt; (se středníkem na konci).
  9. Stránky by měly fungovat i s vypnutým JavaScriptem - lze používat konstrukce jako <a href="obrazek.jpg" target="obrazek" onclick="return !window.open(this.href, 'obrazek', '');">Obrázek</a> (return false způsobí, že obsluha události nebude pokračovat).
  10. Je vhodné vyhnout se podtrženému písmu, protože se používá pro odkazy a svádí to ke klikání.
  11. Obrázky vyměňované po najetí myši by měly být nahrané pomocí JavaScriptu předem, aby se nezačaly stahovat až když se na ně najede.
  12. Jednotlivé stránky by měly mít nastavený smysluplný titulek. Pomáhá vyhledávačům, zobrazuje se v historii, při tisku a v oblíbených položkách.
  13. Stránka by neměla být uzavřená do tabulky, jednotlivé objekty je lepší rozmístit pomocí stylů. Jednak tabulky slouží k jinému účelu a jednak prohlížeče zobrazují takové stránky až po jejich kompletním stažení, stránky neuzavřené do tabulek se zobrazují už běžem načítání.

PHP

Zápočet bude udělen za webovou aplikaci využívající databázi s alespoň dvěma provázanými tabulkami. Aplikace by měla umožňovat záznamy z těchto tabulek vypisovat, přidávat, upravovat a mazat. Práci můžete odevzdat ve tvaru zdrojových textů a exportu struktury databáze.

Přehled nejčastějších chyb:

  1. Připojení k databázi by mělo být centrálně a do všech souborů jenom includnuté, aby se v případě potřeby dalo snadno změnit. Více o problému
  2. U INSERT INTO se vyplatí používat delší syntaxi INSERT INTO (sloupce) VALUES (hodnoty), protože jednak z toho je na první pohled patrné, co se stane, a jednak to nepřestane fungovat při přidání sloupce do tabulky. Více o problému
  3. Heslo je lepší do databáze ukládat zahashované - jednak to zvýší bezpečnost a jednak to je slušnější k uživatelům. Např. funkce sha1 vrací vždy 40 znaků a md5 32 znaků. Více o problému
  4. Všechny hodnoty přicházející zvenku by měly být považované za nedůvěryhodné, a proto by měly být nějak ošetřené. Pokud je zapnutá PHP direktiva magic_quotes_gpc, tak stačí všechny hodnoty vkládané do databáze obalit apostrofy (v MySQL funguje i pro čísla). Více o problému
  5. Ve víceuživatelském prostředí, kterým web je, se nedá spoléhat na atomicitu operace SELECT+UPDATE. Když je posloupnost operací uživatelů A a B např. A SELECT, B SELECT, A UPDATE, B UPDATE, tak vše projde bez jakékoliv chyby, výsledek je přitom špatně. Dá se to řešit pomocí transakcí, zamykáním tabulek nebo v případě pouhého ověření existence záznamu vyhovujícího podmínce (např. uživatel se stejným loginem) definicí unikátních indexů. Více o problému
  6. Formulář pro editaci a přidávání záznamů by měl být jen jeden s tím, že pomocí parametru se rozliší, zda jde o editaci záznamu nebo jeho přidání. Dva formuláře přidělávají práci při jejich vytváření a zhoršují spravovatelnost. Více o problému
zpět na nadřazenou stránku