Files
WebWizard/docs/prompts/step18.md
2026-06-12 12:54:10 +02:00

79 lines
2.8 KiB
Markdown

# 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/<id>/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