# Krok 18 - Kontakt a Formuláre (SMTP & Lokálny mód) ## Kontext projektu Exportovaný web musí obsahovať funkčný kontaktný formulár. Podľa konfigurácie buď odosiela maily cez SMTP, alebo ukladá správy lokálne. ## Pred implementáciou si preštuduj - `docs/mvp.md` - Sekcia 9 (Kontaktny formular). - `docs/architecture.md` - Sekcia 11 (Kontaktny formular). ## Cieľ Implementovať backendové skripty pre formuláre, ktoré budú súčasťou exportu. ## Požadované zmeny 1. Vytvorenie šablóny `src/Templates/emailer.php`: - PHP skript, ktorý prijme POST dáta z formulára. - Odoslanie emailu cez SMTP (použitie PHP `mail()` alebo jednoduchá SMTP implementácia bez externých knižníc). - Ochrana proti spamu (honeypot, rate limit). 2. Vytvorenie šablóny `src/Templates/form-viewer.php`: - PHP skript pre lokálny mód. - Prihlasovacia obrazovka (overenie voči hashu z `config.json`). - Výpis prijatých správ zo zložky `messages/`. - Detail správy. 3. Úprava `Renderer.php`: - Ak je formulár zapnutý, skopíruj príslušný PHP skript do exportu. - Vygeneruj `config.json` v exporte s nastaveniami (SMTP údaje alebo hash hesla). - Zabezpeč vytvorenie prázdneho priečinka `messages/` a `.htaccess` na jeho ochranu. ## Implementačné pravidlá - `emailer.php` nesmie obsahovať SMTP heslo priamo v kóde (načíta ho z `config.json`). - `form-viewer.php` musí používať session pre prihlásenie. - Zabezpeč ochranu proti XSS pri výpise správ v lokálnom móde. ## Súbory ktoré je potrebné vytvoriť - `src/Templates/emailer.php` - `src/Templates/form-viewer.php` ## Súbory ktoré je potrebné upraviť - `src/Services/Renderer.php` ## API a dátové štruktúry Štruktúra správy v lokálnom móde: ```json { "id": "...", "timestamp": "...", "sender_name": "...", "sender_email": "...", "subject": "...", "message": "..." } ``` ## Frontend požiadavky - AJAX odosielanie formulára na webe s feedbackom (Úspech/Chyba). ## Backend požiadavky - PHP 8.2 na cieľovom hostingu. ## Testovací scenár 1. Vygeneruj web s lokálnym módom formulára. 2. Odošli správu cez formulár na webe. 3. Over, či vznikol súbor v `exports//messages/`. 4. Prihlás sa do `form-viewer.php` so zadaným heslom a over, či vidíš správu. 5. Zopakuj pre SMTP mód (over odoslanie mailu). ## Definition of Done - Kontaktný formulár je plne funkčný v oboch módoch. - Bezpečnosť dát a ochrana proti spamu je implementovaná. - Prehliadač správ funguje správne. ## Obmedzenia - Žiadne externé knižnice ako PHPMailer (ak je to možné, použiť natívne PHP riešenie pre MVP). ## Výstup - zoznam vytvorených súborov - zoznam upravených súborov - stručné zhrnutie vykonaných zmien - prípadné otvorené problémy