Cvičení na vytvoření formuláře a zpracování a ošetření dat z něj

Formulářové pole

E-mail:

Heslo (2×):

Věk:

Souhlasím s podmínkami služby

Zadání a poznámky

Vytvoř dva soubory: jeden s formulářem (jak má vypadat právě vidíš), druhý pro zpracování dat z něj (to si vyplněním formuláře vyzkoušej).
Předmětem hodnocení budou funkční PHP skripty. Samotný formulář hodnotit nebudu. Pokud se divíte proč, pak jste něco na hodině nepochopili.
Možná se vám pro ladění bude hodit funkce var_dump().
Zvažte metodu odesílání: s GET se snáze ladí, POST je zase bezpečnější (heslo v URL). Volbu nechám na vás.
Kromě toho, co jsme se již učili, určite ve skriptech upotřebíte některé z rozhodovacích funkcí (if, else, elseif, case, switch) + operátory (<, >, == atp.), logické operace (&&, || a !) a také ověřovací funkce pro kontrolu dat. Vše najdete na známém webu https://www.w3schools.com/.

Pamatujte, že pouhým čtením manuálů se programovat nenaučíte.

Nutné podmínky, které musíte PHP skriptem otestovat nebo ošetřit:

  1. Pole E-mail musí obsahovat platný tvar emailové adresy. Pokud splňuje, vypíše se. V opačném případě se vypíše text "Chyba zadání, opravte!"
  2. Heslo musí mít délku min. 8 znaků a pochopitelně se musí shodovat (hashovat je nemusíte, ale můžete). Pokud splňuje, vypíše se. V opačném případě se vypíše text "Chyba zadání, opravte!"
  3. Pole Věk musí obsahovat číslo, příčemž uživateli musí být 13 a více let. Pokud splňuje, vypíše se. V opačném případě se vypíše text "Chyba zadání, opravte!"
  4. Uživatel musí souhlasit s podmínkami služby. Pokud splňuje, vypíše se text "ANO". V opačném případě se vypíše text "Chyba zadání, opravte!"
  5. Všechna čtyři textová pole budou navíc ošetřena proti XSS útoku.

Náměty na vylepšení

Pokud vás to chytne, a budete chtít skript vylepšit, můžete. Napadá mě hezčí výpis dat, např. tabulkově || bude-li věk pod 13, dopočítat kolik let zbývá || hesla nejprve zahashovat || budou-li všechna pole správně, uložit je do souboru a poté jej vypsat - co řádek to jeden účet || doplnit časové razítko registrace atd. atd.


Aby to bylo zajímavější, jsou ve skriptu schované dva Easter eggs. Najdete je?


Rubber duck debugging