79 lines
2.8 KiB
Markdown
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
|