Jednoduchá návštěvní kniha v PHP se skládá z HTML šablony, PHP skriptu pro zpracování odeslaných zpráv a textového souboru pro ukládání zpráv. Následujte tyto kroky:
- Vytvořte PHP soubor s názvem
guestbook.php
:
Vytvořte textový soubor s názvem
guestbook.txt
a umístěte jej do stejného adresáře jakoguestbook.php
. Tento soubor bude sloužit k ukládání zpráv od návštěvníků.Nahrajte
guestbook.php
aguestbook.txt
na váš webový server s podporou PHP.Otevřete
guestbook.php
ve webovém prohlížeči.
Tato jednoduchá návštěvní kniha umožňuje uživatelům zadat své jméno a zprávu. Po odeslání formuláře se zpráva uloží do textového souboru guestbook.txt
. Poté skript načte všechny zprávy z tohoto souboru a zobrazí je pod formulářem.
Tento kód je velmi základní a neobsahuje žádné ošetření chyb, ověřování uživatele nebo zabezpečení proti útokům, jako je například CSRF. Před použitím ve skutečném prostředí byste měli přidat další funkce a zabezpečení. Některé doporučené vylepšení zahrnují:
Ověřování uživatele: Zvažte přidání ověřování uživatele, jako je například reCAPTCHA, aby bylo možné zabránit automatizovaným skriptům odesílat zprávy.
Ošetření chyb: Přidejte ošetření chyb pro čtení a zápis do souboru, abyste zajistili, že se zprávy správně uloží a načtou.
Ochrana proti CSRF útokům: Přidejte CSRF token do formuláře a zkontrolujte jeho platnost při zpracování odeslaných dat, abyste zabránili útokům CSRF.
Sanitace a validace vstupu: Ačkoli tento příklad používá
htmlspecialchars()
pro základní sanitaci vstupu, můžete zvážit použití robustnějších metod pro sanitaci a validaci vstupu, aby bylo možné zabránit XSS útokům a dalším bezpečnostním hrozbám.Zálohování a omezení velikosti souboru: Soubor
guestbook.txt
může rychle narůst, pokud se do něj přidává mnoho zpráv. Zvažte pravidelné zálohování tohoto souboru a nastavení limitu na jeho velikost. Po dosažení limitu můžete buď přestat přijímat nové zprávy, nebo začít ukládat zprávy do nového souboru.
Při implementaci těchto doporučení zajistíte, že vaše návštěvní kniha bude bezpečnější a lépe připravena na použití v reálném prostředí.