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

2.8 KiB

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:

{
  "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