Vytvoření návštěvní knihy v PHP s návazností na MySQL databází vyžaduje v první řadě připojení na server s touto databází. Než toto připojení vytvoříte, je třeba v dané databázi také tabulku pro návštěvní knihu vytvořit. Např. přes rozhraní Adminer nebo PhpMyAdmin takto můžeme potřebnou tabulku vytvořit tímto příkazem:
Dále již můžeme zrealizovat připojení, které bývá umístěno většinou v samostatném souboru. Např. můžeme vytvořit soubor db.php, který obsahuje následující kód: POZOR! - údaje pro připojení je třeba změnit podle vašeho připojení na databázový server.
Ujistěte se, že soubor, který vytváříte má kódování UTF-8. Tabulku v databázi můžeme vytvořit také tak, že se SQL příkazy vloží do PHP kódu. Tato varianta však vyžaduje nejprve vytvořit spojení s databází, tedy nejprve vytvořit soubor db.php. Následný soubor (můžeme ho nazvat např. vytvor-knihu.php) může vypadat např. takto:
V dalším kroku je vytvořen soubor, který umožňuje vepsat a následně poslat data do návštěvní knihy. Můžeme jej např. nazvat kniha.php
Poslední částí je externí soubor, který zabezpečuje vypsání dat z databáze s názvem vzkazy.php:
Funkční návštěvní knihu (bez jakéhokoliv CSS) najdete v tomto demu. Úkoly ke kapitole:
- Pokuste se vložit tuto návštěvní knihu do webové stránky s bootstrapem a doplňte jak formulář, tak výpisy vzkazů kaskádovými styly (můžete se inspirovat např. zde)
- Dále zkuste změnit tvar (podobu) datumu zápisu na den + přesný čas.
- Přejmenujte patřičný soubor a případné odkazy na něj tak, aby návštěvní kniha "startovala" z určitého adresáře, ve kterém jsou soubory návštěvní knihy uloženy
- Vytvořte ochranu proti robotům např. ve formě kontrolní otázky (tedy za pomoci podmínky...)
- Do formulářového prvku Vzkaz importujte jednoduchý editor (např. https://summernote.org/).
- Další větší úpravou je vytvoření stránkování (např. jako v tomto demu). Zdrojové kódy k tomuto demu - navstevni-kniha-bs.zip
Další položky, které lze ukládat jako součást zápisu do návštěvní knihy
IP adresa
Jako další informaci, kterou můžeme ukládat do databáze je např. IP adresa uživatele. To můžeme v PHP detekovat velmi jednoduše:
Toto zjištění IP adresy $_SERVER['REMOTE_ADDR'] je možné pouze v případě, že bylo PHP voláno z prohlížeče. V CLI režimu (například spuštění z Terminálu cronem) není IP adresa k dispozici. Do databáze lze pak tuto adresu uložit např. jako hodnotu varchar(39), kam se vejde jak IP verze 4. tak IP verze 6. Zjišťování, ukládání i následná práce s IP adresami je však značně obšírnější a přináší bohužel další problémy. Více např. v tomto článku - php.baraja.cz/ip-adresa.